您好,
PHP 有很多字符串函数,例如 levenshtein、similar_text 和 soundex,可以用于比较字符串的相似性。 http://www.php.net/manual/en/function.levenshtein.php
对于准确性和性能来说,哪个函数是最好的?
您好,
PHP 有很多字符串函数,例如 levenshtein、similar_text 和 soundex,可以用于比较字符串的相似性。 http://www.php.net/manual/en/function.levenshtein.php
对于准确性和性能来说,哪个函数是最好的?
similar_text 的复杂度为 O(max(n,m)**3),而 levenshtein 的复杂度为 O(m*n),其中 n 和 m 是字符串的长度,因此 levenshtein 应该更快。两种方法都是 100% 准确的,因为它们为相同的输入提供相同的输出,但每个函数的输出将不同。如果您使用不同的准确性度量,您将需要创建自己的比较函数。
similar_text
更适合我的情况。如果字符串长度相同,levenshtein
将返回更多的相似性。例如:与“rob blabla”相比,“marco blabla”的相似度为81.8%(similar_text),并且为4(levenshtein)。而“jan blabla”与“rob blabla”相比,则为70%(similar_text)和3(levenshtein)。因此,levenshtein
认为最后一个更相似,而similar_text
则认为前面更相似。 - Lodesimilar_text()
和levenshtein()
可能会以非常高的计算成本得到不太有意义的结果。