mordecai, 作为 python 库的完整文本 geoparsing

分享于 

8分钟阅读

GitHub

  繁體 雙語
Custom-built full text geocoding
  • 源代码名称:mordecai
  • 源代码网址:http://www.github.com/openeventdata/mordecai
  • mordecai源代码文档
  • mordecai源代码下载
  • Git URL:
    git://www.github.com/openeventdata/mordecai.git
    Git Clone代码到本地:
    git clone http://www.github.com/openeventdata/mordecai
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/openeventdata/mordecai
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    

    作为 python 库的完整文本 geoparsing。 从一段文本中提取地名,将它们解析到正确的位置,并返回它的坐标和结构化地理信息。

    示例用法

    
    >>> 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服务的服务。 有关说明,请参阅下面的"安装"。

    安装和要求

    • Mordecai位于PyPI上,可以用pip安装 python 3:
    
    pip install mordecai
    
    
    
    
    • 然后,你应该下载所需的spaCy NLP模型:
    
    python -m spacy download en_core_web_lg
    
    
    
    
    • 为了工作,更改器需要访问Elasticsearch中运行的In地图。 设置它最简单的方法是运行以下命令( 你必须首先安装 Docker )。
    
    docker pull elasticsearch:5.5.2
    
    
    wget https://s3.amazonaws.com/ahalterman-geo/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
    
    
    
    

    查看的geonames 用于生成这里索引的代码。

    :它是如何工作的

    Mordecai采用非结构化文本并返回从它提取的结构化地理信息。

    这两种模型的训练数据包括版权文本,所以不能自由共享,但如果你有兴趣,请与我联系。

    API

    在实例化 Geoparser() MODULE 时,可以更改以下选项:

    • es_ip: 运行 Geonames Elasticsearch服务的位置。 默认为 localhost,如果使用上面描述的默认 Docker 设置,它将运行在这里。
    • es_port: Geonames Elasticsearch服务在哪个端口上运行。 默认为 9200,这是 Docker 安装的位置
    • country_confidence: 设置国家模型置信度,不返回地理位置。 如果它很低,可能是模型错误,会返回奇怪的结果。 默认为 0.6
    • verbose: 返回国家精选模型中使用的所有特性? 默认为 False
    • n_threads: 在 batch_geoparse 方法中使用,以将spacy流程和 geoparsenlp.pipe 数量设置为整体。

    geoparse 是主要端点,并且大多数用户都需要它。 其他方法主要是内部的,但在某些情况下可能是直接有用的:

    • infer_country 获取一个文档,并试图为每个可能的国家推断出。
    • query_geonamesquery_geonames_country 可以用于在Elasticsearch中执行对Geonames的搜索
    • 使用 _feature 前缀的方法是计算从文本中提取特征的内部方法。

    batch_geoparse 是一个实验端,它接受文档列表,批处理过程,并返回相应的列表列表。 它目前的速度是 geoparse的两倍。

    测试

    Mordecai包括几个单元测试。 要运行测试,cd 进入 mordecai 目录并运行:

     
    pytest
    
    
    
     

    测试需要访问正在运行的弹性/geonames服务才能完成。 测试目前在TravisCI上失败,错误的错误消息,但在本地运行良好。 Mordecai仅在 python 3测试过。

    确认

    这个软件的早期verion被Caerus关联捐赠给了开放事件数据联盟。 请参见 Releases或者的和 2016生产版本的遗留docker分支 branch。

    这项工作由国防部 XDATA XDATA和 grant number的XDATA计划和award号的美国 陆军研究 Office 资助,并在获奖编号SBE-SMA-1539302下的国家科学基金会。 在这种材料中所表达的任何意见。发现。结论或者建议都是作者的观点,不一定反映 DARPA。ARO。Minerva或者 美国 政府的观点。

    引用

    如果你使用 Mordecai,请发送便笺。 它总是有趣的是听到人们在做什么以及它是否正在做他们想要的事情。

    如果你在学术工作中使用这里软件,请将

    Andrew Halterman,( 2017 )。更改:全文Geoparsing和事件地理编码。 开源软件 Journal,2 ( 9 ),91,doi: 10,21105/joss。00091

    
    @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}
    
    
    }
    
    
    
    

    欢迎通过拉请求进行捐赠。 请确保更改通过单元测试。 任何 Bug 和问题都可以在问题页面的报告。


    文本  TEX  GEO  
    相关文章