TF-IDF
本博文介绍如何对文本文件进行打标,在实际的文本业务场景中,对文章打标是最为常见的应用之一。当我们打开一篇关于足球比赛的新闻的时候,往往可以看到在新闻的正文前面会有“体育”“足球”这样的小标签,这些标签可以帮助人们对文章进行分类,也 可以作为文本内容推荐的一个依据。很多时候,我们看到的文本内容是通过内容提供者手 动标记的,本节将介绍一种自动打标的算法TF-IDF。
基础概要
词频-逆向文件频率(Term Frequency-inverse Document Frequency TF-IDF )是一种用于信息检索与数据挖掘的技术,也就是常见的文本的打标。要理解TF-IDF法实现原理,首先要先知道什么是文本打标。文本打标就是找出最能代表这个文本意义的—些词 语,这里涉及两个方面:一方面是打标词语要出现得足够多,也就足通过对文章进行词频统 计,在通常情况下出现多的词语才是最能代表文章意义的,这是单从一篇文章的角度来决定 的:另一方面,把多篇文章放在一起来比较,类似于“的” “是”这样的常用助词可能在每篇 文章中出现的频率都很高,虽然这些词满足了出现频率高的要求,但是它们并不能作为每篇 文章的标签,因为这些词语不具备个性。所谓个性就是当我们把多篇文章放到一起来看,要 找出每篇文章独特的词语,也就是某个词可能在文章A中出现得非常多,在其他文章都没怎么出现,那么这个词语对本文章来讲就具有代表性,可以作为标签来代表这篇文章。
以上两方面就是TF-IDF这个算法的精髓体现。我们再把TF-IDF从字面意义的角度拆开理解,对某个词语B, TF (Term Frequency)表示B在某篇文章中出现的频率,DF(Documem Frequency)表示出现词语B的文章占到所有文章的比例。只有TF和DF进行 Inverse,也就是除法,才能正确地表示某个词语在对应某个文章的TF-IDF的值。下面通过公式推导TF-IDF值。
算法推导
具体的TF-IDF求解过程是通过求解TF和IDF值来实现的。这里先设置几个变量 t 表示某个词,d表示某篇文章,D表示全部文章的集合,绝对值符号丨丨表示对象的个数。
(1 ) TF值求解。TF值求解一般是依赖分词和词频统计的结果,我们举—个例子说明, 假设有这样的一个文本“我爱踢足球,踢足球很累”。通过分词和词频统计可以得到下面 的结果{足球:2,踢:2,我:1.,爱:1,累:1,很:1},这里边—共出现8个词(足球和踢出现了 两次)。对“足球”这个词来讲,它在这个文本文件中的TF值就是2/8=0.25。TF是表示的单个词在对应的文章中的出现频率,公式为
TF(t,d)=|t| / |d|
(2) IDF值求解。IDF的值表示的是出现某个词语f的文章,占到总文章集合的百分比。假如有3篇文章分别是{“小明是个好学生。”},{“小明喜欢苹果。”},{“中国真大。”},这里“小明”的DF值为2/3。IDF是将DF求倒数,并且通常会取对数,涉及信息论中摘的槪念。IDF的公式为
IDF (t , D)= log[ |D| / |{t属于d:d属于}|]
最终t在d中的TF-IDF值:
TF-IDF(t , d , D)= TF(t,d)* IDF (t , D)
代码:
结果:
可以看出tell在doc1中出现的次数很多,但在doc2,doc3中出现的次数同样多,所以不能作为doc1的标签,他的TF-IDF值偏低,再看how在doc3中出现的次数多,但在doc1,doc2中没有出现,所以how在对应的doc3中的TF-IDF值偏高,这段代码可以很清晰的看出TF-IDF的算法特性
这个算法的推导非常简单,需要注意的是TF-IDF不是根据词在某一篇文章中的出现频率来打分,而是根据词对文章的代表性来评估的,TF-IDF得出词的特征值配合分类算法或者聚类算法进行训练,所以更多的时候. TF-IDF并不是一个文本分析中的结果项而是作为特征值来使用。