
全文地理詞作為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或美國政府的觀點。
歡迎通過拉動請求供款。請確保更改通過單元測試。任何錯誤和問題都可以在存儲庫的問題頁面上報告。