1

给定两个名称的表示方式有所不同,是否有任何 API/工具/算法可以对名称的相似/不同程度进行评分?

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

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

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

4

2 回答 2

1

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

除了 1) 和 3) 特征和集合相似性度量(例如 jaccard、tfidf)工作之外,没有一种方法可以涵盖您提到的情况——对于 2)除了 soundex(如 @houman001 所述),您可以考虑使用 levensthein 或 jaro。尝试一些您的用例示例并结合起来。

于 2012-06-22T11:58:51.917 回答
0

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

搜索引擎使用了一些启发式库,但也有一种称为soundex的编码,可以从单词中计算出一个数字。具有相同 soundex 代码的单词是那些略有不同的单词。周围也有一些Java 实现。

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

于 2012-06-21T04:40:37.767 回答