【介绍】
TF/IDF (term frequency/inverse document frequency) 的概念被公认为信息检索中最重要的发明。在搜索、文献分类和其他相关领域有广泛的应用。讲起 TF/IDF 的历史蛮有意思。IDF 的概念最早是剑桥大学的斯巴克-琼斯[注:她有两个姓] (Karen Sparck Jones)提出来的。斯巴克-琼斯 1972 年在一篇题为关键词特殊性的统计解释和她在文献检索中的应用的论文中提出IDF。遗憾的是,她既没有从理论上解释为什么权重IDF 应该是对数函数 log(D/Dw)(而不是其它的函数,比如平方根),也没有在这个题目上作进一步深入研究,以至于在以后的很多文献中人们提到 TF/IDF 时没有引用她的论文,绝大多数人甚至不知道斯巴克-琼斯的贡献。同年罗宾逊写了个两页纸的解释,解释得很不好。倒是后来康乃尔大学的萨尔顿 (Salton)多次写文章、写书讨论 TF/IDF 在信息检索中的用途,加上萨尔顿本人的大名(信息检索的世界大奖就是以萨尔顿的名字命名的)。很多人都引用萨尔顿的书,甚至以为这个信息检索中最重要的概 念是他提出的。当然,世界并没有忘记斯巴克-琼斯的贡献,2004年,在纪念文献学学报创刊 60 周年之际,该学报重印了斯巴克-琼斯的大作。罗宾逊在同期期刊上写了篇文章,用香农的信息论解释 IDF,这回的解释是对的,但文章写的并不好、非常冗长(足足十八页),把一个简单问题搞复杂了。
【开篇】
本篇开始讨论比Boolean Retrieval更复杂的检索,想象一下我们平常用的搜索引擎,一个很明显的特点是返回的结果是有序的,越相关越重要的结果排得越靠前(竞价排名除外- -),下面主要就讨论如何给文档打分排序的问题。
这回把扯淡的话先放在前面说,我长久以来抱持一个想法:无论外表看上去多么复杂的一个方法或理论,其核心思想或者说原始动机往往都是很朴素很直观的,只不过在其发展、完善、实现的过程中不得不变得复杂,如果我们顺着方法的创始人当初的思路来看问题,看看他当时已知什么,面对的困难是什么,再印证最终的解决方法是如何巧妙地把问题搞定的,这样就不会经常迷失在具体的细节中,知其然不知其所以然了。当然,直观的同时也一定是不严谨的,所以再次回归复杂而严格的表述也必不可少。我不知道这个看法对不对,至少在研究ACM比赛里用到的算法时经常会有这种感觉。所以我在下面讲述方法的时候也往往先描述遇到的困难,再看那些方法是如何解决困难的,而不是一上来就给一坨莫名其妙的数学公式。我认为我的方法是比较符合人的学习过程的,当然因为水平有限,错误在所难免了,呵呵。
扯淡完毕,回到给文档打分的问题。一般来说,如果文档中出现了我们查询的词,我们就认为这篇文档是和此查询相关的。那么很自然的想法就是,如果一篇文档中出现要查询的词的次数越多,相关性应该越大。所以定义一个Term-Frequency TF(t,d)表示单词t在文档d中的出现次数,以它作为一个度量相关度的标准。但是只考虑次数还不够,因为不同词的重要性是不同的,比如考虑一个小型的文本库,里面都是各位ACMer的文章,可以想见,“算法”这个词会出现在大部分的文章中,而“ppmm”这个词只在少数文章中才有。现在我要查询“算法 ppmm”,结果找到两篇文档同时出现了这两个词,第一篇是RoBa写的,里面出现了1次“算法”和10次“ppmm”,另一篇文章是另一位ACMer写的,里面出现了10次“算法”和1次“ppmm”,如果我们只累计TF,会发现两篇文档都是11,但是实际上RoBa的文章应该排在前面,因为“ppmm”这个词相对来说较为稀缺,所以它的权重也应该比较大。为了量化这个稀缺度,引入Inverse Document Frequency(IDF),定义为IDF(t) = log(N / DF(t)),这里的DF(t)是指单词t在多少篇文档中出现过(Document Frequency),N是指总的文档数,log的底数实际上可以随便取,因为最后我们只关心相对大小。容易发现,如果单词越普遍,它的IDF越小,极端情况是DF(t)=N时,IDF(t)=0,从下面的式子能看出,这实际上就起到了stop list的效果。把这两项结合起来,对单词t和文档d,定义TF-IDF(t,d) = TF(t,d) * IDF(t)。直观来解释就是:一个单词在一篇文档中出现次数越多,它的权重越大;文档中单词越是“只此一家别无分店”,它的权重越大。现在我们就有了一个简单的打分方法:一篇文档和一条Query的相关度为Query中所有单词在这篇文档中的TF-IDF值之和。当然还有更强大的计分方法,后面慢慢再提。
另外说一下,TF-IDF并不是唯一的加权方式。比如我们可能认为这个值和term的出现次数成正比这一点太夸张了,一篇出现了10次“ppmm”的文章未必就比一篇出现1次“ppmm”重要10倍,所以可以搞出一个sublinear TF:当tf(t,d)>0时,定义wf(t,d) = 1 + log tf(t,d),然后用这个wf代替tf去和idf相乘。另外还有其他一些方法,在此不再赘述。
===============================================================================================================================
TF-IDF(term frequency–inverse document frequency)是一种用于资讯检索与资讯探勘的常用加权技术。TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随著它在文件中出现的次数成正比增加,但同时会随著它在语料库中出现的频率成反比下降。TF-IDF加权的各种形式常被搜寻引擎应用,作为文件与用户查询之间相关程度的度量或评级。除了TF-IDF以外,因特网上的搜寻引擎还会使用基于连结分析的评级方法,以确定文件在搜寻结果中出现的顺序。
TF-IDF的主要思想是:如果某个词或短语在一篇文章中出现的频率TF高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类。TFIDF实际上是:TFXIDF,TF词频(Term Frequency),IDF反文档频率(Inverse Document Frequency)。TF表示词条,在文档d中出现的频率。IDF的主要思想是:如果包含词条t的文档越少,也就是n越小,IDF越大,则说明词条t具有很好的类别区分能力。如果某一类C.中包含词条t的文档数为m,而其它类包含t的文档总数为k,显然所有包含t的文档数n=m+k,当gfl大的时候,n也大,按照IDF公式得到的IDF的值会小,就说明该词条t类别区分能力不强。但是实际上,如果一个词条在一个类的文档中频繁出现,则说明该词条能够很好代表这个类的文本的特征,这样的词条应该给它们赋予较高的权重,并选来作为该类文本的特征词以区别与其它类文档。这就是IDF的不足之处.
原理
在一份给定的文件里,词频 (term frequency, TF) 指的是某一个给定的词语在该文件中出现的次数。这个数字通常会被正规化,以防止它偏向长的文件。(同一个词语在长文件里可能会比短文件有更高的词频,而不管该词语重要与否。)
逆向文件频率 (inverse document frequency, IDF) 是一个词语普遍重要性的度量。某一特定词语的IDF,可以由总文件数目除以包含该词语之文件的数目,再将得到的商取对数得到。
某一特定文件内的高词语频率,以及该词语在整个文件集合中的低文件频率,可以产生出高权重的TF-IDF。因此,TF-IDF倾向於过滤掉常见的词语,保留重要的词语。
例子
有很多不同的数学公式可以用来计算TF- IDF。词频 (TF) 是一词语出现的次数除以该文件的总词语数。假如一篇文件的总词语数是100个,而词语「母牛」出现了3次,那麽「母牛」一词在该文件中的词频就是 0.03 (3/100)。一个计算文件频率 (DF) 的方法是测定有多少份文件出现过「母牛」一词,然後除以文件集里包含的文件总数。所以,如果「母牛」一词在1,000份文件出现过,而文件总数是 10,000,000份的话,其文件频率就是 0.0001 (1000/10,000,000)。最後,TF-IDF分数就可以由计算词频除以文件频率而得到。以上面的例子来说,「母牛」一词在该文件集的TF- IDF分数会是 300 (0.03/0.0001)。这条公式的另一个形式是将文件频率取对数。
在向量空间模型里的应用
TF-IDF权重计算方法经常会和余弦相似度(cosine similarity)一同使用於向量空间模型中,用以判断两份文件之间的相似性。
TFIDF算法是建立在这样一个假设之上的:对区别文档最有意义的词语应该是那些在文档中出现频率高,而在整个文档集合的其他文档中出现频率少的词语,所以如果特征空间坐标系取TF词频作为测度,就可以体现同类文本的特点。另外考虑到单词区别不同类别的能力,TFIDF法认为一个单词出现的文本频数越小,它区别不同类别文本的能力就越大。因此引入了逆文本频度IDF的概念,以TF和IDF的乘积作为特征空间坐标系的取值测度,并用它完成对权值TF的调整,调整权值的目的在于突出重要单词,抑制次要单词。但是在本质上IDF是一种试图抑制噪音的加权 ,并且单纯地认为文本频数小的单词就越重要,文本频数大的单词就越无用,显然这并不是完全正确的。IDF的简单结构并不能有效地反映单词的重要程度和特征词的分布情况,使其无法很好地完成对权值调整的功能,所以TFIDF法的精度并不是很高。
此外,在TFIDF算法中并没有体现出单词的位置信息,对于Web文档而言,权重的计算方法应该体现出HTML的结构特征。特征词在不同的标记符中对文章内容的反映程度不同,其权重的计算方法也应不同。因此应该对于处于网页不同位置的特征词分别赋予不同的系数,然后乘以特征词的词频,以提高文本表示的效果。
转自:http://blog.csdn.net/ididcan/article/details/6657977
总结:
①tf-idf方法目的:每篇文章的代表性特征
②idf引入原因:降低tf(单纯词频)刻画所带来的噪声影响
③tf-idf公式:单词词频*log(总文档数/出现此单词的文档个数) tf*log(n/m)