7

我正在做一个我不确定如何处理的项目。问题可以总结如下:

  • 给定任意文本体(有点像报告),确定报告的每个部分所指的地理位置。

地理位置范围从州到县(都在美国境内),因此它们的数量是有限的,但每份报告通常都包含对多个位置的引用。例如,报告的前 5 段可能是关于整个州的,然后接下来的 5 段可能是关于该州内的各个县,或类似的东西。

我很好奇解决此类问题的最佳方法是什么,也许在 NLP 或 ML 框架(Python 或 Java)方面有具体建议?

4

4 回答 4

7

我实际上可以在这里提供一点帮助(我的研究是在地名解析领域)。

如果我对您的理解正确,您正在寻找一种方法来 (1) 在文本中找到地名,(2) 消除地名的地理参考,以及 (3) 在空间上定位整个句子或段落。

有很多开源软件包可以做到 #1。斯坦福核心自然语言处理

有一些包可以做#1 和#2。CLAVIN可能是目前唯一可以使用的开源应用程序。雅虎 Placemaker需要花钱,但可以做到。

真的没有一个包可以做#3。有一个名为TEXTGROUNDER的新项目正在做一些名为“文档地理定位”的事情,但是虽然代码可用,但它并没有设置为在您自己的输入文本上运行。如果您渴望开始或为尝试做类似事情的项目做出贡献,我只建议您查看它。

这三个任务仍然是正在进行的研究的一部分,并且根据源文本的细节可能会变得非常复杂。您没有提供有关您的文本的详细信息,但希望这些信息可以帮助您。

于 2013-07-01T19:27:00.297 回答
2

使用 OpenNLP 或 GATE 等来识别提到的地理位置是相当简单的。主要的问题是之后,当您必须消除同名地点的歧义时。例如,在美国有 29 个地方名为“布里斯托尔”。哪一个是正确的?

您可以使用多种方法来消除歧义。一个简单的方法是收集文本中提到的所有位置的列表,获取它们的潜在经度/纬度,然后找到距离总和最小的集合。

我见过人们部署的一个更好的解决方案是从维基百科获取所有引用地点的文章,将它们放入数据库中以获取像 Lucene 这样的文本,然后使用您的文本作为查询,通过测量一些相似性分数来找到候选者之间最有希望的位置. 这个想法是,在文章中除了“布里斯托尔”这个词之外,还会提到一个河流名称、一个人或类似的东西。

于 2014-01-11T00:36:47.977 回答
2

老问题,但其他人知道 Apache OpenNLP 有一个名为 GeoEntityLinker 的插件并获取文档文本和句子,提取实体(地名),在 USGS 和 GeoNames gazateers(Lucene 索引)上执行查找,解析(或尝试至少)以几种方式的toppopnymns,并返回与传入的文档中每个句子相关的评分gazateer条目。如果一切顺利,它将与OpenNLP 1.6一起发布......如果有的话,没有太多文档观点。

这是 OpenNLP Jira 中的票证: https ://issues.apache.org/jira/i#browse/OPENNLP-579 。

这是源代码:

http://svn.apache.org/viewvc/opennlp/addons/geoentitylinker-addon/

仅供参考:我是主要的提交者。

于 2014-01-10T21:50:57.470 回答
0

为了完成任务,您需要一个带标签的训练集。然后,您在该训练集上训练一个分类模型,并根据该模型预测新文本的位置。您可以在编写在 SCIKIT-LEARN 之上的示例代码中了解它们如何协同工作:http: //scikit-learn.org/stable/tutorial/text_analytics/working_with_text_data.html

标记的训练集:

您可以在训练集上训练分类器,其中训练中的每个样本都是(段落,region_id)。region_id 可以是国家、地区或城市的 id。

训练分类模型:

您为每个样本构建一个词袋(例如 unigrams)模型,并在标记的训练集上训练一个分类器(例如带有 L1 正则化的逻辑回归)。您可以使用任何工具,但我建议在 Python 中使用 SCIKIT-LEARN,它使用起来非常简单高效。

预言:

训练后,给定一段或一段文本,训练后的模型能够根据样本中使用的单词为其找到一个 region_id。

请记住在开发集上调整正则化参数以获得良好的结果(以防止过度拟合训练样本)。

阅读我的论文这篇关于地理定位的论文: http ://www.aclweb.org/anthology/N15-1153

和相应的海报: http ://www.slideshare.net/AfshinRahimi2/geolocation-twittertextnetwork-48968497

我还编写了一个名为Pigeo的工具,它完全可以做到这一点,并带有一个预训练的模型。除了这些作品之外,您还可以找到许多其他关于基于文本的地理定位的研究论文。

于 2015-06-13T01:13:32.693 回答