我今天刚刚了解了余弦相似度,并且在用代码实现之前在纸上尝试了一些示例,但是似乎得到了意想不到的结果。
下面的分数是预先计算的TF-IDF分数:
Doc1 Doc2 Query
Word1 0.35 0.2 1
Word2 0.80 0.4 1
如果我们采用纯TF-IDF排名方法,最终结果将是:
0.35+0.8 = 1.15 score for Doc1 and 0.2+0.4 = 0.6 score for Doc 2.
Clearly Doc 1 is the winner.
要做余弦相似度,我们要做:
对于Doc1:
(0.35 ^ 2 + 0.8 ^ 2)的平方根= 0.873212
对于Doc2:
(0.2 ^ 2 + 0.4 ^ 2)的平方根= 0.447214
到目前为止,Doc1似乎遥遥领先。
现在,我们使用它们进行归一化并获得以下内容:
Doc1 Doc2 Query
Word1 0.400819 0.447213 1
Word2 0.916158 0.894426 1
SUM: 1.316977 1.34164
Doc2现在处于领先地位,即使我们采用点积运算,它也将处于领先地位。怎么会这样?显然,基于TF-IDF的Doc1的得分几乎是Doc2的两倍。他们怎么这么近而且,如果在搜索引擎中显示Doc2,则将成为首位。
请帮助清除我的困惑?