我在 PHP 中编码余弦相似度。有时该公式给出的结果高于一个。为了使用逆 cos 从这个数字中导出度数,它需要介于 1 和 0 之间。
我知道我不需要学位,因为它越接近 1,它们越相似,越接近 0 越不相似。
但是,我不知道 1 以上的数字是什么意思。这是否意味着它完全不同?2 比 0 更相似吗?
你能说相似的顺序是这样的吗:
从下方到 0 最接近 1 - 从 0 移动到 1 时最相似。从上面最接近 1 - 距离越远,相似度就越小。
谢谢!
根据要求,我的代码是:
$norm1 = 0;
foreach ($dict1 as $value) {
$valuesq = $value * $value;
$norm1 = $norm1 + $valuesq;
}
$norm1 = sqrt($norm1);
$dot_product = array_sum(array_map('bcmul', $dict1, $dict2));
$cospheta = ($dot_product)/($norm1*$norm2);
为了让您了解我得到的值的种类:
0.9076645291077
2.0680991116095
1.4015600717928
1.0377360186767
1.8563586243689
1.0349674872379
1.2083865384822
2.3000034036913
0.84280491429133