tf-idf是一个统计学指标,可以用来评估在一个语料库中一个单词对于一个文档的重要性。这个重要性随着单词在文档中的出现次数增加成比例的增加,随着单词在语料库里面出现次数增加而抵消。
Terminology
Word
单词
Document
文档,每一篇文章对应一个文档,包括很多个单词
Corpus
语料库,一个语料库由若干篇文档组成。
Empty Document
空文档也就是不包含任何单词的文档,在计算tfidf的过程中,空文档不在考虑范围内。
TF-IDF
tfidf由两项组成,第一项是normalized Term Frequency (TF),也就是标准化的文档频率,也就是一个单词在一个文档出现的总次数/文档里面单词总数;第二项是Inverse Document Frequency(IDF),也就是反向文档评率,也就是loge(语料库里包括的文档总数/单词在多少个文档里面出现过)。tfidf是这两项的乘积。
tfidf = tf * idf
TF
tf用来测量单词在文档里出现频率。因为每个文档的长度是不一样的,一个单词在长文档里面出现频次非常可能比短文档出现频次高,所以在计算tf的时候通常使用文档长度做标准化,除以文档长度。
TF(t) = (Number of times term t appears in a document) / (Total number of terms in the document)
IDF
idf用来测量一个单词的重要性(importance)。在计算tf的时候,我们假设每个单词同等重要,但是我们知道有些单词虽然出现了很多次,但是并没有那么重要,比如is, of, that等等。所以对于经常出现的单词,我们需要缩小重要性,对于很少出现的单词,我们需要放大重要性,通过下面的公式实现。
IDF(t) = log_e(Total number of documents / Number of documents with term t in it)
Example
假设有个文档里面包括了100个单词,cat这个单词出现了3次,所以tf=(3/100)=0.03;假设语料库里面包括1000, 000各文档,其中1000个文档里面出现了cat这个单词,所以idf=log_e(1000, 000 / 1000) = 6.9;所以tfidf= 0.03 * 6.9 = 0.207。