我在编码余弦相似度的PHP。有时候formula会给出一个结果。为了获得使用逆COS这个数字一定程度上,它需要是1和0上面的余弦相似度结果
之间我知道,我并不需要一个度,因为越接近1,越相似,它们是,越接近0越不相似。
不过,我不知道做什么上面1.一些它是否仅仅意味着它是完全不一样? 2是否比0更少?
你能说相似度顺序那种云:
最近1从下到0 - 最相似的,因为它移动从0到一个。 距离上面最近的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
你是如何计算的点积?你能显示你的代码吗? – Tap
@Tap我已经添加了代码。 – samiles
你能给出一个例子,说明导致cospheta大于1的$ dict1和$ dict2值吗? – Tap