TF-IDF是Term Frequency-Inverse Document Frequency的简称。她是一种非常常见的用于将文本转化为有意义的数字表示的算法。这个技术被广泛的应用与NLP的各个方面。本文将会介绍怎样计算和应用TF-IDF。
文本的向量表示
为了将机器学习算法或统计技术应用到任何形式的文本上,应当将文本转化为数字或向量形式。这种数字表示应当能够描绘出本文的显著特征。有很多技术都可以做到这一点,比如,出现次数(occurrence),词频(term-frequency),TF-IDF,词共现矩阵(word co-occurrence matrix),word2vec和Glove。
基于出现次数的向量表达
由于TF-IDF是一个基于occurence的文本数字化表达,让我们先来看看之前的基于occurence的方法以及TF-IDF怎样优于他们。一种最简单的方法就是用一个词在整个语料中出现的次数来表达它。
词频
我们假设,一个词的值更高意味着这个词在给定文本中的重要性越高。这是很正确的想法,但是如果语料中的文本有不同的大小呢?这样一来,大文本中的词自然会比小文本中的词出现次数更多。因此,一个更好的表示就是基于文本的大小对词的出现次数进行标准化,这个表示被称作词频(term-frequency)。
数学上,一个词的词频的定义如下:
tf(w)=doc.count(w)/total words in doctf(w) = doc.count(w)/total\,words\,in\,doctf(w)=doc.count(w)/totalwordsindoc
Inverse Document Frequency
当计算词频时,每个词都是同样重要的,并且有机会获得它的向量表示。但是,一些词在所有的文本都很常见,以至于这些词对确定文本的意义没有什么什么作用。比如“the”,“a”,“in”,“of”等等,这些词会抑制更有意义的词的权重。因此,为了减轻这个影响,词频被一个称为逆文本频率的因子所(inverse document frequency)折减。
idf(w)=log(total number of documentsnumber of documents containing word w)idf(w) = log(\frac{total\, number\,of\,documents}{number\,of\,documents\,containing\,word\,w})idf(w)=log(numberofdocumentscont</