
Полный текстовый геопаркс как библиотека Python. Извлеките названия места из частиц на английском языке, разрешите их в правильное место и верните их координаты и структурированную географическую информацию.
Mordecai готов к обновлению! Пожалуйста, возьмите здесь опрос пользователя, чтобы помочь сформировать то, как будет выглядеть 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 требует управляющего сервиса Elasticsearch с Geonames в нем. См. «Установка» ниже для инструкций.
pip install mordecai
Примечание : настоятельно рекомендуется управлять Mordecai в виртуальной среде. Библиотеки, от которых зависит Mordecai, не всегда являются самыми последними версиями, и использование виртуальной среды не позволяет библиотекам понижать или сталкиваться с другими проблемами:
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
См. ES-Geonames для кода, используемого для создания этого индекса.
Чтобы обновить индекс, просто выключите старый контейнер, повторно загрузите индекс с S3 и перезапустите контейнер с новым индексом.
Если вы используете это программное обеспечение в академической работе, пожалуйста, укажите как
@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 принимает неструктурированный текст и возвращает структурированную географическую информацию, извлеченную из него.
Он использует распознавание Spacy's Antity для извлечения именов классов из текста.
Он использует Geonames Gazetteer в индексе Elasticsearch (с некоторой пользовательской логикой), чтобы найти потенциальные координаты извлеченных имен мест.
Он использует нейронные сети, внедренные в керасах и обучаемые новым аннотированным англоязычным данным, помеченным в Prodigy, чтобы вывести правильную страну и правильные записи Gazetteer для каждого имени Placeaname.
Данные обучения для двух моделей включают в себя авторские права, поэтому нельзя обмениваться свободно. Применение Mordecai к неанглийскому языку текст потребует маркировки данных на целевом языке и переподготовке.
При создании модуля Geoparser() можно изменить следующие параметры:
es_hosts : Список хостов, где работает служба Geonames Elasticsearch. По умолчанию ['localhost'] , где он работает, если вы используете настройку Docker Docker по умолчанию, описанную выше.es_port : какой порт работает служба Geonames Elasticsearch. По умолчанию до 9200 , где у установки Docker есть ееes_ssl : требует ли Elasticsearch подключение SSL. По умолчанию False .es_auth : необязательные параметры HTTP AUTH для использования с ES. Если предоставлено, это должен быть двухверенный (user, password) .country_confidence : установите доверие к модели страны, ниже которой геолокация не будет возвращена. Если это действительно низок, модель, вероятно, ошибается и вернет странные результаты. По умолчанию до 0.6 .verbose : вернуть все функции, используемые в модели выбора страны? По умолчанию False .threads : использовать ли потоки для проведения параллельных запросов в базу данных Elasticsearch. По умолчанию к True , что дает ~ 6x ускорение. geoparse является основной конечной точкой и единственной, которая понадобится большинству пользователей. Другие, в основном внутренние, методы могут быть полезны в некоторых случаях:
lookup_city принимает название города, страну и (необязательно) ADM1/штат/Гормарь и выполняет поиск в городе.infer_country возьмите документ и пытается сделать вывод наиболее вероятной страны для каждой.query_geonames и query_geonames_country можно использовать для выполнения поиска по Geonames в Elasticsearch_feature являются внутренними методами расчета функций сбора страны из текста. batch_geoparse снимает список документов и использует метод Spacy nlp.pipe , чтобы более эффективно обрабатывать их на шаге NLP.
Домашние пользователи на крупных машинах могут увеличить параметр lru_cache с 250 до 1000. Это будет использовать больше памяти, но увеличит скорость анализа.
Mordecai включает в себя модульные тесты. Чтобы запустить тесты, cd в каталог mordecai и запустите:
pytest
Тесты требуют доступа к работающему сервису Elastic/Geonames для завершения. Тесты в настоящее время терпят неудачу в Трэвиска с необъяснимым Segfault, но работают локально. Mordecai был протестирован только с Python 3.
Более ранняя версия этого программного обеспечения была пожертвована в открытый альянс данных о событиях Caerus Associates. См. Выпуски или филиал Legacy-Docker для 2015-2016 годов и производственных версий Mordecai 2016-2017.
Эта работа была частично профинансирована программой XDATA DARPA, исследовательской лабораторией армии США и исследовательским управлением армии США в рамках инициативы Minerva под грантом W911NF-13-0332 и Национальным научным фондом под номером премии SBE-SMA-1539302. Любые мнения, выводы и выводы или рекомендации, выраженные в этом материале, являются мнениями авторов и не обязательно отражают взгляды DARPA, ARO, Minerva, NSF или правительства США.
Взносы с помощью запросов на привлечение приветствуются. Пожалуйста, убедитесь, что изменения проходят модульные тесты. О любых ошибках и проблемах можно сообщить на странице проблем репо.