3

我正在对文本文档进行聚类。我正在使用 tf-idf 和余弦相似度。但是,即使我正在使用这些措施,我也不是很明白。tf-idf 权重会影响两个文档之间的相似度计算吗?

假设我有这两个文件:

1- 高大的树木。

2- 高大的树木 高大的树木 高大的树木 高大的树木。

那么这两个文档之间的相似度将为 1,尽管两个文档的 tf-idf 向量不同。与第一个文档相比,第二个文档通常对术语具有更高的权重。

假设两个向量的权重是(假设):

v1(1.0, 1.0)

v2(5.0, 8.0)

计算余弦相似度得到 1.0。

这是两个具有相同项但权重不同的随机向量的草图。

向量之间有一个明显的角度,所以权重应该起作用!

在此处输入图像描述

这引发了一个问题,tf/idf 权重在相似度计算中起到什么作用?因为到目前为止我所理解的是,这里的相似性只关心术语的有无。

4

3 回答 3

4

首先,你的计算是有缺陷的。(1, 1) 和 (5, 8) 之间的余弦相似度为

1*5 + 1*8 / ||(1, 1)|| * ||(5, 8)||
= 13 / (1.4142 * 9.434)
= .97

||x||的欧几里得范数在哪里x

因为到目前为止我所理解的是,这里的相似性只关心术语的有无。

这不是真的。考虑

d1 = "hello world"
d2 = "hello world hello"

带有 tf 向量(这里没有 idf)

v1 = [1, 1]
v2 = [2, 1]

余弦相似度为 0.95,而不是 1。

Idf 可以产生进一步的影响。假设我们添加

d3 = "hello"

然后df("hello") = 3df("world") = 2,以及 的 tf-idf 向量d1d2变为

v1' = [ 1.        ,  1.28768207]
v2' = [ 2.        ,  1.28768207]

余弦相似度稍小,为 0.94。

(使用 scikit-learn 计算的 Tf-idf 和余弦相似度;由于使用的 tf-idf 种类不同,其他软件包可能会给出不同的数字。)

于 2013-10-09T12:53:51.200 回答
3

我认为您在这里混合了两个不同的概念。

  1. 余弦相似度测量欧几里得空间中两个不同向量之间的角度,与权重的计算方式无关。

  2. TF-IDF 为文档和给定集合中的每个术语确定可用于余弦相似度(除其他外)的向量的每个分量的权重。

我希望这有帮助。

于 2013-10-09T12:54:24.530 回答
0

查看我对这个问题的回复以及问题

Python:tf-idf-cosine:查找文档相似度

基本上,如果您想同时使用 tf-idf 和余弦相似度,那么您可以获得 tf-idf 向量并将余弦相似度应用于该向量以获得最终结果。因此,在这里您将余弦相似度(在本例中为 tf - idf 向量的点积)应用于 tf-idf 分数。

答案还有 3 个教程可供您参考。他们解释了这是如何工作的。谢谢。

于 2013-10-21T13:51:37.990 回答