manuwhat / similar-text
similar-text - 比较两个字符串以计算相似度得分
dev-master
2019-04-29 17:09 UTC
Requires (Dev)
- phpunit/phpunit: ^6.5.0
This package is auto-updated.
Last update: 2024-09-29 05:01:11 UTC
README
库,用于比较两个字符串以计算相似度得分,并获取有关字符串之间关联程度的统计数据。
要求: PHP 5.3+
这个库到底做了什么?
这个库可以比较两个字符串以计算相似度得分。
它接受两个字符串的文本,并使用纯PHP代码分析它们,以评估它们的相等程度。
该类返回一个数字,表示两个字符串的相似度百分比。
基于提供的统计数据,它实际上可以帮助检测相似度,即使发生以下情况:单词重新排序、空格和标点符号、删除单词、添加单词、URL剥离、形成缩写、扩展缩写、词干提取、子字符串、超字符串、缩写、字母表
如何使用它
通过以下命令要求库
composer require manuwhat/similar-text
将require 'vendor/autoload.php';
添加到脚本顶部。
接下来,在脚本中使用它,就像这样
use ezama/similar-text; 100.0===similarText('qwerty', 'ytrewq')
这是一个如何使用统计数据来检查特殊情况的示例。这里我们将使用它们来检查字母表(请注意,这已在库中实现。有关所有可用实现的详细信息,请参阅文件similar_text.php)
function areAnagrams($a, $b) { return Ezama\similar_text::similarText($a, $b, 2, true, $check)?$check['similar'] === 100.0&&$check['contain']===true:false; } areAnagrams('qwerty', 'ytrewq');// return true;
注意:一些函数和方法比人们想象的要复杂。例如,simpleCommonTextSimilarities类的aIsSuperStringOfB方法和它的辅助函数aIsSuperStringOfB与基于preg_match、stripos和PHP相似函数构建的常规检查函数并不相等
一个简单的例子是
function aisSuperStringOfB_stripos($a, $b) { return false!==stripos($a,$b); } function aisSuperStringOfB_PCRE($a, $b) { return preg_match('#'.preg_quote($b).'#i',$a); } require './vendor/manuwhat/similar-text/similar_text.php'; aIsSuperStringOfB('mum do you want to cook something', 'do you cook something mum');//return true; aIsSuperStringOfB_stripos('mum do you want to cook something', 'do you cook something mum');//false; aIsSuperStringOfB_PCRE('mum do you want to cook something', 'do you cook something mum');//return false;
该库还包含常见的距离算法,如无限长度的levenshtein、levenshtein-damerau、jaro、jaro-winkler、hamming、dice实现
如何运行单元测试
phpunit ./tests