通过任意文本正文确定地理位置

时间:2013-06-30 01:52:33

标签: machine-learning nlp

我正在研究一个我不确定如何接近的项目。问题可归纳如下:

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

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

我很好奇处理类似问题的最佳方法是什么,也许是根据NLP或ML框架(Python或Java)提出的具体建议?

4 个答案:

答案 0 :(得分:7)

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

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

有很多开源软件包可以做#1。 Stanford Core NLPOpenNLP

有一些包可以做#1和#2。 CLAVIN可能是目前唯一可以使用的开源应用程序。 Yahoo Placemaker花钱但可以付钱。

没有一个包可以做#3。有一个名为TEXTGROUNDER的新项目正在执行一个名为“文档地理位置”的项目,但是当代码可用时,它不会设置为在您自己的输入文本上运行。我只建议你看看它,如果你想要开始或做一个项目试图做这样的事情。

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

答案 1 :(得分:2)

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

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

这是源代码:

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

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

答案 2 :(得分:2)

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

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

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

答案 3 :(得分:0)

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

标记的训练集:

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

培训分类模型:

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

预测:

经过训练,给定一个段落或一段文本,经过训练的模型能够找到一个基于样本中使用的单词的region_id。

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

使用文字阅读地理位置my paperthis onehttp://www.aclweb.org/anthology/N15-1153

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

此外,我写了a tool,名为 Pigeo ,它正是这样做的,并带有预训练模型。 除了这些工作之外,还有很多关于基于文本的地理定位的其他研究论文,你可以找到。