首頁 > 後端開發 > php教程 > similar_text算相似性时归一化时的疑点

similar_text算相似性时归一化时的疑点

WBOY
發布: 2016-06-13 12:19:29
原創
1043 人瀏覽過

similar_text算相似性时归一化时的疑问
我在算两个字符串的长度时,发现归一化时好像此函数采取的方式不一样。
第一次,我试了两个不一样长的字符串,算其编辑距离:
    echo "levenshtein计算:\n";echo levenshtein("seller_id","selr_id");echo "\n";
    得到的结果是:2

   再用同样的两个字符串,用PHP的similar_text函数来求其相似性
   echo "similar_text计算:\n";similar_text("seller_id","selr_id",$percent);
      echo $percent;
   出现在相似性是:87.5
把2这个距离归一化时,正好符合公式:1-(编辑距离/(两个字符串的长度之和))

第二次,我试了两个一样长度的字符串,分别算其编辑距离和相似性
similar_text("abcd","1234",$percent);echo $percent;echo "\n";
echo levenshtein("abcd","1234");
得到的值分别为:4和0
正好符合公式:1-(编辑距离/(任一个字符串的长度))

我的问题是:为什么对两个不一样长的字符串求相似性时,分母是两个字符串的长度之和呢?
我在网上找了些pdf文档看,对编辑距离归一化时,其分母是最长的那个字符串的长度呢。


------解决思路----------------------
应该说 similar_text 函数的设计者,考虑的还是蛮周到的
当传入的两个串长度相同时,计算的相似度与理论上并无差异
当传入的两个串长度不同时,得到的相似度不像理论上的那么陡峭。也就是说被匹配的概率变大
当然如果你不希望这样的话可以自行计算,串都是你的,他也返回了已匹配的数量。计算一下并不困难

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板