我想在两个文本之间找到相似词的数量
示例
$str1=the cat is on the roof
$str2=the mouse is on the roof
在,on,on,roof 字相似
因此输出<5> 百分比86%
我正在尝试使用similar_text()函数,但此函数无法正常工作。
答案 0 :(得分: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);
@Edit:
上面编辑的代码显示百分比。但是请记住,如果数组1和数组2的字数不相同,则可能会得到错误的结果。
答案 1 :(得分:3)
$arr1 = explode(" ",$str1)
$arr2 = explode(" ",$str2)
$arr3 = array_diff($arr1, $arr2);
echo(count($arr1)-count($arr3));
答案 2 :(得分:2)
我接近这个的方法是爆炸每个字符串然后使用array_diff
来比较它们:
$arr1 = explode(' ', $str1);
$arr2 = explode(' ', $str2);
$diff = array_diff($arr1, $arr2);
echo (count($arr1) - count($diff));
这将反映出类似词语的数量。
答案 3 :(得分:0)
$arr1 = explode(" ",$str1)
$arr2 = explode(" ",$str2)
$arr3 = array_diff($arr1, $arr2);
我使用array_intesect检查了多少匹配,我在搜索中使用了它 一个数组到其他
用于预防辅助动词和介词(the,to,a,are等) 使用 -
$arr1 = str_replace(array("to", "the","a","an","in","by","but","are","is","had","have","has"),'',$arr1);