php中查找最相似字符串的最佳方法?

php中查找最相似字符串的最佳方法?,php,matching,levenshtein-distance,Php,Matching,Levenshtein Distance,见鬼 PHP有很多字符串函数,比如levenshtein、similor_text和soundex,它们可以比较字符串的相似性。 哪一种对准确性和性能最好?类似的文本的复杂度为O(max(n,m)**3),levenshtein的复杂度为O(m*n),其中n和m是字符串的长度,因此levenshtein应该快得多。两者都是100%准确的,因为它们为相同的输入提供相同的输出,但每个功能的输出将不同。如果要使用不同的精度度量,则必须创建自己的比较函数。我认为这更适合作为一个社区Wiki,因为我不太

见鬼

PHP有很多字符串函数,比如levenshtein、similor_text和soundex,它们可以比较字符串的相似性。


哪一种对准确性和性能最好?

类似的文本的复杂度为O(max(n,m)**3),levenshtein的复杂度为O(m*n),其中n和m是字符串的长度,因此levenshtein应该快得多。两者都是100%准确的,因为它们为相同的输入提供相同的输出,但每个功能的输出将不同。如果要使用不同的精度度量,则必须创建自己的比较函数。

我认为这更适合作为一个社区Wiki,因为我不太了解不同函数的实现细节,我有一种直觉,即您不能同时追求精度和性能。它们可能是成反比的。@András你很可能能够回答哪个对性能更好,哪个对准确性更好。我知道有人想要这样的东西。他们最终调用了一个命令行diff工具!事实上,刚刚在php上检查过,它们的复杂度是不同的:“(levenshtein)算法的复杂度是O(m*n),其中n和m是str1和str2的长度(与类似的_text()相比相当好,后者是O(max(n,m)**3),但仍然很昂贵)。”这在很大程度上取决于您的不同之处。我发现类似的文本更适合我的情况<如果字符串长度相同,code>levenshtein将返回更多相似性。例如:“马可·布拉布拉布拉”和“罗布·布拉布拉布拉”的得分分别为81.8%(类似文本)和4(莱文施泰因)。与“rob blabla”相比,“jan blabla”给出了70%(类似文本)和3(levenshtein)。因此,
levenshtein
认为最后一个更相似,
similor\u text
认为第一个更相似。