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

时间:2012-02-23 01:05:51

标签: algorithm search geolocation geonames disambiguation

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

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

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

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

您是否知道此字段中的任何重要文章,或Google地图,雅虎,bing甚至地理名称在制作中使用的算法?

1 个答案:

答案 0 :(得分:3)

@yura,这不是你想要的,但我认为任何聪明的算法都不能一直消除歧视“soma ca”之类的查询是指San Fran的Soma还是加拿大的Soma Lake 。问题不在于你的算法不够复杂;问题是查询“soma ca”中根本没有足够的信息。

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

即使一个人要手动解释你的查询,他们也不一定明白“soma ca”应该是指SF中的Soma。也许对你来说,像“ca”这样的2个字母的缩写“自然地”是指美国的国家而不是外国,但是对于这种选择没有任何根本的“正确”,也不能用纯逻辑推导出来。它是一个随意的,特定于域的ad-hoc规则,就像你提到的ad-hoc log(population)启发式一样。

一些可能的“解决方案”(除了设计能够读懂用户心灵的心灵感应计算机):

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