Rumah  >  Artikel  >  pembangunan bahagian belakang  >  similar_text算相似性时归一化时的疑义

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

WBOY
WBOYasal
2016-06-13 13:14:58971semak imbas

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

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya: Thinkphp3.0中URL有关问题 Artikel seterusnya: cakephp运用事务