任何用于匹配名称的消歧工具/ API?

时间:2012-06-21 04:20:00

标签: java algorithm machine-learning

鉴于两个名称在表示方式上有变化,是否有任何API /工具/算法可以给出名称相似/不同的分数?

Tim O'Reilly是一个输入,T Reilly是另一个输入。这两者之间的分数应该小于Tim O'Reilly和Tim Reilly之间的分数。

我正在寻找这样的分数计算机制。算法应该能够处理的几个挑战是:
1)当名称作为输入时,可以交换名字和姓氏 2)可能有名字的首字母代替 3)其中一个名称可能没有姓氏,而另一个名字可能同时具有名字和姓氏。

......等等,这是名称表示中常见的错误。

2 个答案:

答案 0 :(得分:1)

两个库包括一些名称相似性的距离分数:

没有一种方法可以涵盖你提到的情况,但1)和3)特征和集相似性度量(例如jaccard,tfidf)工作 - 对于2)除了soundex(如@ houman001所述)你可以考虑levensthein或哈罗。试验一下您的用例和组合的一些示例。

答案 1 :(得分:0)

对于“可以给出名称相似/不同的分数的API /工具/算法”的一部分,我可以给你一个提示:

搜索引擎使用了一些启发式库,但也有一种称为soundex的编码,用于计算单词中的数字。具有相同soundex代码的单词是略有不同的单词。还有some Java实现。

关于你稍后提到的有关名称的观点,请查找联系人管理库/实用程序并进行编码,因为这些要求非常具体。