有人可以告诉我如何计算余弦相似度吗? 我知道有人在similar question link之前回答了类似的问题,但我不明白最终结果是如何达成的。
答案 0 :(得分:0)
因为余弦相似性方程是
在similar question link中,所选择的答案计算了两个代表两个句子的字数的向量。
A = (2,1,0,2,0,1,1,1)
B = (2,1,1,1,1,0,1,1)
所以我们可以计算出A和B的点积
dotProduct(A,B) = 2x2 + 1x1 + 0x1 + 2x1 + 0x1 + 1x0 + 1x1 + 1x1 = 9
和A和B的大小是
magnitude(A) = sqrt(2x2 + 1x1 + 0x0 + 2x2 + 0x0 + 1x1 + 1x1 + 1x1) = 3.464
magnitude(B) = sqrt(2x2 + 1x1 + 1x1 + 1x1 + 1x1 + 0x0 + 1x1 + 1x1) = 3.162
然后我们可以应用等式:
similarity = cos(theta) = dotProduct(A,B) / (magnitude(A) x magnitude(B))
= 9 / (3.464 x 3.162)
= 0.822
其中theta是矢量A和矢量B之间的角度