Nlp tf idf权重是否影响余弦相似性?

Nlp tf idf权重是否影响余弦相似性?,nlp,information-retrieval,Nlp,Information Retrieval,我正在对文本文档进行聚类。我使用tf-idf和余弦相似性。然而,即使我使用这些方法,也有一些我并不真正理解的东西。tf idf权重是否影响两个文档之间的相似度计算 假设我有这两份文件: 1-高大的树木 2-高大的树木高大的树木高大的树木 尽管两个文档的tf-idf向量不同,但两个文档之间的相似度将为1。第二份文件通常比第一份文件具有更高的条款权重 假设两个向量的权重为(仅假设): v1(1.0,1.0) v2(5.0、8.0) 计算余弦相似性得到1.0 下面是共享相同项但权重不同的两个随机向量的

我正在对文本文档进行聚类。我使用tf-idf和余弦相似性。然而,即使我使用这些方法,也有一些我并不真正理解的东西。tf idf权重是否影响两个文档之间的相似度计算

假设我有这两份文件:

1-高大的树木

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

尽管两个文档的tf-idf向量不同,但两个文档之间的相似度将为1。第二份文件通常比第一份文件具有更高的条款权重

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

v1(1.0,1.0)

v2(5.0、8.0)

计算余弦相似性得到1.0

下面是共享相同项但权重不同的两个随机向量的草图

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


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

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

其中,
| | x |
x
的欧几里德范数

因为到目前为止我所理解的是,这里的相似性只关心术语的存在与否

那不是真的。考虑

d1 = "hello world"
d2 = "hello world hello"
有tf矢量(此处无idf)

余弦相似性为0.95,而不是1

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

d3 = "hello"
然后
df(“hello”)=3
df(“world”)=2
,并且
d1
d2
的tf-idf向量变为

v1' = [ 1.        ,  1.28768207]
v2' = [ 2.        ,  1.28768207]
余弦相似性略小,为0.94


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

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

  • 余弦相似性度量欧氏空间中两个不同向量之间的角度,与权重的计算方式无关

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


  • 我希望这能有所帮助。

    请参阅我对这个问题和问题的回答

    基本上,如果您想同时使用tf-idf和余弦相似性,那么您可以获得tf-idf向量,并对其应用余弦相似性以获得最终结果。所以这里你要把余弦相似性(在这个例子中是tf-idf向量的点积)应用到tf-idf分数上


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

    余弦相似性并不能真正衡量距离。它测量角度。“这两者是相关的,但不是相同的。”拉尔斯曼,余弦的有趣观点。因为在欧几里德空间中,两个向量之间的差异只通过角度来测量,这不就是两个向量之间的距离吗?除了测量两个向量之间的角度之外,还有其他方法来测量两个向量之间的差异吗?@alvas:在欧几里德空间中,两个向量之间的距离通常是通过欧几里德距离来测量的。余弦相似性s可以转换为相异性1-s,但也就是说,所以称之为“距离”有点牵强。
    d3 = "hello"
    
    v1' = [ 1.        ,  1.28768207]
    v2' = [ 2.        ,  1.28768207]