嗨,我正在尝试计算我的查询与我用 python 中的信息检索程序返回的文档之间的余弦相似度。
对于余弦相似度,我使用这个实现:
import math
def cosine_similarity(v1,v2):
sumxx, sumxy, sumyy = 0, 0, 0
for i in range(len(v1)):
x = v1[i]; y = v2[i]
sumxx += x*x
sumyy += y*y
sumxy += x*y
return sumxy/math.sqrt(sumxx*sumyy)
我在这个网站上找到了这个解决方案,但我遇到了一些问题。I tf*idf 权重和每个文档的向量,这是文档向量和查询向量的示例:
D: [0.028239449664633154, 0.05559373180364792, 0.02798439181455718]
Q: [0.3746433655507998, 0.526816791853616, 0.618765996788542]
好的,所以问题是有时我做余弦相似度,结果大于1,这怎么可能?余弦不能大于1?我的推理正确吗?在这种情况下做余弦相似度是否正确?请帮助我,谢谢