Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Text 为什么我们要使用tf idf权重计算余弦相似性?_Text_Nlp_Information Retrieval_Tf Idf_Cosine Similarity - Fatal编程技术网

Text 为什么我们要使用tf idf权重计算余弦相似性?

Text 为什么我们要使用tf idf权重计算余弦相似性?,text,nlp,information-retrieval,tf-idf,cosine-similarity,Text,Nlp,Information Retrieval,Tf Idf,Cosine Similarity,假设我们试图测量两个非常相似的文档之间的相似性 Document A: "a b c d" Document B: "a b c e" 这对应于一个术语频率矩阵 a b c d e A 1 1 1 1 0 B 1 1 1 0 1 其中,原始向量上的余弦相似性是两个向量A和B的点积,除以其大小的乘积: 3/4=(1*1+1*1+1*1+1*0+1*0)/(sqrt(4)*sqrt(4)) 但是,当我们通过将矩阵中的每个项乘以(log(N/df_i)来应用转换时,其中N是矩阵中的文档数,2,

假设我们试图测量两个非常相似的文档之间的相似性

Document A: "a b c d"
Document B: "a b c e"
这对应于一个术语频率矩阵

  a b c d e
A 1 1 1 1 0
B 1 1 1 0 1
其中,原始向量上的余弦相似性是两个向量A和B的点积,除以其大小的乘积:

3/4=(1*1+1*1+1*1+1*0+1*0)/(sqrt(4)*sqrt(4))

但是,当我们通过将矩阵中的每个项乘以(log(N/df_i)来应用转换时,其中N是矩阵中的文档数,2,df_i是其中存在一个项的文档数,我们得到的tf-idf矩阵为

   a b c d    e
A: 0 0 0 log2 0
B: 0 0 0 0    1og2
由于“a”出现在两个文档中,因此其文档频率值为0。这与“b”和“c”相同。同时,“d”在文档a中,但不在文档b中,因此与日志(2/1)相乘。“e”在文档b中,但不在文档a中,因此也与日志(2/1)相乘

这两个向量之间的余弦相似性为0,表明这两个文档完全不同。显然,这是不正确的。为了使用tf idf权重将这两个文档视为彼此相似,我们需要矩阵中的第三个文档C,它与文档a和B大不相同

因此,我想知道是否和/或为什么我们会使用tf idf权重和余弦相似性度量来比较高度相似的文档。我读过的教程或StackOverflow问题都不能回答这个问题

使用余弦相似性讨论tf idf权重的类似故障,但没有提供如何处理这些故障的指导

编辑:事实证明,我想要的指导是在那篇博文的评论中。它建议使用公式

1+对数(N/ni+1)


相反,作为逆文档频率变换。这将使每个文档中的术语的权重接近其原始权重,同时将许多文档中不存在的术语的权重放大更大程度。有趣的是,在关于tf idf的帖子中,这个公式并不更为突出。

事实证明,我想要的指导是在那篇博文的评论中。它建议使用公式

1+对数(N/ni+1)


相反,作为逆文档频率变换。这将使每个文档中的术语的权重接近其原始权重,同时将许多文档中不存在的术语的权重放大更大程度。有趣的是,在关于tf idf的帖子中,这个公式并不更为突出。

事实证明,我想要的指导是在那篇博文的评论中。它建议使用公式

1+对数(N/ni+1)

相反,作为逆文档频率变换。这将使每个文档中的术语的权重接近其原始权重,同时将许多文档中不存在的术语的权重放大更大程度。有趣的是,在关于tf idf的帖子中,这个公式并不更为突出

由于“a”出现在两个文档中,因此其反向文档频率值为0

这就是您在使用反向文档频率(idf)时出错的地方。idf是指对大量文档(而不仅仅是两个文档)进行计算,目的是能够预测文档对中术语重叠的重要性

您可能希望通用术语(如“the”、“a”等)在所有文档对中重叠。这是否会对您的相似性分数产生影响?-不会

这正是向量分量乘以idf因子的原因——只是为了抑制或增强特定项的重叠(a_i*b_i形式的分量被添加到余弦sim和中的分子中)

现在你认为你在计算机科学期刊上有一个集合。你相信一个文档对中的“计算机”和“科学”这两个术语的重叠被认为是重要的吗? 这确实会发生,因为这些术语的idf在这个集合中相当低

如果你将收藏范围扩大到任何学科的科学文章,你认为会发生什么?在这个收藏中,“计算机”一词的idf值将不再低。这是有意义的,因为在这个一般的收藏中,你会认为两个文档如果在同一主题上——计算机科学,那么它们就足够相似了行政长官

由于“a”出现在两个文档中,因此其反向文档频率值为0

这就是您在使用反向文档频率(idf)时出错的地方。idf是指对大量文档(而不仅仅是两个文档)进行计算,目的是能够预测文档对中术语重叠的重要性

您可能希望通用术语(如“the”、“a”等)在所有文档对中重叠。这是否会对您的相似性分数产生影响?-不会

这正是向量分量乘以idf因子的原因——只是为了抑制或增强特定项的重叠(a_i*b_i形式的分量被添加到余弦sim和中的分子中)

现在你认为你在计算机科学期刊上有一个集合。你相信一个文档对中的“计算机”和“科学”这两个术语的重叠被认为是重要的吗? 这确实会发生,因为这些术语的idf在这个集合中相当低

如果你将收藏范围扩大到任何学科的科学文章,你认为会发生什么?在这个收藏中,“计算机”一词的idf值将不再低。这是有道理的,因为在这个一般性的收藏中,你会认为两个是有意义的