对地理名称数据进行位置消歧的最佳方法是什么?

yur*_*ura 5 algorithm search geolocation geonames disambiguation

对地理名称数据进行位置消歧的最佳方法是什么?

有一些用于地理名称搜索的评分算法,但他们没有开源它,我不确定它们是非常复杂的.(即soma, ca它返回Soma lake in Canada哪些甚至没有维基百科文章,而不是非常受欢迎Soma Neirbohood in san francisco)

我在谷歌学者中也发现了一些作品,但它们看起来非常浅薄,与我的启发式相似,比如得分(log(population) + 1000*hasWikipedia(article)+ isCity100+isCapital(10)).

我在旅行文章中的域名,所以我的评分功能应该提供最可能的旅游景点(城市,名胜古迹(迪士尼乐园,收藏馆,大本钟)).

你知道这个领域的任何重要文章,还是谷歌地图,雅虎,冰甚至地名的生产算法?

Ale*_*x D 3

@yura,这不是你要找的,但我认为没有任何聪明的算法能够始终如一地消除诸如“soma ca”之类的查询是指旧金山的 Soma 还是加拿大的 Soma Lake 的歧义。问题不在于你的算法不够复杂;而在于你的算法不够复杂。问题是查询“soma ca”中根本没有足够的信息。

我不知道如何清楚地表达它,但是这里发生了信息论的事情。这就像随机数据无法无损压缩一样:输入中没有足够的信息来计算所需的输出。

即使人类手动解释您的查询,他们也不一定理解“soma ca”应该是 SF 中的 Soma。也许对你来说,像“ca”这样的两个字母的缩写“自然地”指的是美国的一个州而不是外国,但这个选择从根本上来说没有什么“正确”的,而且它不能用纯粹的逻辑推导出来。log(population)这是一个任意的、特定于领域的临时规则,就像您提到的临时启发式一样。

一些可能的“解决方案”(除了设计一台可以读取用户想法的心灵感应计算机之外):

  1. 为用户提供每个查询的可能匹配列表。跟踪他们选择的查询,当其他用户稍后输入相同的查询时,按受欢迎程度对结果进行排序。
  2. 或者,一旦收集了有关查询结果流行程度的大量数据,您甚至可以使用机器学习算法挖掘数据,并从中得出更好的启发式方法。
  3. 或者,在将应用程序投入生产使用之前,您可以首先编译一组虚假查询,以及您认为算法应该为每个此类查询生成的结果。然后使用你的机器学习算法。
  4. 编译大量虚假查询和所需的响应,或者从真实用户的选择中获取数据,并使用该数据来衡量手动设计和编码的排名启发式的准确性。不断发明新的启发式方法,直到找到一种可以在测试数据集上实现高精度的方法。