0

我想在两个文本之间找到相似词的数量

例子

$str1=the cat is on the roof  
$str2=the mouse is on the roof

the,is,on,the,roof词在 $str1 和 $str2 中相似

所以输出将是数字 5百分比 86%

我正在尝试类似的文本()函数,但这个函数不能按我想要的那样工作。

4

4 回答 4

6

简单,分解它们然后使用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 的字数不同,您可能会得到错误的结果。

于 2014-01-16T14:28:12.453 回答
3
$arr1 = explode(" ",$str1)
$arr2 = explode(" ",$str2)

$arr3 = array_diff($arr1, $arr2);

echo(count($arr1)-count($arr3));
于 2014-01-16T14:29:28.807 回答
2

我会解决这个问题的方法是分解每个字符串,然后array_diff像这样比较它们:

$arr1 = explode(' ', $str1);
$arr2 = explode(' ', $str2);
$diff = array_diff($arr1, $arr2);
echo (count($arr1) - count($diff));

这将呼应相似词的数量。

于 2014-01-16T14:31:21.337 回答
0
$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); 
于 2017-06-01T19:43:31.253 回答