Mythsman


乐极生悲,苦尽甘来。


用于文档关键字提取的TFIDF指标

关键字提取问题

在大规模网络文章整合的过程中,我们经常需要对某一篇文章提取关键字。比如对于某一篇关于计算机的文章,我们应该提取出类似于“计算机”、“编程”、“CPU”之类的符合人类认知习惯的关键词,但是这个过程却不是那么容易。现在,我们把问题归结为,在不使用机器学习方法的情况下,给定一个文档集,仅从单词频率等角度对文档集当中的某一篇文档进行考虑,期望能够对于该篇文章,我们能从文章中依次提取出最有代表性的关键词。

我们很容易想到的方法就是统计每个词的词频了,但是对于任何文章而言,出现频率最多的应该是一些音节助词等毫无意义的词语,比如中文里的“的”、英文里的“is”之类的词语。这些词语我们通常叫他“停用词”。显然,在统计词频的时候我们首先得把他们去掉。但是去掉这些常见停用词之后,剩下的词语中出现频率高就真的意味着能够代表文章的主旨么?显然不一定,虽然在某些情况下,某个能表现主旨的词语会在文章中多次出现,但是在有些情况下这个表现主旨的词语只会偶尔出现,不过与此相对应的是,这些词在不同主旨的文章中出现的次数却应该更少。

针对上述的特性,就有了TF.IDF指标。他的意义就是词项频率(Term  Frequency)乘以逆文档频率(Inverse Document Frequency)

词项频率

词项频率就是指在该文档中某一个词出现的频率,这个数值越高原则上就代表这个词语的得分就越大。当然,由于文章的词数可能会比较大,我们需要对这个频率进行下归一化。也就是说,假定文档集有$N$篇文档,$f_{ij}$表示词项$i$在文档$j$中出现的次数(或频率),我们把他的词项频率$TF_{ij}$定义如下:$$TF_{ij}=\frac{f_{ij}}{max_kf_{kj}}$$

意思也很简单,就是把这个词的频率除以这个文档中频率最高的词的频率,作为他的词项频率。这个数值保证了词的得分与词在文章中的频率正相关。

逆文档频率

逆文档频率顾名思义就是代表这个数值与该词项在所有文档中出现的频率逆相关,正如前面所说,一个词在所有文档中出现的次数越少就表示这个词越有可能代表某一个特定的主题。因此,我们再假定词项$i$在$N$篇文档集中的$n$篇文章内出现,那么我们把这个他的逆文档频率定义如下:$$IDF_i=log_2\frac N {n_i}$$

就是把出现频率$\frac{n_i}N$取个倒数再取个对数。这样既保证了该指数与文档频率逆相关,又保证了这个值的影响程度不会太大。

TF.IDF指标

最后我们只要把上面这两个指数相乘就可以得到该词项在该文档中的权重了,即词项$i$在文档$j$中的得分为:$$TF_{ij}\times IDF_i$$

其实这也算是个经验公式了,不过在很多情况下还是很准的。