PHP中的字符串相似性:levenshtein类似于长字符串的函数

PHP中的levenshtein函数适用于最大长度为255的字符串.在PHP中计算句子相似度得分的好方法是什么.

基本上我有一个句子数据库,我想找到近似重复.
similar_text函数没有给我预期的结果.对我来说,检测类似句子的最简单方法是:

$ss="Jack is a very nice boy, isn't he?";
$pp="jack is a very nice boy is he";

$ss=strtolower($ss);  // convert to lower case as we dont care about case
$pp=strtolower($pp);

$score=similar_text($ss, $pp);
echo "$score %\n";  // Outputs just 29 %

$score=levenshtein ( $ss, $pp );
echo "$score\n";  // Outputs '5', which indicates they are very similar. But, it does not work for more than 255 chars :(
最佳答案
levenshtein算法的时间复杂度为O(n * m),其中n和m是两个输入字符串的长度.这是非常昂贵的,并且计算长字符串的这种距离将花费很长时间.

对于整个句子,您可能希望使用diff算法,例如:参见:Highlight the difference between two strings in PHP

话虽如此,PHP还提供了similar_text功能,其复杂度更高(O(max(n,m)** 3))但似乎适用于更长的字符串.

转载注明原文:PHP中的字符串相似性:levenshtein类似于长字符串的函数 - 代码日志