1 算法介绍
该算法是一种用于资讯检索和资讯探勘的常用加权技术。
该算法是一种统计方法,用以评估一字词对于一个文本集(语料库)中的其中一份文本的重要程度。
注意:字词的重要性随着它在文本中出现的次数成比增加,但同时会随着它在语料库中出现的频率成反比下降。
2 原理
2.1 词频(term frequency, TF)
定义:指给定的词语在该文本中出现的次数。
补充:通常该数字会被归一化(分子一般小于分母,区别于IDF),以防止它偏向长的文本(同一个词在长文本里可能会比短文本有更高的词频,而不管该词重要与否)。
对于在某一特定文本里的词语${t_i}$来说,它的词频可表示为:
[t{f_{i,j}} = frac{{{n_{i,j}}}}{{sum olimits_k {{n_{i,j}}} }}]
式中分子是词语${t_i}$在文本${d_j}$中出现的次数,而分母则是文本${d_j}$中所有字词出现的次数之和。
注:下标$i$对应所有的词,下标$j$对应所有的文本,$i$、$j$表示词$i$在文本$j$中···
2.2 逆向文本频率(inverse document frequency, IDF)
定义:度量一个词语普遍重要程度。
某一特定词语的IDF,可以由总文本数目除以包含该词语之文本数目,再将得到的商取对数得到:
[id{f_i} = log frac{{left| D ight|}}{{left| {left{ {j:{t_i} in {d_j}} ight}} ight|}} approx log frac{{left| D ight| + 1}}{{left| {left{ {j:{t_i} in {d_j}} ight}} ight| + 1}}]
式中分子代表语料库中的总文件数,分母代表包含词语${t_i}$的文本数目(即${n_{i,j}} e 0$的文本数目)。
注:如果该词不在语料库中,就会导致分母为0,故一般采用后者约等处理。(注意这里涉及到平滑化处理,常用的方法:加一法、线性插值法和折扣法)
注:如果包含某个词语的文本越少,也就是分母越小,则IDF值越大,说明该词语具有很好的类区分能力。
2.3 TF-IDF计算
如果某个词语在一篇文章中出现的频率高。并且在其他文章中很少出现,则认为该词语具有很好的类区分能力,适合用于分类。
TF-IDF实际上为:
[tfid{f_{i,j}} = t{f_{i,j}} imes id{f_i}]
即某一特征文本内的高词语频率,以及该词语在整个文本集合中的低文本频率,可以产生出高权重的TF-IDF值。因此,TF-IDF倾向于过滤掉常用的词语,保留重要的词语。
3 不足之处
如果某一类文档$C$中包含词语$t$的文本数为$m$,而其他类包含词语$t$的文本数为$k$,显然所有包含词语$t$的文本数$n = m + k$,当$m$大的时候$n$也大,按照公式得到的IDF值会小,就说明词语$t$的类分能力不强。
但实际上,如果一个词语在一个类的文本中频繁出现,则说明该词语能够很好代表这个类的文本特征,这样的词语应该给它们赋予较高的权重,并选来作为该类文本的特征词以区别于其他类文本,这就是IDF的不足之处。
除此外,还有以下不足之处:
- 对于新词给予一个较大的权重是否合适?
- TF-IDF仅仅综合考虑了该词语在文档中的重要程度和文档区分度。
- TF-IDF没有考虑特征词在类间的分布。特征选择所选择的特征应该在某类出现多,而其他类出现少,即考察各类的文档频率的差异。如果一个特征词在各类间分布比较均匀,这样的词语对分类基本没有贡献;但是如果一个特征词比较集中地分布在某个类中,而在其它类中几乎不出现,这样的词语却能够很好地代表这个类的特征,而TF-IDF不能区分这两种情况。总而言之,即TF-IDF计算的权重不适用于分类。
- TF-IDF没有考虑特征词在类内部文档中的分布情况。在类内部的文档中,如果特征词均匀分布在其中,则这个特征词能够很好地代表这个类的特征,如果只在几篇文档中出现,而在此类的其他文档中不出现,显然这样的特征词不能够代表这个类的特征。