我如何使用度量标准比较人名的相似性



我特别在攻击一个函数,以允许人名称的拼写错误和别名。我做了一些研究&发现字符串度量和语音库也有很多算法。

我尝试了一些,其中所有这些Jaro Winkler都给出了一些不错的结果。

compareStrings("elon musk","elon musk"))    --> 1.0 
compareStrings("elonmusk","elon musk"))     --> 0.98
compareStrings("elon mush","elon musk"))    --> 0.99
compareStrings("eln msuk","elon musk"))     --> 0.94
compareStrings("elon","elon musk"))         --> 0.89
compareStrings("musk","elon musk"))         --> 0.0  //This is bad, but can fix that.
compareStrings("mr elon musk","elon musk")) --> 0.81

以上是来自 Apache Commons库的实现。任何帮助都将受到赞赏。

编辑:@newuserua_ext @trasher谢谢,感谢您的时间。我经历了与此相关的所有stackexchange Q&并发布了这个问题的重点。

考虑双重形式。我们成功地使用它来找到"像声音"的匹配项。您可以在Apache Commons中找到Java的实现:

https://commons.apache.org/proper/commons-codec/opidocs/org/apache/commons/commons/commons/commons/langueage/doublemblemetephone.html

一种可能性是Levenshtein距离,它测量了给定特定允许操作的字符串的编辑距离。使用动态编程可以或多或少地评估它,但并不适合确定语音相似性。

最新更新