
Texto completo Geoparsing como una biblioteca de Python. Extraiga los nombres de los lugares de una pieza de texto en inglés, resuélvalos al lugar correcto y devuelva sus coordenadas e información geográfica estructurada.
¡Mordecai está listo para una actualización! Tome la encuesta de usuarios aquí para ayudar a dar forma a cómo se verá V3.
>>> from mordecai import Geoparser
>>> geo = Geoparser()
>>> geo.geoparse("I traveled from Oxford to Ottawa.")
[{'country_conf': 0.96474487,
'country_predicted': 'GBR',
'geo': {'admin1': 'England',
'country_code3': 'GBR',
'feature_class': 'P',
'feature_code': 'PPLA2',
'geonameid': '2640729',
'lat': '51.75222',
'lon': '-1.25596',
'place_name': 'Oxford'},
'spans': [{'end': 22, 'start': 16}],
'word': 'Oxford'},
{'country_conf': 0.83302397,
'country_predicted': 'CAN',
'geo': {'admin1': 'Ontario',
'country_code3': 'CAN',
'feature_class': 'P',
'feature_code': 'PPLC',
'geonameid': '6094817',
'lat': '45.41117',
'lon': '-75.69812',
'place_name': 'Ottawa'},
'spans': [{'end': 32, 'start': 26}],
'word': 'Ottawa'}]
Mordecai requiere un servicio de ElasticseSearch con Geonames en él. Consulte "Instalación" a continuación para obtener instrucciones.
pip install mordecai
Nota : Se recomienda encarecidamente que ejecute Mordecai en un entorno virtual. Las bibliotecas de las que depende de Mordecai no siempre son las versiones más recientes y el uso de un entorno virtual evita que las bibliotecas sean degradadas o se encuentren en otros problemas:
python -m venv mordecai-env
source mordecai-env/bin/activate
pip install mordecai
python -m spacy download en_core_web_lg
docker pull elasticsearch:5.5.2
wget https://andrewhalterman.com/files/geonames_index.tar.gz --output-file=wget_log.txt
tar -xzf geonames_index.tar.gz
docker run -d -p 127.0.0.1:9200:9200 -v $(pwd)/geonames_index/:/usr/share/elasticsearch/data elasticsearch:5.5.2
Consulte los ES-Geonames para el código utilizado para producir este índice.
Para actualizar el índice, simplemente apague el contenedor anterior, vuelva a descargar el índice de S3 y reinicie el contenedor con el nuevo índice.
Si usa este software en trabajo académico, cite como
@article{halterman2017mordecai,
title={Mordecai: Full Text Geoparsing and Event Geocoding},
author={Halterman, Andrew},
journal={The Journal of Open Source Software},
volume={2},
number={9},
year={2017},
doi={10.21105/joss.00091}
}
Mordecai toma texto no estructurado y devuelve información geográfica estructurada extraída de él.
Utiliza el reconocimiento de entidad nombrado de Spacy para extraer nombres de placenos del texto.
Utiliza el Gazetteer Geonames en un índice Elasticsearch (con alguna lógica personalizada) para encontrar las posibles coordenadas de los nombres de lugares extraídos.
Utiliza redes neuronales implementadas en Keras y capacitadas en nuevos datos anotados en inglés etiquetados con prodigio para inferir el país correcto y las entradas correctas de geográficas para cada nombre de lugar.
Los datos de capacitación para los dos modelos incluyen texto con derechos de autor, por lo que no se pueden compartir libremente. La aplicación de Mordecai al texto del idioma no inglés requeriría datos de etiquetado en el lenguaje de destino y la reentrenamiento.
Al instanciar el módulo Geoparser() , se pueden cambiar las siguientes opciones:
es_hosts : Lista de hosts donde se está ejecutando el servicio Geonames Elasticsearch. El valor predeterminado es ['localhost'] , que es donde se ejecuta si está utilizando la configuración de Docker predeterminada descrita anteriormente.es_port : en qué puerto se está ejecutando el servicio de elastices de Geonames. El valor predeterminado es 9200 , que es donde tiene la configuración de Dockeres_ssl : si ElasticSearch requiere una conexión SSL. El valor predeterminado es False .es_auth : parámetros opcionales de autenticación HTTP para usar con ES. Si se proporciona, debe ser un dos tupla de (user, password) .country_confidence : establezca la confianza del modelo de país debajo de la cual no se devolverá la geolocalización. Si es realmente bajo, el modelo probablemente esté mal y devolverá resultados extraños. El valor predeterminado a 0.6 .verbose : ¿Devolver todas las características utilizadas en el modelo de selección de país? El valor predeterminado es False .threads : si usar hilos para hacer consultas paralelas a la base de datos Elasticsearch. El valor predeterminado es True , que da una aceleración de ~ 6x. geoparse es el punto final principal y el único que la mayoría de los usuarios necesitarán. Otros métodos, en su mayoría internos, pueden ser útiles en algunos casos:
lookup_city toma un nombre de la ciudad, país y (opcionalmente) ADM1/estado/gobernación y hace una búsqueda basada en reglas para la ciudad.infer_country tome un documento e intenta inferir el país más probable para cada uno.query_geonames Y query_geonames_country se puede utilizar para realizar una búsqueda sobre Geonames en ElasticSearch_feature son métodos internos para calcular las características de selección del país del texto. batch_geoparse toma una lista de documentos y utiliza el método nlp.pipe de Spacy para procesarlos de manera más eficiente en el paso NLP.
Los usuarios avanzados en máquinas grandes pueden aumentar el parámetro lru_cache de 250 a 1000. Esto usará más memoria pero aumentará la velocidad de análisis.
Mordecai incluye pruebas unitarias. Para ejecutar las pruebas, cd en el directorio mordecai y ejecute:
pytest
Las pruebas requieren acceso a un servicio elástico/geonames para completar. Las pruebas están fallando actualmente en Travisci con un Segfault inexplicable pero funcionan bien localmente. Mordecai solo ha sido probado con Python 3.
Caerus Associates donó una versión anterior de este software a la Alianza de datos de eventos abiertos. Ver lanzamientos o la sucursal de Legacy-Docker para el 2015-2016 y las versiones de producción 2016-2017 de Mordecai.
Este trabajo fue financiado en parte por el programa XData de DARPA, el Laboratorio de Investigación del Ejército de EE. UU. Y la Oficina de Investigación del Ejército de los Estados Unidos a través de la Iniciativa Minerva bajo el número de subvención W911NF-13-0332 y la Fundación Nacional de Ciencias bajo el número de premios SBE-SMA-1539302. Cualquier opinión, hallazgos y conclusiones o recomendaciones expresadas en este material son las de los autores y no reflejan necesariamente las opiniones de Darpa, Aro, Minerva, NSF o el gobierno de los Estados Unidos.
Las contribuciones a través de solicitudes de extracción son bienvenidas. Asegúrese de que los cambios pasen las pruebas unitarias. Cualquier error y problema se puede informar en la página de problemas del repositorio.