最近我在给公司的编辑和优化人员培训时,在讲到文章关键词的密度和布局设置的时候,有个SEOer提问:“搜索引擎是如何判断并提取文章关键词?”,关于这个问题,虽然我并不肯定百度是用什么技术提取关键词的,可是马海祥却知道一种利用TF-IDF与余弦类似性来自动提取关键词的技术,简单的来讲就是针对一篇很长的文章,要想只用计算机提取它的关键词(Automatic Keyphrase extraction),在彻底不加以人工干预的状况下,利用什么样的技术原理才能正确作到呢?html
1、什么是TF-IDF?算法
TF-IDF(term frequency–inverse document frequency)是一种用于资讯检索与资讯探勘的经常使用加权技术。TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增长,但同时会随着它在语料库中出现的频率成反比降低。TF-IDF加权的各类形式常被搜索引擎应用,做为文件与用户查询之间相关程度的度量或评级。除了TF-IDF之外,因特网上的搜索引擎还会使用基于连接分析的评级方法,以肯定文件在搜寻结果中出现的顺序。ide
TF-IDF的原理布局
在一份给定的文件里,词频 (term frequency, TF) 指的是某一个给定的词语在该文件中出现的次数。这个数字一般会被归一化,以防止它偏向长的文件。(同一个词语在长文件里可能会比短文件有更高的词频,而无论该词语重要与否。)优化
逆向文件频率 (inverse document frequency, IDF) 是一个词语广泛重要性的度量。某一特定词语的IDF,能够由总文件数目除以包含该词语之文件的数目,再将获得的商取对数获得。搜索引擎
某一特定文件内的高词语频率,以及该词语在整个文件集合中的低文件频率,能够产生出高权重的TF-IDF。所以,TF-IDF倾向于保留文档中较为特别的词语,过滤经常使用词。spa
2、搜索引擎自动提取文章关键词的原理3d
关于这个问题涉及到数据挖掘、文本处理、信息检索等不少计算机前沿领域,可是出乎意料的是,有一个很是简单的经典算法,能够给出使人至关满意的结果。它简单到都不须要高等数学,普通人只用10分钟就能够理解,这就是我今天要在马海祥博客上想要介绍的TF-IDF算法。orm
首先马海祥以一个实例开始给你们讲起。假定如今有一篇长文《中国的蜜蜂养殖》,咱们准备用计算机提取它的关键词。htm
一个容易想到的思路,就是找到出现次数最多的词。若是某个词很重要,它应该在这篇文章中屡次出现。因而,咱们进行"词频"(Term Frequency,缩写为TF)统计。
结果你确定猜到了,出现次数最多的词是----"的"、"是"、"在"----这一类最经常使用的词。它们叫作“停用词”(stop words),表示对找到结果毫无帮助、必须过滤掉的词。
假设咱们把它们都过滤掉了,只考虑剩下的有实际意义的词。这样咱们可能又会遇到了另外一个问题,咱们可能发现"中国"、"蜜蜂"、"养殖"这三个词的出现次数同样多。
这是否是意味着,做为关键词,它们的重要性是同样的?
显然不是这样。由于"中国"是很常见的词,相对而言,"蜜蜂"和"养殖"不那么常见。若是这三个词在一篇文章的出现次数同样多,有理由认为,"蜜蜂"和"养殖"的重要程度要大于"中国",也就是说,在关键词排序上面,"蜜蜂"和"养殖"应该排在"中国"的前面。
因此,咱们须要一个重要性调整系数,衡量一个词是否是常见词。若是某个词比较少见,可是它在这篇文章中屡次出现,那么马海祥以为它极可能就反映了这篇文章的特性,也正是咱们所须要的关键词。
用统计学语言表达,就是在词频的基础上,要对每一个词分配一个"重要性"权重。最多见的词("的"、"是"、"在")给予最小的权重,较常见的词("中国")给予较小的权重,较少见的词("蜜蜂"、"养殖")给予较大的权重。这个权重叫作"逆文档频率"(Inverse Document Frequency,缩写为IDF),它的大小与一个词的常见程度成反比。
知道了"词频"(TF)和"逆文档频率"(IDF)之后,将这两个值相乘,就获得了一个词的TF-IDF值。某个词对文章的重要性越高,它的TF-IDF值就越大。因此,排在最前面的几个词,就是这篇文章的关键词。
下面马海祥再详细的给你们介绍一下这个算法的细节:
第1步:计算词频
考虑到文章有长短之分,为了便于不一样文章的比较,进行"词频"标准化。
或者
第2步:计算逆文档频率
这时,须要一个语料库(corpus),用来模拟语言的使用环境。
若是一个词越常见,那么分母就越大,逆文档频率就越小越接近0。分母之因此要加1,是为了不分母为0(即全部文档都不包含该词)。log表示对获得的值取对数。
从上面的公式咱们能够看到,TF-IDF与一个词在文档中的出现次数成正比,与该词在整个语言中的出现次数成反比。因此,自动提取关键词的算法就很清楚了,就是计算出文档的每一个词的TF-IDF值,而后按降序排列,取排在最前面的几个词。
在此马海祥仍是以《中国的蜜蜂养殖》为例,假定该文长度为1000个词,"中国"、"蜜蜂"、"养殖"各出现20次,则这三个词的"词频"(TF)都为0.02。而后,经过搜索引擎搜索这个词发现,包含"的"字的网页共有250亿张,假定这就是中文网页总数。包含"中国"的网页共有62.3亿张,包含"蜜蜂"的网页为0.484亿张,包含"养殖"的网页为0.973亿张。则它们的逆文档频率(IDF)和TF-IDF以下:
从上表可见,"蜜蜂"的TF-IDF值最高,"养殖"其次,"中国"最低。(若是还计算"的"字的TF-IDF,那将是一个极其接近0的值。)因此,若是只选择一个词,"蜜蜂"就是这篇文章的关键词。
马海祥博客点评:
除了自动提取关键词,TF-IDF算法还能够用于许多别的地方。好比,信息检索时,对于每一个文档,均可以分别计算一组搜索词("中国"、"蜜蜂"、"养殖")的TF-IDF,将它们相加,就能够获得整个文档的TF-IDF。这个值最高的文档就是与搜索词最相关的文档。
TF-IDF算法的优势是简单快速,结果比较符合实际状况。缺点是,单纯以"词频"衡量一个词的重要性,不够全面,有时重要的词可能出现次数并很少。并且,这种算法没法体现词的位置信息,出现位置靠前的词与出现位置靠后的词,都被视为重要性相同,这是不正确的。不过有一种解决方法是,对全文的第一段和每一段的第一句话,给予较大的权重。
本文为马海祥博客原创文章,原文网址摘自于http://www.mahaixiang.cn/seoyjy/292.html,