oefenweb / damerau-levenshtein
使用Damerau-Levenshtein距离获取文本相似度级别
v3.0.2
2022-03-23 10:44 UTC
Requires
- php: >=7.1.0
- ext-mbstring: *
Requires (Dev)
- oefenweb/cakephp-codesniffer: ^2.0
- phpmd/phpmd: ^2.0
- phpstan/phpstan: ^0.12.66
- phpunit/phpunit: ^7.5
- sebastian/phpcpd: ^4.0
README
使用Damerau-Levenshtein距离获取文本相似度级别。
要求
- PHP 7.1.0 或更高版本。
安装
composer require oefenweb/damerau-levenshtein
使用方法
$pattern = 'foo bar'; $string = 'fuu baz'; $damerauLevenshtein = new DamerauLevenshtein($pattern, $string); $damerauLevenshtein->getSimilarity(); // absolute edit distance; == 3 $damerauLevenshtein->getRelativeDistance(); // relative edit distance; == 0.57142857142857 $damerauLevenshtein->getMatrix(); // get complete distance matrix /* == * [ * [0,1,2,3,4,5,6,7], * [1,0,1,2,3,4,5,6], * [2,1,1,2,3,4,5,6], * [3,2,2,2,3,4,5,6], * [4,3,3,3,2,3,4,5], * [5,4,4,4,3,2,3,4], * [6,5,5,5,4,3,2,3], * [7,6,6,6,5,4,3,3], * ] */ $damerauLevenshtein->displayMatrix(); // get readable and formatted distance matrix /* * ' foo bar' . PHP_EOL * . ' 01234567' . PHP_EOL * . 'f10123456' . PHP_EOL * . 'u21123456' . PHP_EOL * . 'u32223456' . PHP_EOL * . ' 43332345' . PHP_EOL * . 'b54443234' . PHP_EOL * . 'a65554323' . PHP_EOL * . 'z76665433' */
构造函数和获取/设置方法支持不同的成本。
字符比较(相等检查)可以很容易地通过父类覆盖(参见 DamerauLevenshtein::compare
)。
更多示例请参阅 /tests/DamerauLevenshteinTest.php
或 RTFC。
许可证
MIT
作者信息
Mischa ter Smitten(基于Ph4r05的工作)