如何计算查询的TF-IDF?

时间:2016-05-09 00:13:04

标签: search computer-science tf-idf data-retrieval

如何为查询计算tf-idf?我理解如何使用以下定义计算一组文档的tf-idf:

  

tf =文档中的出现/文档中的总词数

     

idf = log(#documents / #documents where term occurrence

但我不明白这与查询有何关联。

例如,我看了a resource,其中陈述了查询“life learning”的值

  生活| tf = .5 | idf = 1.405507153 | tf_idf = 0.702753576
  学习| tf = .5 | idf = 1.405507153 | tf_idf = 0.702753576

我理解的tf值,每个术语只出现在两个可能的术语中,因此1/2,但我不知道idf来自哪里。
我认为#documents = 1和occurrence = 1,log(1)= 0,所以idf将为0,但似乎并非如此。它是基于您使用的任何文件?你如何计算查询的tf-idf?

3 个答案:

答案 0 :(得分:4)

只有tf(生命)取决于查询本身。但是,查询的idf取决于背景文档,因此idf(生命)= 1 + ln(3/2)〜= 1.405507153。 这就是为什么tf-idf被定义为将本地组件(术语频率)与全局组件(逆文档频率)相乘。

答案 1 :(得分:2)

假设您的查询是最佳汽车保险,您的总词汇量包含汽车,最佳,自动,保险,并且您拥有N=1,000,000个文档。所以你的查询如下:

enter image description here

你的一份文件可能是:

enter image description here

现在计算TF-IDFQuery的{​​{1}}之间的余弦相似度

答案 2 :(得分:0)

即使这个问题被标记为已回答。我不觉得它得到了完整的回答。 所以如果将来有人会需要这个:

<块引用>

但我不知道 idf 来自哪里。

在这个例子中:Project 3, part 2: Searching using TF-IDF 介绍了如何计算查询和一组文档之间的余弦相似度。

正如 @hypnoticpoisons 所述,IDF 是一个全局组件,因此每个文档的单词的 IDF 将相同:

<块引用>

注意:从技术上讲,我们将查询视为新文档。但是,您不应重新计算 IDF 值:只需使用您之前计算过的值即可。