TF-IDF算法

概念

  TF-IDF(term frequency – inverse document frequency)是一种用于资讯检索与资讯探勘的常用加权技术。TF-IDF是一种统计方法,用以评估某一词语对于一个文档集(或一个语料库中的某一文档)的重要程度。该词语的重要性随着它在文档中出现频率的增大而增大(成正比),但同时会随着它在语料库(文档集)中出现频率的增大而减小(成反比)。TF-IDF加权的各种形式常被搜索引擎应用,作为文件与用户查询之间相关程度的度量或评级。除了TF-IDF以外,因特网上的搜索引擎还会使用基于连结分析的评级方法,以确定文件在搜索结果中出现的顺序。

原理

  词频(term frequency,TF)是指某一词语在某一文档中出现的频率。其值是对词数(term count,该词语的出现次数)的归一化,以防止它偏向长文档(同一词语在长文档中可能会有比短文档中更大的出现次数,而不代表该词语在长文档中重要性更大)。

  但是,需要注意,一些通用的词语对于主题并没有太大的作用,反倒是一些出现频率较少的词才能够表达文档的主题,所以单纯使用是TF不合适的。权重的设计必须满足:一个词预测主题的能力越强,权重越大,反之,权重越小。所有统计的文档中,一些词只是在其中很少几个文档中出现,那么这样的词对文档的主题的作用很大,这些词的权重应该设计的较大。IDF就是在完成这样的工作。

  逆文档频率inverse document frequency,IDF)是某一词语普遍重要性的度量。总的文档数目除以包含该词语的文档数目,再将所得的商取对数,从而得到该词语的IDF。

  一个词语,在某一文档中的词频越大,以及在整个文档集(含多个文档)中的出现频率越小,可以产生高权重的TF-IDF。因此,TF-IDF倾向于过滤掉常见的词语,保留重要的词语。

  TF-IDF的主要思想:如果某一词语在某一文档中的出现频率大,并且在其他文档中很少出现,则认为该词语具有很好的类别区分能力,适合用来分类。TF-IDF实际上是:TF * IDF,词频(Term Frequency,TF),逆文档频率(Inverse Document Frequency,IDF)。

  IDF的主要思想:如果包含某一词语的文档越少,也就是n越小,IDF值越大(见后续公式),则说明该词语具有很好的类别区分能力。如果某一类文档C中包含该词语的文档数为m,而其它类包含t的文档总数为k,显然所有包含t的文档数n=m+k,当m大的时候,n也大,按照IDF公式得到的IDF的值会小,就说明该词条t类别区分能力不强。(另一说:逆文档频率(Inverse Document Frequency,IDF)是指果包含某一词语的文档越少,该词语的IDF越大,则说明该词语具有很好的类别区分能力。)但是实际上,有时候,如果一个词条在一个类的文档中频繁出现,则说明该词条能够很好代表这个类的文本的特征,这样的词条应该给它们赋予较高的权重,并选来作为该类文本的特征词以区别与其它类文档。这就是IDF的不足之处。

公式

  对于在某一文档d_{j}中的词语  t_{i}  来说,它的词频可表示为:

  以上式子中 n_{i,j} 是该词 t_{i}  在文档d_{j}中的出现次数,而分母则是在文档d_{j}中所有字词的出现次数之和。

  总的文档数目除以包含某一词语的文档数目,得到的商取对数,得到该词语的逆文档频率

  其中:

  • |D|:语料库中的文件总数
  •  |\{ j: t_{i} \in d_{j}\}| :包含词语 t_{i} 的文件数目(即 n_{i,j} \neq 0的文件数目)如果该词语不在语料库中,就会导致被除数为零,因此一般情况下使用1 + |\{j : t_{i} \in d_{j}\}|

  然后:

   \mathrm{tf{}idf_{i,j}} = \mathrm{tf_{i,j}} \times  \mathrm{idf_{i}}

  一个词语,在某一文档中的词频越大,以及在整个文档集(含多个文档)中的出现频率越小,可以产生高权重的TF-IDF。因此,TF-IDF倾向于过滤掉常见的词语,保留重要的词语。

  该词语最后的TF-IDF值代表:相对于整个文档集,该词语对于其中的某一文档的重要度(贡献度)的大小。

 

posted @ 2017-08-28 20:09  iamshang  阅读(219)  评论(0)    收藏  举报