我特别致力于一项功能,允许人名的拼写错误和别名。 我做了一些研究和研究发现String metric和语音库也有很多算法。
我已经尝试过一些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 Library 的实现。我想知道是否有更好的更好的实现。任何帮助表示赞赏。
编辑:@newuserua_ext @Trasher谢谢,我感谢你的时间。我已经完成了与此相关的所有StackExchange Q& A。并发布了这个关注人名的问题。
答案 0 :(得分:0)
考虑Double Metaphone。我们成功地使用它来发现"听起来像"匹配名称。您可以在Apache Commons中找到Java的实现:
答案 1 :(得分:0)
一种可能性是Levenshtein distance,它在给定特定允许操作的情况下测量字符串的编辑距离。使用动态编程可以或多或少地有效地评估它,但不太适合确定语音相似性。