1.TF-IDF原理
TF-IDF(Term Frequency-Inverse Document Frequency),中文叫做词频-逆文档频率。在文本挖掘(Text Mining)和信息检索(Information Retrieval)领域具有广泛的应用。TF-IDF通过计算每个词的TF-IDF值,筛选出每个文档中最关键一些词。
那么问题来了,TF-IDF是怎么定义“关键”?作为一个文档中的关键词,我想应该同时满足如下2个特征:
-
特征1:出现次数多,存在感强,这个没毛病;
-
特征2:作为某文档的关键词,它尽可能只在这一个文档中出现。类似“的”、“是”、“在”...这样的词,存在感强的都感知不到它的存在了,原因就是因为它——不够关键,因此,关键词要尽可能的唯一。
TF-IDF(Term Frequency–Inverse Document Frequency),就是平衡这两者的产物,它由两个部分相乘得到:TF × IDF,下面分别介绍一下:
1. TF
TF不用说了意思很明显,TF值越大,词的存在感越强,他是将特征1进行量化。
这里注意,我们之前的词频是计算词出现的次数,它这里除了文档总词数作为分母,只是做了一个标准化,因为有的文章长,有的文章短,出现100次的不一定算多,出现3次的不一定就少。有时候也用其他作为分母进行标准化(留个问题,你知道会用哪些么?)
2. IDF
计算IDF,我们首先要有一个语料库,可以是关于某个领域的新闻库——可以是聊天记录,也可以是谷歌上亿级的网页文本等等。语料库的作用在于模拟某种语境,当IDF值越大,说明在语境中包含该词的文档树越少,这个词越具有唯一性代表性,某种意义上说,它越关键。它是将特征2进行量化。
注意这里+1的位置,可以有些小变化,在scikit-learn的TfidfTransformer()方法中,如果声明TfidfTransformer(smooth_idf=false),那么IDF的计算就变为:
我们就叫它“不愿smooth的IDF”吧。
最后,将TF与IDF相乘,就可以计算出文档中每个词的TF-IDF值。它综合考虑了一个词的存在感和唯一性。
TF-IDF的优点是计算简单,利于理解,性价比极高。但是它也有缺陷,首先单纯依据文章中的TF来衡量重要性,忽略了位置信息。如段首,句首一般权重更高;其次,有的文章可能关键词只出现1-2次,但可能通篇都是围绕其进行阐述和解释,所以单纯靠TF仍然不能解决所有的情况。
来源:http://www.cnblogs.com/zourui4271/p/7511170.html