我有一个字符串(名词短语)列表,我想从中过滤掉所有有效的地理位置。其中大多数(不需要的位置名称)是国家或城市或州名称。有什么方法可以做到这一点?是否有包含世界上所有国家、州、城市的开源查找表?
所需输出示例: TREC4:假,维也纳:真,Ministry:假,IBM:假,蒙特利尔:true,新加坡:true
与这篇文章不同:Verify user input location string is a valid geographic location? 我有大量这样的字符串(约 70 万),因此 google geolocation API 可能不适合我。
最佳答案
您可以使用 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)中将会很有帮助。
关于geolocation - 如何检查给定字符串是否是有效的地理位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34682869/