TF-IDF的原理与应用

参考:

http://www.codeceo.com/article/tf-idf.html

http://mp.weixin.qq.com/s?__biz=MjM5MDEzNDAyNQ==&mid=2650313710&idx=1&sn=29897190500a55bdbc56daf9ddb22a35&chksm=be4549888932c09ee1e9596ae4ca1fab4e7212d01aad158b77f5b06c88c6ea6263a22414df9e&mpshare=1&scene=1&srcid=0318lBdwcWBf4d46mPdfO8Fe#rd

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仍然不能解决所有的情况。


你可能感兴趣的:(数据挖掘与机器学习)