首页 > 解决方案 > 在比较不同文档对的余弦相似度时是否需要调整长度?

问题描述

假设我有两个文档,A 和 B,每个文档有两个版本,1 和 2。我计算 (A1, A2) 和 (B1, B2) 的余弦相似度。令 Sa = cosine(A1, A2),且 Sb = cosine(B1, B2)。

如果 Sa < Sb,我可以说文档 A 的变化或更新比文档 B 大吗?

一篇论文指出:“一对文档越长,两个文档中包含一个单词的可能性就越大,从而导致文档不同的可能性降低(有关分析证明,请参见附录 B)。” 论文可以在这里找到。

这是真的?由于词汇量的大小是有限的,因此对于 Jaccard 相似性,这种说法可能是正确的。然而,余弦相似度是一个角度,直观上文档的长度应该无关紧要。如果这是真的,那么调整长度相似度分数的最佳方法是什么,以便我可以在不同的文档对之间进行比较。谢谢!

我基于 22861 对运行了一些统计数据。事实上,文档长度和相似度是高度正相关的。平均值:

WC2          4829.637374
WCl          4389.449193
WCA          4609.543283
Cosine         0.750225
CosineR        0.786806
Jaccard        0.606962
JaccardR       0.653031

在哪里:

WC2 是 version2 的干净字数,不包括停用词、数字和标点符号。WCA 是平均值(WC1 和 WC2)。余弦是基于干净词的干净余弦相似度。
CosineR 是基于所有标记(包括停用词、数字和标点符号)的余弦相似度。

这是皮尔逊相关矩阵:

                WC2       WCl       WCA    Cosine   CosineR   Jaccard  JaccardR
WC2       1.000000  0.886743  0.972220  0.121300  0.122131  0.107936  0.123040
WCl       0.886743  1.000000  0.970310  0.238503  0.257914  0.220078  0.254090
WCA       0.972220  0.970310  1.000000  0.184233  0.194497  0.167911  0.193036
Cosine    0.121300  0.238503  0.184233  1.000000  0.978050  0.982066  0.971082
CosineR   0.122131  0.257914  0.194497  0.978050  1.000000  0.948325  0.981853
Jaccard   0.107936  0.220078  0.167911  0.982066  0.948325  1.000000  0.975908
JaccardR  0.123040  0.254090  0.193036  0.971082  0.981853  0.975908  1.000000

标签: machine-learningnlpcosine-similarity

解决方案


正如您所说,文档的长度并未反映在余弦相似度中。您可以将余弦相似度乘以文档长度差的绝对值 (||A1|-|A2||*Sa||B1|-|B2||*Sb)。


推荐阅读