首页 > 解决方案 > 信息检索:如何计算多个搜索词的 tf-idf?

问题描述

我有以下 4 个文档的语料库:

<1> 这是第一个文件。
<2> 这是第二个文件。
<3> 第三个文档比第一个和第二个文档长。
<4> 这是最后一个文件。

并使用搜索队列“第一个或最后一个”,我应该如何计算 tf-idf?

目前我正在使用这个:

tf(x, D) = raw frequency of term x in document D / raw frequency of most occurring term in D

idf(x) = log(1 + total number of documents / number of documents containing x)

所以对于队列我得到
<1> = (1 / 1) * log(1 + 4/3)
<3> = (1 / 2) * log(1 + 4/3)
<4> = (1 / 1) * log(1 + 4/3)

它是否正确?你如何正确地做到这一点?我是否分别计算所有搜索词的值然后添加?乘?

标签: searchfull-text-searchinformation-retrievaltf-idf

解决方案


假设当您说“搜索队列”时您的意思是“搜索查询”并且您的查询是使用逻辑运算符OR构造的,那么您可以构造一个在遇到其中一个术语时增加频率的流。这实际上是您在上面所做的。

正如您在帖子中所说,另一种方法是在分别计算它们的向量之后计算术语向量的总和。但是,乘法将不是您正在寻找的选项。

因此,无论哪种方式,您都可以通过这种方式计算从多个术语中构造一个抽象术语。


推荐阅读