【问题标题】:USING TFIDF FOR RELATIVE FREQUENCY, COSINE SIMILARITY将 TFIDF 用于相对频率、余弦相似度
【发布时间】:2014-09-17 22:20:41
【问题描述】:
我正在尝试使用 TFIDF 作为相对频率来计算余弦距离。我从一个文档中选择了 10 个单词说:文件 1 并从我的文件夹中选择了另外 10 个文件,使用 10 个单词及其频率来检查 10 个文件中哪些与文件 1 相似。说文件夹中的文件总数是46.我知道 DF(是该词出现的文档数) IDF(是 log(文件总数(46)/DF)和 TFIDF(是 TF 的乘积(一个文档中单词的频率)和以色列国防军)
问题:
假设我上面所说的是 100% 正确,在获得一个文档中所有 10 个单词的 TFIDF 后说:文件 2,我是否将所有 10 个单词的所有 TFIDF 加在一起以获得 TFIDF文件 2?
余弦距离是多少?
谁能帮忙举个例子?
【问题讨论】:
标签:
similarity
information-retrieval
tf-idf
cosine-similarity
dot-product
【解决方案1】:
问题是您在余弦相似度和 tf-idf 之间感到困惑。前者是衡量两个向量(在本例中为文档)之间的相似性,而后者只是一种设置向量组件的技术,最终将用于前者。
特别是您的问题,从每个文档中选择 10 个术语是相当不方便的。我宁愿建议使用所有条款。令 V 为术语的总数(集合中所有文档的联合集的基数)。您可以将每个文档表示为 V 维向量。可以将特定文档 D 的第 i 个分量设置为对应于该术语(例如 t)的 tf-idf 权重,即 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。