自然语言处理(NLP)[文本挖掘算法]:TF-IDF分析

自然语言处理(NLP)中有一块很重要的部分就是文本挖掘,文本自然语言的一种展现形式,也是目前海量数据的主流展现方式。现在google和百度也会采用主流的分词算法TF-IDF进行文本拆分,当然这是主要的算法之一,不是只是用这一种。下面我给大家简单介绍一下TF-IDF算法:

定义

在信息检索中,TF-IDF(词频-逆文档频率)是一种统计方法,用以评估一个单词在一个文档集合或语料库中的重要程度。经常被用作信息检索、文本挖掘以及用户模型的权重因素。TF-IDF的值会随着单词在文档中出现的次数的增加而增大,也会随着单词在语料库中出现的次数的增多而减小。TF-IDF是如今最流行的词频加权方案之一。

TF-IDF的各种改进版本经常被搜索引擎用作在给定用户查询时对文档的相关性进行评分和排序的主要工具。TF-IDF可以成功地用于各种主题字段的停用词过滤,包括文本摘要和分类。

原理

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

通俗理解TF-IDF就是:TF刻画了词语t对某篇文档的重要性,IDF刻画了词语t对整个文档集的重要性。

TF(Term Frequency,词频)

TF(Term Frequency,词频)表示一个给定词语t在一篇给定文档d中出现的频率。TF越高,则词语t对文档d来说越重要,TF越低,则词语t对文档d来说越不重要。那是否可以以TF作为文本相似度评价标准呢?答案是不行的,举个例子,常用的中文词语如“我”,“了”,“是”等,在给定的一篇中文文档中出现的频率是很高的,但这些中文词几乎在每篇文档中都具有非常高的词频,如果以TF作为文本相似度评价标准,那么几乎每篇文档都能被命中。

对于在某一文档 dj 里的词语 ti 来说,ti 的词频可表示为:
ti词频公式
其中 ni,j 是词语 ti 在文档 dj 中的出现次数,分母则是在文件 dj 中所有词语的出现次数之和。

注意,这里除了文档总词数作为分母,只是做了一个标准化,因为有的文章长,有的文章短,出现100次的不一定算多,出现3次的不一定就少。有时候也用其他作为分母进行标准化。

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

IDF(Inverse Document Frequency,逆向文件频率)的主要思想是:如果包含词语t的文档越少,则IDF越大,说明词语t在整个文档集层面上具有很好的类别区分能力。IDF说明了什么问题呢?还是举个例子,常用的中文词语如“我”,“了”,“是”等在每篇文档中几乎具有非常高的词频,那么对于整个文档集而言,这些词都是不重要的。对于整个文档集而言,评价词语重要性的标准就是IDF。

某一特定词语的IDF,可以由总文件数除以包含该词语的文件数,再将得到的商取对数得到:
idf场景计算公式1
其中 |D| 是语料库中所有文档总数,分母是包含词语 ti 的所有文档数。

IDF的计算也是根据不同场景来确定的的,比如可以是
idf场景计算公式2
在scikit-learn的TfidfTransformer()方法中,如果声明TfidfTransformer(smooth_idf=false),那么IDF的计算就变为:
idf场景计算公式3
对IDF的理解:语料库的文档总数实际上是一个词分布的可能性大小,n篇文档,有n种可能。包含词ti的文档数m,表示词ti的真实分布有m个“可能”。那么log(n/m)
= log(n) - log(m)就可以表示词ti在m篇文档中的出现,导致的词ti分布可能性的减少(即信息增益),这个值越小,表示词ti分布越散,我们认为一个词越集中出现在某一类文档,它对这类文档的分类越有贡献,那么当一个词分布太散了,那他对文档归类的作用也不那么大了。

TF-IDF的理论依据及不足

TFIDF算法是建立在这样一个假设之上的:对区别文档最有意义的词语应该是那些在文档中出现频率高,而在整个文档集合的其他文档中出现频率少的词语,所以如果特征空间座标系取TF词频作为测度,就可以体现同类文本的特点。另外考虑到单词区别不同类别的能力,TF-IDF法认为一个单词出现的文本频数(即包含某个单词的文本数)越小,它区别不同类别文本的能力就越大。因此引入了逆文本频度IDF的概念,以TF和IDF的乘积作为特征空间座标系的取值测度,并用它完成对权值TF的调整,调整权值的目的在于突出重要单词,抑制次要单词。但是在本质上IDF是一种试图抑制噪声的加权,并且单纯地认为文本频率小的单词就越重要,文本频率大的单词就越无用,显然这并不是完全正确的。IDF的简单结构并不能有效地反映单词的重要程度和特征词的分布情况,使其无法很好地完成对权值调整的功能,所以TF-IDF法的精度并不是很高。

此外,在TFIDF算法中并没有体现出单词的位置信息,对于Web文档而言,权重的计算方法应该体现出HTML的结构特征。特征词在不同的标记符中对文章内容的反映程度不同,其权重的计算方法也应不同。因此应该对于处于网页不同位置的特征词分别赋予不同的系数,然后乘以特征词的词频,以提高文本表示的效果。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章