如何检查给定字符串是否是有效的地理位置?

时间:2016-01-08 17:37:23

标签: geolocation nlp gis text-mining data-science

我有一个字符串列表(名词短语),我想从中筛选出所有有效的地理位置。其中大多数(不需要的位置名称)是国家或城市或州名称。怎么办呢?是否有可用的开源查找表,其中包含世界上所有国家,州/城市?

示例所需输出: TREC4 :false, Vienna true :false, IBM :false ,蒙特利尔 true 新加坡 true

与此帖不同:Verify user input location string is a valid geographic location? 我有很多像这样的字符串(约70万),所以谷歌地理位置API 可能不适合我。

2 个答案:

答案 0 :(得分:3)

您可以使用Yahoo的geoplanet数据,或geonames.org的geonames数据。 以下是包含世界上500万个地理位置的geoplanet TSV文件的链接: https://developer.yahoo.com/geo/geoplanet/data/

此外,geoplanet数据将为您提供地理位置的类型(城市,国家,郊区等)以及唯一ID。 https://developer.yahoo.com/geo/geoplanet/guide/concepts.html

您可以对针头字符串与此数据中的名称进行小写,消毒(例如删除特殊字符和其他异常)匹配。 如果您不想要完整的文件扫描,首先处理此数据以将其存储在快速查找数据库(如mongodb或redis)中将是有益的。

答案 1 :(得分:1)

我可以建议以下三个选项:

a)使用Alchemy API:http://www.alchemyapi.com/ 如果您尝试他们的演示,像法国,檀香山这样的地方会将实体类型指定为国家或城市

b)使用TAGME:http://tagme.di.unipi.it/ TAGME将给定文本中的每个实体连接到相应的维基百科页面。抓取维基百科页面并检查信息框和过滤器

c)使用Wikipedia Miner:我无法找到相关链接。但是,这也像TAGME一样。

建议您尝试所有三个并为每个实例进行多数表决。