如何检查给定的字符串是否是有效的地理位置?
How do I check whether a given string is a valid geographical location or not?
我有一个字符串列表(名词短语),我想从中过滤掉所有有效的地理位置。其中大部分(不需要的位置名称)是国家或城市或州名称。这样做的方法是什么?是否有包含世界上所有国家、州、城市的开源查找 table?
示例所需输出:
TREC4:错误,维也纳:正确,部: false,IBM:false,蒙特利尔:true,新加坡: 真
不像这个post:Verify user input location string is a valid geographic location?
我有很多这样的字符串(约 70 万)所以 google 地理定位 API 可能不是我的选择。
您可以使用 Yahoo 的 geoplanet 数据,或 geonames.org 的 geonames 数据。
这是一个 link 到 geoplanet TSV 文件,其中包含世界上 500 万个地理位置:
https://developer.yahoo.com/geo/geoplanet/data/
此外,geoplanet 数据将为您提供地理位置的类型(城市、国家、郊区等)以及唯一 ID。
https://developer.yahoo.com/geo/geoplanet/guide/concepts.html
您可以将您的针字符串与此数据中存在的名称进行小写、净化(例如,删除特殊字符和其他异常)匹配。
如果您不想扫描完整文件,首先处理此数据以将其存储在快速查找数据库中,如 mongodb 或 redis 将是有益的。
我可以建议以下三个选项:
a) 使用炼金术 API: http://www.alchemyapi.com/
如果您尝试他们的演示,像法国、火奴鲁鲁这样的地方将实体类型指定为国家或城市
b) 使用 TAGME:http://tagme.di.unipi.it/
TAGME 将给定文本中的每个实体连接到相应的维基百科页面。抓取维基百科页面并检查信息框和过滤器
c) 使用 Wikipedia Miner:我找不到相关链接。然而,这也像 TAGME 一样工作。
建议您尝试所有三个,并对每个实例进行多数表决。
我有一个字符串列表(名词短语),我想从中过滤掉所有有效的地理位置。其中大部分(不需要的位置名称)是国家或城市或州名称。这样做的方法是什么?是否有包含世界上所有国家、州、城市的开源查找 table?
示例所需输出: TREC4:错误,维也纳:正确,部: false,IBM:false,蒙特利尔:true,新加坡: 真
不像这个post:Verify user input location string is a valid geographic location? 我有很多这样的字符串(约 70 万)所以 google 地理定位 API 可能不是我的选择。
您可以使用 Yahoo 的 geoplanet 数据,或 geonames.org 的 geonames 数据。 这是一个 link 到 geoplanet TSV 文件,其中包含世界上 500 万个地理位置: https://developer.yahoo.com/geo/geoplanet/data/
此外,geoplanet 数据将为您提供地理位置的类型(城市、国家、郊区等)以及唯一 ID。 https://developer.yahoo.com/geo/geoplanet/guide/concepts.html
您可以将您的针字符串与此数据中存在的名称进行小写、净化(例如,删除特殊字符和其他异常)匹配。 如果您不想扫描完整文件,首先处理此数据以将其存储在快速查找数据库中,如 mongodb 或 redis 将是有益的。
我可以建议以下三个选项:
a) 使用炼金术 API: http://www.alchemyapi.com/ 如果您尝试他们的演示,像法国、火奴鲁鲁这样的地方将实体类型指定为国家或城市
b) 使用 TAGME:http://tagme.di.unipi.it/ TAGME 将给定文本中的每个实体连接到相应的维基百科页面。抓取维基百科页面并检查信息框和过滤器
c) 使用 Wikipedia Miner:我找不到相关链接。然而,这也像 TAGME 一样工作。
建议您尝试所有三个,并对每个实例进行多数表决。