php相似度算法
时间: 2023-07-19 10:06:54 浏览: 198
相似度算法
在 PHP 中计算相似度的算法有很多种,其中比较常用的有以下几种:
1. Levenshtein 算法:这是一种基于编辑距离的算法,用于计算两个字符串之间的最小编辑距离。
```php
$str1 = 'hello';
$str2 = 'world';
$distance = levenshtein($str1, $str2); // 计算编辑距离
$similarity = 1 - $distance / max(strlen($str1), strlen($str2)); // 计算相似度
```
2. Jaccard 系数:这是一种基于集合相似度的算法,用于计算两个集合之间的相似度。
```php
function jaccardSimilarity($str1, $str2) {
$arr1 = str_split($str1);
$arr2 = str_split($str2);
$intersection = array_intersect($arr1, $arr2); // 计算交集
$union = array_unique(array_merge($arr1, $arr2)); // 计算并集
return count($intersection) / count($union); // 计算相似度
}
```
3. Cosine 相似度:这是一种基于向量相似度的算法,用于计算两个向量之间的相似度。
```php
function cosineSimilarity($vec1, $vec2) {
$dotProduct = 0;
$norm1 = 0;
$norm2 = 0;
foreach ($vec1 as $key => $value) {
$dotProduct += $value * $vec2[$key]; // 计算向量点积
$norm1 += $value * $value; // 计算向量1的范数
$norm2 += $vec2[$key] * $vec2[$key]; // 计算向量2的范数
}
$similarity = $dotProduct / (sqrt($norm1) * sqrt($norm2)); // 计算相似度
return $similarity;
}
```
以上是三种常见的 PHP 相似度算法,根据实际需求选择合适的算法即可。
阅读全文