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

WBOY
发布: 2016-06-13 13:14:58
原创
1006 人浏览过

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
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!