PHP - 查找两段文本之间的匹配单词数量?

时间:2014-01-16 14:22:04

标签: php match levenshtein-distance fuzzy-logic

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

示例

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

,on,on,roof 字相似

因此输出<5> 百分比86%

我正在尝试使用similar_text()函数,但此函数无法正常工作。

4 个答案:

答案 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);