TF-IDF
零:寒暄寒暄
昨天看了一天的CNN,结果被深度学习的深度给深深地深刻地深埋了(是叹服了),今天想换换脑子,去综结一下之前学习的《数学之美》里面介绍的算法和数学,下一篇再搞几篇深度学习的学习笔记。
一:TF-IDF简介
这个是用来提取文章或者网页关键字的算法,我们每一篇文章或者,都是有核心讨论主题,因此如何提取器关键内容的词汇呢?
当然你可以说出非常多的方法,但是这里有个非常简单的数学算法,不用特别复杂和高深即理论,一般的学过高中数学的人都能明白的,就是此文的主题,TF-IDF。它是一种计算词语频率和文章占比的综合考虑的算法,是有两个概念组成的。
下面的描述中,假如我们要计算某个长篇文章《中国的核武器研究发展》。一般标题就是包含有文章的关键字信息的。那么具体怎么获取呢?
对他先切分词语,[“中国”,“的”,“核武器”,“研究”,“发展”]。
二: 深入浅出
我们想找到一个文章的主题关键词,那么就去数一数这个文章哪个词出现的频率最高的词语呗,如果这个词在文章是关键词,那么他出现的频率(Term Frequency,缩写为TF)一定很高,看似没啥问题哈。
其实问题就来了,那么这个文章里面的“的”,“是”,“也”,“在”,这类的虚词出现的频率绝对的概率绝对是相当高的,但是这类的虚词又基本上没啥用,因此将这类词词语列入黑名单,叫做终止词,遇到这类的虚词,直接跳过,不考虑他称为关键词的可能性,嗯,我们进一步缩小了关键词的范围。但是呢,如果将“的”,特意的括起来,整体做个词语还是有意义的,因为这篇文章可能是解释的这次字含义的。
好了,我们的关键词列表只剩下[“中国”,“核武器”,“研究”,“发展”],
但是问题又来了,万一这篇文章出现的这几个词语的频率是一样的,那么哪个才是主要的核心词汇呢?他们的重要性肯定是不一样的,怎么区分呢,就我们的常识,这篇文章肯定的主题是 “核武器”,其他三个词汇,在很多文章都是可以看得到的,比如《中国经济发展》,《中国体育发展》,《中国的崛起》,《密码学研究发展》等等等。因此,我们潜意识的思维里,会自动把 “核武器” 作为核心词汇,其他三个词语的重要性要低于 “核武器”。
人脑是是怎么做到的呢?潜意识里,在我们的信息量里面,我们所涉及的声音,视频,文字等海量信息,涉及 “核武器” 的信息是很不寻常的,不常见的,因此往往能越小的缩小我们的认识范围,以及缩小信息的联想和搜索范围。而citation三个词汇 [“中国”,“研究”,“发展”] ,就是因为太寻常了,很多专业和方向的文章都会涉及这些,因此我们的搜索量太大,无法较为准确定位。
因此 “核武器” 的是非常不寻常的词汇,重要性肯定高于其他词汇。
所以,顺势得出,我们需要一个重要性调整系数,衡量一个词是不是常见词。如果某个词在海量信息里比较少见,但是它在这篇文章中多次出现,那么它很可能就反映了这篇文章的特性,正是我们所需要的关键词。这样似乎没啥大毛病了哈。
换句话说呢,除了知道词语出现频率,确实是能反应一些重要程度,但是还需要给这个值乘以一个权重,给“最常见的”词语分配一个非常小的权重,给“比较常见的”词语分配一个略小的权重,给“最不常见的”词语分配一个非常大的权重,这个权重叫做"逆文档频率"(Inverse Document Frequency,缩写为IDF),它的大小与一个词的常见程度成反比。,这样一来,我们就能直接体现词语对于文章的关键程度了。哎呀,很符合我们的尝试。
从数学的角度来讲,我们计算某个词语的词频TF,再计算它的权重IDF,二者相乘,即可作为该词语至于文档的重要性衡量指标。越大,则说明重要性越大。
三:具体数学计算。
好了,我们现在给出了数学计算过程,二者想乘即可得到某个词语对于某篇文章的重要程度,因此,将这边文章所有的词语都做TF-IDF计算,从大到小排序,既可以得到这篇文档的关键词组。