dd/php-library-ddtextcompare

一个允许比较两个文本的简单工具

v0.9 2015-11-07 18:25 UTC

This package is auto-updated.

Last update: 2024-09-08 19:30:50 UTC


README

这是一个允许比较两个字符串的简单工具。目前该库仅支持UTF-8字符串。

该库是什么

ddTextCompare可以在PHP中无法直接进行字符串比较的情况下使用。该库依赖于字符数量及其位置,因此适合比较包含错误或具有不同单词顺序但相同单词的字符串。

该库不是什么

ddTextCompare与您从智能搜索引擎期望的任何形态学或其他分析无关。库的主要目的是保持简单。

工作原理

默认情况下,ddTextCompare执行简单的分析。每个被比较的字符串表示为两个n维向量,其中n是两个字符串中使用的唯一字符数量。第一个向量v1显示了其字符串中的字符及其总数。另一个向量v2显示了这些唯一字符的位置。当为每个字符串找到这两个向量时,将找到向量对之间的余弦相似度。一旦计算出来,cos(v1,1v1,2) 和 cos(v2,1v2,2) 将分别乘以其权重,并将结果修改为使其属于0到1的范围。

安装

Composer

只需将包添加到您的composer.json文件中。

composer require dd/php-library-ddtextcompare

手动

虽然使用Composer很方便,但也可以将库放在您想放置的位置,并手动包含“src”文件夹中的所有类。

基本用法

以下是一些示例。

比较包含错误的字符串

$compare = new DDTextCompare();
$similarity = $compare->compare("Text without any typos", "Text wihtout ayn typoes");
// $similarity = 0.99076390557741

调整权重

默认情况下,所有标准的权重相等,但可以更改。当更改权重时,另一个权重将自动调整,以使它们的和等于1。

$compare = new DDTextCompare();
$comparator = new Comparator\Cosine();

//Change the char total criterion weight
$comparator->setCharTotalWeight(0.8)

$similarity = $compare->compare("Text without any typos", "Txet wihtout ayn typoes", $comparator);
// $similarity = 0.99310343750374

扩展

可以通过实现DDTextCompare\Comparator接口来创建自定义比较器类。

$compare = new DDTextCompare();
$comparator = new Comparator\YourCustomComparator();

$similarity = $compare->compare("Text without any typos", "Txet wihtout ayn typoes", $comparator);

变更日志

版本 0.9 (2015-11-07)

  • + 这是第一个版本。