TF-IDF算法介绍

TF-IDF定义

TF-IDF(term frequency–inverse document frequency,词频-逆向文件频率)是一种加权技术。采用一种统计方法,根据字词在文本中出现的次数和在整个语料中出现的文档频率来计算一个字词在整个语料中的重要程度。

TF-IDF的主要思想

TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。

TF-IDF的主要思想是:如果某个单词在一篇文章中出现的频率TF高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类。

TF是词频(Term Frequency)

词频(TF)表示词条(关键字)在文本中出现的频率。

这个数字通常会被归一化(一般是词频除以文章总词数),以防止它偏向长的文件。其公式如下:

其中$n_{i,j}$是该词在文件$d_j$中出现的次数,分母则是文件$d_j$中所有词汇出现的次数总和。

IDF是逆向文件频率(Inverse Document Frequency)

逆向文件频率(IDF):某一特定词语的IDF,可以由总文件数目除以包含该词语的文件的数目,再将得到的商取对数得到。

如果包含词条$t$的文档越少,IDF越大,则说明词条具有很好的类别区分能力。其公式如下:

其中,$|D|$ 是语料库中的文件总数。 $|{j:ti\in d_j}|$表示包含词语 $t_i$ 的文件数目(即 $n{i,j}≠0$ 的文件数目)。如果该词语不在语料库中,就会导致分母为零,因此一般情况下使用$1+|{j:t_i\in d_j}|$ ,即:

TF-IDF实际上是:TF * IDF

某一特定文件内的高词语频率,以及该词语在整个文件集合中的低文件频率,可以产生出高权重的TF-IDF。因此,TF-IDF倾向于过滤掉常见的词语,保留重要的词语。

Note:TF-IDF算法非常容易理解,并且很容易实现,但是其简单结构并没有考虑词语的语义信息,无法处理一词多义与一义多词的情况。

TF-IDF的应用

  1. 搜索引擎
  2. 关键词提取
  3. 文本相似性
  4. 文本摘要

python sklearn工具包下的TF-IDF调用

1
class sklearn.feature_extraction.text.TfidfTransformer(norm=’l2’, use_idf=True, smooth_idf=True, sublinear_tf=False)

norm:词向量归一化

参考资料

  • TF-IDF算法介绍及实现

  • 文本特征提取之TFIDF与Word2Vec