我在信息检索简介中的Vector Space Classification(链接章节)中查看表14.1,例14.1说"显示表13.1中五个文件的tf-idf向量表示如果(1 + log tf) * log(4/df)
使用公式tf > 0
。然而,当我看表14.1时,似乎没有将这个TF-IDF公式应用于文档向量。
表13.1中的文件是:
1: Chinese Beijing Chinese
2: Chinese Chinese Shanghai
3: Chinese Macao
4: Tokyo Japan Chinese
和表14.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公式应用于Japan
的{{1}}维度,我会得到:
d4
为什么我的计算结果与文本中包含的结果不同?
答案 0 :(得分:1)
您已正确计算tf-idf。当文字说
时,文字有点误导表14.1显示了五个文档的tf-idf向量表示 见表13.1。
它实际上显示了标准化为单位长度的tf-idf向量表示。
详情:
文件4有三个单词"东京","日本"和"中文"。
你正确地计算了两个"东京"的TF-IDF权重。和"日本"
应该是
log10(4)≈0.60。 "中国"在所有文件中,所以IDF部分
它的重量是log(4/4)= 0和"中国"的重量。是零。
所以文档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
值得注意的是,我们使用单位长度矢量的原因是调整不同长度的文档。如果没有这种调整,长文档通常会比短文档更好地匹配查询。