什么是向量空间余弦相似度
余弦相似性通过测量两个向量的夹角的余弦值来度量它们之间的相似性。0度角的余弦值是1,而其他任何角度的余弦值都不大于1;并且其最小值是-1。从而两个向量之间的角度的余弦值确定两个向量是否大致指向相同的方向。两个向量有相同的指向时,余弦相似度的值为1;两个向量夹角为90°时,余弦相似度的值为0;两个向量指向完全相反的方向时,余弦相似度的值为-1。这结果是与向量的长度无关的,仅仅与向量的指向方向相关。余弦相似度通常用于正空间,因此给出的值为-1到1之间。
代码实现
func Cosine(a []float64, b []float64) float64 {
var (
aLen = len(a)
bLen = len(b)
s = 0.0
sa = 0.0
sb = 0.0
count = 0
)
if aLen > bLen {
count = aLen
} else {
count = bLen
}
for i := 0; i < count; i++ {
if i >= bLen {
sa += math.Pow(a[i], 2)
continue
}
if i >= aLen {
sb += math.Pow(b[i], 2)
continue
}
s += a[i] * b[i]
sa += math.Pow(a[i], 2)
sb += math.Pow(b[i], 2)
}
return s / (math.Sqrt(sa) * math.Sqrt(sb))
}