使用TFIDF进行相对频率,余弦相似

时间:2014-07-26 00:18:36

标签: similarity information-retrieval tf-idf cosine-similarity dot-product

我试图将TFIDF用于相对频率来计算余弦距离。我从一个文档中选择了10个单词:文件1并从我的文件夹中选择了另外10个文件,使用10个单词及其频率来检查10个文件中哪个文件类似于文件1.说明文件总数文件夹是46.i知道DF(这个单词出现的文件没有)IDF(是日志(文件总数(46)/ DF)和TFIDF(是TF的产品)(一个文档中单词的频率) )和IDF)

问题:

  1. 假设我上面说的是100%正确,在获取一个文档中所有10个单词的TFIDF之后说:文件2,我是否为10个单词中的每个单词添加所有TFIDF以获取TFIDF文件2?

  2. 余弦距离是多少?

  3. 有人可以帮忙举个例子吗?

1 个答案:

答案 0 :(得分:0)

问题是你在余弦相似性和tf-idf之间感到困惑。虽然前者是两个向量之间相似性的度量(在这种情况下是文档),但后者只是设置最终在前者中使用的向量的组件的技术。

特别是对于您的问题,从每个文档中选择10个术语相当不方便。我宁愿建议使用所有条款。设V是术语总数(集合中所有文档的联合集的基数)。您可以将每个文档表示为V维的向量。特定文档D的第i个分量可以设置为对应于该项的tf-idf权重(比如t),即D_i = tf(t,D)* idf(t)

以这种方式表示集合中的每个文档后,您可以通过以下方式计算文档间的相似性。

cosine-sim(D, D') = (1/|D_1|*|D'|) * \sum_{i=1}^{V} D_i * D'_i
                  = (1/|D_1|*|D'|) * \sum_{i=1}^{V} tf(t,D)*idf(t)*tf(t,D')*idf(t)  

请注意,此总和中的贡献术语仅是两个文档中出现的术语。如果术语t出现在D中但不出现在D'然后tf(t,D')= 0,因此对总和贡献0。