Introduction to Information Retrieval中的TF-IDF和Rocchio分类

TF-IDF and Rocchio classification in Introduction to Information Retrieval

我在 Introduction to Information Retrieval 中查看来自 Vector Space Classification(link 的章节)的 table 14.1,示例 14.1 说“显示了 tf-idf 向量表示Table 13.1 中的五个文档使用公式 (1 + log tf) * log(4/df) if tf > 0。然而,当我查看 Table 14.1 时,似乎没有将此 TF-IDF 公式应用于文档向量。

来自 table 13.1 的文档是:

1: Chinese Beijing Chinese
2: Chinese Chinese Shanghai
3: Chinese Macao
4: Tokyo Japan Chinese

Table14.1 中向量的项权重为:

vector Chinese Japan Tokyo Macao Beijing Shanghai
d1     0       0     0     0     1.0     0
d2     0       0     0     0     0       1.0
d3     0       0     0     1.0   0       0
d4     0       0.71  0.71  0     0       0

如果我将 TF-IDF 公式应用于 d4Japan 维度,我得到:

TF: 1 (term appears once in document 4)
DF: log(4 / 1) (term is present in only document 4)
TF-IDF Weight is thus: log(4) ~ .60

为什么我的计算结果和文中的不一样?

您 tf-idf 计算正确。当文字显示

时,文字有点误导

Table 14.1 shows the tf-idf vector representations of the five documents in Table 13.1.

它实际上显示 tf-idf 向量表示 归一化为单位长度

详情:
文档 4 有三个词 "Tokyo"、"Japan" 和 "Chinese".
您正确计算了 "Tokyo" 和 "Japan" 的 TF-IDF 权重 应该是
log10(4) ≈ 0.60。 "Chinese" 在所有文档中,所以 IDF 部分 它的权重是 log(4/4) = 0,"Chinese" 的权重是零。 所以文档 4 的向量是

Chinese Japan Tokyo Macao Beijing Shanghai
   0    0.60  0.60    0      0       0

但是这个向量的长度是 sqrt(0.60^2 + 0.60^2) ≈ 0.85 为了得到一个单位长度的向量,所有分量除以 0.85 得到文中的向量

Chinese Japan Tokyo Macao Beijing Shanghai
   0    0.71  0.71    0      0       0

可能值得注意的是,我们使用单位长度向量的原因是为了针对不同长度的文档进行调整。如果没有这种调整,长文档通常会比短文档更好地匹配查询。