我想在两个文本之间找到相似词的数量
例子
$str1=the cat is on the roof
$str2=the mouse is on the roof
the,is,on,the,roof词在 $str1 和 $str2 中相似
所以输出将是数字 5或百分比 86%
我正在尝试类似的文本()函数,但这个函数不能按我想要的那样工作。
我想在两个文本之间找到相似词的数量
例子
$str1=the cat is on the roof
$str2=the mouse is on the roof
the,is,on,the,roof词在 $str1 和 $str2 中相似
所以输出将是数字 5或百分比 86%
我正在尝试类似的文本()函数,但这个函数不能按我想要的那样工作。
简单,分解它们然后使用array_diff:
$totalWords = count($array_1);
$array_1 = explode(" ", $str1);
$array_2 = explode(" ", $str2);
$differenceCount = count(array_diff($array_1, $array_2));
$differentPercent = $differenceCount / ($totalWords / 100);
@编辑:
编辑上面的代码以显示百分比。但是请记住,如果数组 1 和数组 2 的字数不同,您可能会得到错误的结果。
$arr1 = explode(" ",$str1)
$arr2 = explode(" ",$str2)
$arr3 = array_diff($arr1, $arr2);
echo(count($arr1)-count($arr3));
我会解决这个问题的方法是分解每个字符串,然后array_diff
像这样比较它们:
$arr1 = explode(' ', $str1);
$arr2 = explode(' ', $str2);
$diff = array_diff($arr1, $arr2);
echo (count($arr1) - count($diff));
这将呼应相似词的数量。
$arr1 = explode(" ",$str1)
$arr2 = explode(" ",$str2)
$arr3 = array_diff($arr1, $arr2);
我用 array_intesect 检查有多少匹配,我用它来搜索一个数组到另一个
并且为了防止使用辅助动词和介词(the,to,a,are etc)使用 -
$arr1 = str_replace(array("to", "the","a","an","in","by","but","are","is","had","have","has"),'',$arr1);