在信息检索中,tf-idf或TFIDF(术语频率 – 逆文档频率的缩写)是一种数字统计,旨在反映单词对集合或语料库中的文档的重要性。[1]它经常被用作搜索信息检索,文本挖掘和用户建模的加权因子。tf-idf值按比例增加一个单词出现在文档中的次数,并被包含该单词的语料库中的文档数量所抵消,这有助于调整某些单词在一般情况下更频繁出现的事实。Tf-idf是当今最受欢迎的术语加权方案之一; 数字图书馆中83%的基于文本的推荐系统使用tf-idf。[2]
搜索引擎经常使用tf-idf加权方案的变体作为在给定用户查询的情况下对文档的相关性进行评分和排序的中心工具。tf-idf可以成功地用于各种主题领域的停用词过滤,包括文本摘要和分类。
通过对每个查询项的tf-idf求和来计算最简单的排名函数之一 ; 许多更复杂的排名函数是这个简单模型的变体。
动机[ 编辑]
期限频率[ 编辑]
假设我们有一套英文文本文档,并希望对与查询最相关的文档进行排名,即“棕色牛”。一个简单的开始方法是删除不包含所有三个单词“the”,“brown”和“cow”的文档,但这仍然留下许多文档。为了进一步区分它们,我们可以计算每个文件在每个文件中出现的次数; 术语在文档中出现的次数称为术语频率。但是,在文件长度变化很大的情况下,通常会进行调整(见下面的定义)。第一种形式的术语加权是由Hans Peter Luhn(1957)提出的,可归纳为:
- 文档中出现的术语的权重与术语频率成正比。[3]
反文档频率[ 编辑]
因为术语“the”是如此常见,术语频率将倾向于错误地强调恰好更频繁地使用“the”这个词的文档,而没有给予更有意义的术语“brown”和“cow”足够的权重。与不常见的单词“brown”和“cow”不同,术语“the”不是区分相关和非相关文档和术语的好关键词。因此,结合了逆文档频率因子,其减少了在文档集中非常频繁出现的术语的权重并且增加了很少发生的术语的权重。
KarenSpärckJones(1972)构思了对术语特异性的统计解释,称为逆文档频率(idf),它成为术语加权的基石:
- 术语的特异性可以量化为其发生的文档数量的反函数。[4]
定义[ 编辑]
tf-idf是两个统计数据的乘积,即术语频率和反向文档频率。有多种方法可以确定两种统计数据的确切值。
加权计划 | 重量 |
---|---|
二进制 | {\ displaystyle {0,1}} |
原始计数 | {\ displaystyle f_ {t,d}} |
期限频率 | {\ displaystyle f_ {t,d} {\ Bigg /} {\ sum _ {t’\ in d} {f_ {t’,d}}}} |
日志规范化 | {\ displaystyle \ log(1 + f_ {t,d})} |
双归一化0.5 | {\ displaystyle 0.5 + 0.5 \ cdot {\ frac {f_ {t,d}} {\ max _ {\ {t’\ in d \}} {f_ {t’,d}}}}} |
双标准化K. | {\ displaystyle K +(1-K){\ frac {f_ {t,d}} {\ max _ {\ {t’\ in d \}} {f_ {t’,d}}}}} |
期限频率[ 编辑]
在术语频率 tf(t,d)的情况下,最简单的选择是使用文档中术语的原始计数,即术语t出现在文档d中的次数。如果我们用f t,d表示原始计数,那么最简单的tf方案是tf(t,d)= f t,d。其他可能性包括[5]:128
- 布尔 “频率”:TF(吨,d)= 1,如果吨中出现d,否则为0;
- 根据文件长度调整的术语频率: f t,d ÷(d中的字数)
- 对数缩放频率:tf(t,d)= log(1 + f t,d) ; [6]
- 增加频率,以防止偏向更长的文档,例如原始频率除以文档中最常出现的术语的原始频率:
- {\ displaystyle \ mathrm {tf}(t,d)= 0.5 + 0.5 \ cdot {\ frac {f_ {t,d}} {\ max \ {f_ {t’,d}:t’\ in d \} }}}
反文档频率[ 编辑]
加权计划 | idf重量({\ displaystyle n_ {t} = | \ {d \ in D:t \ in d \} |}) |
---|---|
一元 | 1 |
逆文档频率 | {\ displaystyle \ log {\ frac {N} {n_ {t}}} = – \ log {\ frac {n_ {t}} {N}}} |
逆文档频率平滑 | {\ displaystyle \ log \ left(1 + {\ frac {N} {n_ {t}}} \ right)} |
逆文档频率最大值 | {\ displaystyle \ log \ left({\ frac {\ max _ {\ {t’\ in d \}} n_ {t’}} {1 + n_ {t}}} \ right)} |
概率逆文档频率 | {\ displaystyle \ log {\ frac {N-n_ {t}} {n_ {t}}}} |
该逆文档频率是的话多少信息提供,也就是说,如果它是公共的或所有文档罕见的措施。它是包含单词的文档的对数缩放的反向分数(通过将文档总数除以包含该项的文档数,然后取该商的对数得到):
- {\ displaystyle \ mathrm {idf}(t,D)= \ log {\ frac {N} {| \ {d \ in D:t \ in d \} |}}}
同
- {\ displaystyle N}:语料库中的文档总数 {\ displaystyle N = {| D |}}
- {\ displaystyle | \ {d \ in D:t \ in d \} |} :术语所在的文件数量 {\ displaystyle t} 出现(即, {\ displaystyle \ mathrm {tf}(t,d)\ neq 0})。如果该术语不在语料库中,则这将导致除零。因此,通常将分母调整为{\ displaystyle 1+ | \ {d \ in D:t \ in d \} |}。
不同逆文档频率函数的图:标准,平滑,概率。
术语频率 – 反向文档频率[ 编辑]
然后将tf-idf计算为
- {\ displaystyle \ mathrm {tfidf}(t,d,D)= \ mathrm {tf}(t,d)\ cdot \ mathrm {idf}(t,D)}
通过高频率(在给定文件中)达到tf-idf的高权重,并且在整个文档集合中该术语的文档频率低; 因此,权重倾向于过滤掉常用术语。由于idf的log函数内的比率始终大于或等于1,因此idf(和tf-idf)的值大于或等于0.当一个术语出现在更多文档中时,对数内的比率接近1 ,使idf和tf-idf更接近0。
加权计划 | 文件术语重量 | 查询术语权重 |
---|---|---|
1 | {\ displaystyle f_ {t,d} \ cdot \ log {\ frac {N} {n_ {t}}}} | {\ displaystyle \ left(0.5 + 0.5 {\ frac {f_ {t,q}} {\ max _ {t} f_ {t,q}}} \ right)\ cdot \ log {\ frac {N} {n_ {吨}}}} |
2 | {\ displaystyle 1+ \ log f_ {t,d}} | {\ displaystyle \ log \ left(1 + {\ frac {N} {n_ {t}}} \ right)} |
3 | {\ displaystyle(1+ \ log f_ {t,d})\ cdot \ log {\ frac {N} {n_ {t}}}} | {\ displaystyle(1+ \ log f_ {t,q})\ cdot \ log {\ frac {N} {n_ {t}}}} |
idf的理由[ 编辑]
Idf作为“术语特异性”被KarenSpärckJones在1972年的论文中引入。虽然它作为一种启发式方法运作良好,但其理论基础在之后至少三十年来一直很麻烦,许多研究人员试图找到它的信息理论依据。[7]
除了与Zipf定律的联系之外,SpärckJones自己的解释没有提出太多理论。[7]已经尝试将idf置于概率基础上,[8]通过估计给定文档d包含术语t作为相对文档频率的概率,
- {\ displaystyle P(t | d)= {\ frac {| \ {d \ in D:t \ in d \} |} {N}},}
这样我们就可以将idf定义为
- {\ displaystyle {\ begin {aligned} \ mathrm {idf}&= – \ log P(t | d)\\&= \ log {\ frac {1} {P(t | d)}} \\&= \ log {\ frac {N} {| \ {d \ in D:t \ in d \} |}} \ end {aligned}}}
即,逆文档频率是“逆”相对文档频率的对数。
这种概率解释反过来采用与自我信息相同的形式。然而,在尝试为所需的概率分布定义适当的事件空间时,将这些信息理论概念应用于信息检索中的问题会导致问题:不仅需要考虑文档,还需要考虑查询和术语。[7]
tf-idf的示例[ 编辑]
假设我们有一个语料库的术语计数表,只包含两个文档,如右边所示。
术语 | 学期 |
---|---|
这个 | 1 |
是 | 1 |
另一个 | 2 |
例 | 3 |
术语 | 学期 |
---|---|
这个 | 1 |
是 | 1 |
一个 | 2 |
样品 | 1 |
术语“this”的tf-idf的计算如下进行:
在其原始频率形式中,tf只是每个文档的“this”的频率。在每个文件中,“this”一词出现一次; 但是由于文档2有更多的单词,它的相对频率更小。
- {\ displaystyle \ mathrm {tf}({\ mathsf {”this”}},d_ {1})= {\ frac {1} {5}} = 0.2}
- {\ displaystyle \ mathrm {tf}({\ mathsf {”this”}},d_ {2})= {\ frac {1} {7}} \ about 0.14}
每个语料库的idf是常数,并且考虑包含单词“this”的文档的比率。在这种情况下,我们有两个文档的语料库,所有文档都包含“this”这个词。
- {\ displaystyle \ mathrm {idf}({\ mathsf {”this”}},D)= \ log \ left({\ frac {2} {2}} \ right)= 0}
因此,对于单词“this”,tf-idf为零,这意味着该单词在所有文档中都显示的信息量不大。
- {\ displaystyle \ mathrm {tfidf}({\ mathsf {”this”}},d_ {1},D)= 0.2 \ times 0 = 0}
- {\ displaystyle \ mathrm {tfidf}({\ mathsf {”this”}},d_ {2},D)= 0.14 \次0 = 0}
单词“example”更有趣 – 它出现三次,但只出现在第二个文档中:
- {\ displaystyle \ mathrm {tf}({\ mathsf {”example”}},d_ {1})= {\ frac {0} {5}} = 0}
- {\ displaystyle \ mathrm {tf}({\ mathsf {”example”}},d_ {2})= {\ frac {3} {7}} \ about 0.429}
- {\ displaystyle \ mathrm {idf}({\ mathsf {”example”}},D)= \ log \ left({\ frac {2} {1}} \ right)= 0.301}
最后,
- {\ displaystyle \ mathrm {tfidf}({\ mathsf {”example”}},d_ {1},D)= \ mathrm {tf}({\ mathsf {”example”}},d_ {1 })\ times \ mathrm {idf}({\ mathsf {”example”}},D)= 0 \ times 0.301 = 0}
- {\ displaystyle \ mathrm {tfidf}({\ mathsf {”example”}},d_ {2},D)= \ mathrm {tf}({\ mathsf {”example”}},d_ {2 })\ times \ mathrm {idf}({\ mathsf {”example”}},D)= 0.429 \ times 0.301 \ about 0.129}
(使用基数10对数)。
超越条款[ 编辑]
tf-idf背后的想法也适用于除术语以外的实体。1998年,idf的概念被应用于引文。[9]作者认为,“如果两个文件共享一个非常罕见的引用,那么这个引用的权重应该高于大量文档的引用”。此外,tf-idf应用于“视觉词”,目的是在视频,[10]和整个句子中进行对象匹配。[11]然而,tf-idf的概念并不比普通的tf方案(没有idf)更有效。当tf-idf应用于引用时,研究人员发现没有改进,而没有idf成分的简单引用计数权重。[12]
衍生[ 编辑]
许多术语加权方案源自tf-idf。其中之一是TF-PDF(术语频率*比例文档频率)。[13] TF-PDF于2001年在确定媒体新兴主题的背景下引入。PDF组件测量术语在不同域中出现的频率差异。另一种衍生物是TF-IDuF。在TF-IDuF中,[14] idf不是基于要搜索或推荐的文档语料库来计算的。相反,idf是根据用户的个人文档集合计算的。作者报告说TF-IDuF与tf-idf同样有效,但也可以应用于例如用户建模系统无法访问全局文档语料库的情况。