任何人都可以给我一个更好的方法(或者最优选的方法)来找到两个字符串之间的匹配百分比(即这两个字符串(例如名称)与百分比之间的相关程度如何)使用模糊逻辑。任何人都可以帮我编写代码吗?我真的想知道从哪里开始..在php中查找两个字符串之间的匹配百分比?
2
A
回答
6
$str1 = 'Hello';
$str2 = 'Hello, World!';
$percent;
similar_text($str1, $str2, $percentage);
4
我只是写基于话,不是字符的字符串比较函数 - 这里是,万一有人需要它:
function wordsof($s) {
$a = [];foreach(explode(" ",$s)as $w) $a[$w]++;
return $a;
}
function compare($s1,$s2) {
$w1 = wordsof($s1);if(!$w1) return 0;
$w2 = wordsof($s2);if(!$w2) return 0;
$totalLength = strlen(join("",$w1).join("",$w2)) || 1;
$chDiff = 0;
foreach($w1 as $word=>$x) if(!$w2[$word]) $chDiff+=strlen($word);
foreach($w2 as $word=>$x) if(!$w1[$word]) $chDiff+=strlen($word);
return $chDiff/$totalLength;
}
逻辑很简单:它在另一个方向上查找一个字符串的每个字。长词重量更多。它提供了一个介于0和1之间的浮点值。您可能希望在比较之前对字符串进行规范化 - 空格修剪,多个空格替换为一个,全部小写等等。此外,它不是很快,但由于单词查找的东西...
如果你不想污染全局命名空间,你可以在比较器中实现“wordsof”。它为了可读性而分开。代码也有所简化,所以在使用它之前先进行测试,但它应该完成这项工作。当我们说话时,我正在使用原始版本。
相关问题
- 1. 查找两个字符串之间不匹配的字母
- 2. PHP:匹配两个字符串之间的字符串
- 3. MySQL字符串匹配百分比
- 4. 两个字符串之间的相关性百分比
- 5. 两个字符串之间的百分比相似度
- 6. 比较两个字符串以找到匹配的字符串
- 7. 想找出两个字符串之间的相似百分比jquery
- 8. 计算字符串中匹配字的百分比
- 9. 在Lucene中计算匹配字符串百分比
- 10. 匹配字符串中两个索引之间的子串
- 11. java两个字符串之间的火花字符匹配
- 12. 匹配两个相同字符之间的字符串
- 13. 删除两个字符串之间的匹配字符
- 14. 比较字符串和字符串列表中查找匹配
- 15. 查找匹配的部分字符串
- 16. vb.net查找两个字符串之间的字符串
- 17. 查找两个字符串之间的所有子字符串
- 18. 正则表达式来查找两个字符串之间的匹配
- 19. 查找两个字符串中匹配字的序列
- 20. 在PHP中检查两个字符串的近似匹配
- 21. 找到两个字符串中的匹配字符串
- 22. 比较两个字符串数组,分别返回匹配的字符串和不匹配的字符串
- 23. PhP查找(并替换)两个不同字符串之间的字符串
- 24. 使用preg_match在字符串中查找百分比值
- 25. 两个大字符串中的部分字符串匹配
- 26. 百分比匹配
- 27. 比较两个字符串并找到多个匹配
- 28. 匹配PHP中常见字符之间的唯一字符串
- 29. 如何找到两个“/”字符之间的字符串 - php
- 30. MySQL匹配包含char百分比的字符串
使用一些模糊逻辑?当然,这里有一个:'$ matchPercentage =($ str1 == $ str2)? 100:0;'。说真的,你能详细说明一下吗? – netcoder
通过“更好”,我假设你已经看到了PHP自己的[similar_text()](http://www.php.net/similar_text)和[levenshtein()](http://www.php.net/levenshtein )? – user113215
我不知道..我只需要一个更好的方法来找到两个名称字符串之间的百分比匹配(我的意思是几乎所有的比较)..虽然我GOOGLE了它,我不能断定哪个选择? sry ..如果我不清楚.. @netcoder – user1518659