
全文地理词作为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需要在其中使用GeOnames的运行Elasticsearch服务。有关说明,请参见下面的“安装”。
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的命名实体识别来从文本中提取placeNames。
它在弹性搜索索引中使用Geonames Gazetteer(带有自定义逻辑)来找到提取的位置名称的潜在坐标。
它使用在Keras实施的神经网络,并接受了带有Prodigy标记的新注释的英语数据的培训,以推断出每个placeName的正确国家和正确的Gazetteer条目。
这两个模型的培训数据包括受版权保护的文本,因此无法自由共享。将Mordecai应用于非英语语言文本将需要用目标语言和再培训标记数据。
实例化Geoparser()模块时,可以更改以下选项:
es_hosts :GEONAMES ELASTICSERACH服务正在运行的主机列表。默认为['localhost'] ,如果您使用上述默认的Docker设置,则可以运行它。es_port :GeOnames Elasticsearch Service正在运行的哪个端口。默认为9200 ,这是Docker设置的位置es_ssl :Elasticsearch是否需要SSL连接。默认为False 。es_auth :可选的HTTP auth参数可与ES一起使用。如果提供,它应该是(user, password)的两核。country_confidence :设置国家模型的信心,在此期间不会返回地理位置。如果确实很低,则模型可能是错误的,并且会返回奇怪的结果。默认为0.6 。verbose :返回国家采摘模型中使用的所有功能?默认为False 。threads :是否要使用线程对Elasticsearch数据库进行并行查询。默认为True ,它给出了约6倍的加速。 geoparse是主要终点,也是大多数用户需要的唯一终点。在某些情况下,其他主要是内部方法可能很有用:
lookup_city采用城市名称,国家和(选择)ADM1/State/Converate,并对城市进行基于规则的查找。infer_country获取文件,并试图推断每个文件最可能的国家。query_geonames和query_geonames_country可用于通过eLasticsearch中的GeOnames执行搜索_feature前缀的方法是用于计算文本中选择国家选择功能的内部方法。 batch_geoparse获取文档列表,并使用Spacy的nlp.pipe方法在NLP步骤中更有效地处理它们。
大型机器上的高级用户可以将lru_cache参数从250增加到1000。这将使用更多的内存,但会提高解析速度。
Mordecai包括单位测试。要运行测试, cd参考mordecai目录并运行:
pytest
测试需要访问运行的Elastic/Geonames服务才能完成。这些测试目前在Travisci上以无法解释的Segfault失败,但在本地运行良好。 Mordecai仅使用Python 3进行了测试。
CAERUS Associates捐赠了此软件的较早范围。请参阅2015 - 2016年的发行版或遗产分支机构和2016-2017 Mordecai的生产版本。
这项工作是由DARPA的XDATA计划,美国陆军研究实验室和美国陆军研究办公室通过Minerva Initiative根据赠款编号W911NF-13-0332以及国家科学基金会根据奖励编号SBE-SMA-SMA-1539302资助的。本材料中表达的任何意见,发现和结论或建议都是作者的意见,不一定反映了DARPA,ARO,MINERVA,NSF或美国政府的观点。
欢迎通过拉动请求供款。请确保更改通过单元测试。任何错误和问题都可以在存储库的问题页面上报告。