
Volltext Geoparsing als Python -Bibliothek. Extrahieren Sie die Ortsnamen aus einem englischsprachigen Text, lösen Sie sie an den richtigen Ort und geben Sie ihre Koordinaten und strukturierten geografischen Informationen zurück.
Mordecai ist bereit für ein Upgrade! Bitte nehmen Sie die Benutzerumfrage hier an, um zu gestalten, wie V3 aussehen wird.
>>> 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 benötigt einen laufenden Elasticsearch -Dienst mit Geonames. Anweisungen "Installation" unten.
pip install mordecai
Hinweis : Es wird dringend empfohlen, Mordecai in einer virtuellen Umgebung zu leiten. Die Bibliotheken, von denen Mordecai abhängig ist, sind nicht immer die neuesten Versionen, und die Verwendung einer virtuellen Umgebung verhindert, dass Bibliotheken herabgestuft oder in andere Probleme eingehen:
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
Sehen Sie sich die ES-Geonames für den Code an, mit dem dieser Index erstellt wird.
Um den Index zu aktualisieren, schalten Sie einfach den alten Container herunter, laden Sie den Index von S3 erneut herunter und starten Sie den Container mit dem neuen Index neu.
Wenn Sie diese Software in akademischer Arbeit verwenden, zitieren Sie bitte als
@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 nimmt unstrukturierte Text ein und gibt strukturierte geografische Informationen zurück, die daraus extrahiert wurden.
Es verwendet die benannte Entitätserkennung von Spacy, um Ortsnamen aus dem Text zu extrahieren.
Es verwendet den Geonames -Gazetteer in einem Elasticsearch -Index (mit einer benutzerdefinierten Logik), um die potenziellen Koordinaten extrahierter Ortsnamen zu finden.
Es verwendet neuronale Netzwerke, die in Keras implementiert und nach neuen, kommentierten englischsprachigen Daten ausgebildet sind, die mit Wunderkind bezeichnet werden, um das richtige Land zu schließen und Gazetteer-Einträge für jeden Ortennamen zu korrigieren.
Die Trainingsdaten für die beiden Modelle enthalten urheberrechtlich geschütztes Text und können daher nicht frei geteilt werden. Wenn Sie Mordecai auf nicht englischsprachige Text anwenden, müssen Daten in der Zielsprache und Umschulung beschriftet werden.
Wenn das Geoparser() -Modul instanziiert, können die folgenden Optionen geändert werden:
es_hosts : Liste der Hosts, bei denen der Geonames Elasticsearch -Dienst ausgeführt wird. Standardeinstellungen zu ['localhost'] , wo es ausgeführt wird, wenn Sie das oben beschriebene Standard -Docker -Setup verwenden.es_port : Auf welchen Port der Geonames Elasticsearch -Dienst wird ausgeführt? Standardeinstellungen zu 9200 , wo es das Docker -Setup hates_ssl : Ob Elasticsearch eine SSL -Verbindung benötigt. Standardmäßig False .es_auth : Optionale HTTP -AUTH -Parameter, die mit ES verwendet werden sollen. Wenn es zur Verfügung gestellt wird, sollte es sich um einen Zwei-Tupel von (user, password) handeln.country_confidence : Setzen Sie das Vertrauen des Landmodells, unter dem keine Geolokalisierung zurückgegeben wird. Wenn es wirklich niedrig ist, ist das Modell wahrscheinlich falsch und wird seltsame Ergebnisse zurückgeben. Standardeinstellung auf 0.6 .verbose : Alle im Country Picking -Modell verwendeten Funktionen geben? Standardmäßig False .threads : Ob Sie Threads verwenden möchten, um parallele Abfragen in die Elasticsearch -Datenbank vorzunehmen. Standardmäßig zu True , was eine ~ 6x -Beschleunigung ergibt. geoparse ist der primäre Endpunkt und der einzige, den die meisten Benutzer benötigen. Andere, meist interne Methoden können in einigen Fällen nützlich sein:
lookup_city nimmt einen Stadtnamen, ein Land und (optional) adm1/staatlich/governorate an und sucht nach der Stadt.infer_country nehmen ein Dokument und versuchen, jeweils das wahrscheinlichste Land zu schließen.query_geonames und query_geonames_country können zum Durchführen einer Suche über Geonames in Elasticsearch verwendet werden_feature -Präfix sind interne Methoden zur Berechnung der Länderauswahlfunktionen aus Text. batch_geoparse nimmt eine Liste von Dokumenten ein und verwendet die nlp.pipe -Methode von Spacy, um sie im NLP -Schritt effizienter zu verarbeiten.
Erweiterte Benutzer in großen Maschinen können den Parameter lru_cache von 250 auf 1000 erhöhen. Dies wird mehr Speicher verwendet, erhöht jedoch die Analysegeschwindigkeit.
Mordecai umfasst Unit -Tests. Um die Tests auszuführen, cd in das Verzeichnis mordecai und rennen:
pytest
Die Tests erfordern den Zugriff auf einen laufenden elastischen/Geonames -Service, um sie abzuschließen. Die Tests scheitern derzeit bei Travisci mit einem ungeklärten Segfault, laufen jedoch lokal gut. Mordecai wurde nur mit Python 3 getestet.
Ein früherer Verion dieser Software wurde von Caerus Associates an die Open Event Data Alliance gespendet. Siehe Veröffentlichungen oder die Legacy-Docker-Filiale für die Produktionsversionen 2015-2016 und 2016-2017 von Mordecai.
Diese Arbeit wurde zum Teil vom XDATA-Programm von DARPA, dem Forschungslabor der US-Armee und dem Forschungsbüro der US-Armee durch die Minerva-Initiative gemäß Grant Number W911NF-13-0332 finanziert, und die National Science Foundation gemäß der Vergabe-Nummer SBE-SMA-1539302. Alle Meinungen, Ergebnisse und Schlussfolgerungen oder Empfehlungen, die in diesem Material geäußert werden, sind die der Autoren und spiegeln nicht unbedingt die Ansichten von DARPA, ARO, Minerva, NSF oder der US -Regierung wider.
Beiträge über Pull -Anfragen sind willkommen. Bitte stellen Sie sicher, dass Änderungen die Unit -Tests bestehen. Alle Fehler und Probleme können auf der Seite der Repo -Probleme gemeldet werden.