3.7 文档关键词提取
提取文档关键词是对网页文档有进一步了解的基础。从搜索引擎的角度来讲,在抽取文档关键词时给予不同词语不同权重有助于理解网页本身最基本的表达含义,对于提升搜索体验也有极大的帮助。
3.7.1 文档关键词提取概要
从网页文档分析的角度来讲,一般情况下,可以从如下三个方面来考虑文档的关键词提取。
(1)网页元数据(meta data)。某些网页会通过meta data指定网页关键词,例如,某新闻页面自动生成的关键词,所有的页面都有通过元数据标识关键词的可能性,如下所示。
<meta name="keywords" content="青年,可持续发展,发展" />
(2)网页文档内容自动标注。某些内容类网站,在内容或文章的尾部,大多会显示当前内容或文章的标签内容,以显示内容或文章的关键词,如图3-16所示。
图3-16 文章标注关键词示例
(3)系统自动化提取。需要系统自动化地完成提取工作。常用的自动化提取方法是利用TF-IDF算法,大致思想是:如果一个关键词在某网页中出现的频率很高,而在其他网页中很少出现,则认为它是该网页的关键词。另一种自动化抽取方法是采用词语权重(TextRank)。也有采用语义相似度计算关键词的方法,但是考虑到性能,一般工程领域优先采用TF-IDF或者TextRank算法。
3.7.2 基于TF-IDF算法
TF-IDF(Term Frequency-Inverse Document Frequency)是一种常用于检索系统的加权技术。它的原理相对比较简单,基本思想是:每个单词的重要性与它在这个文件中出现的次数成正比,与它在其他文件中出现的次数成反比。例如,只在A文档中出现了某个关键词,在其他文档中均不存在该关键词,则认为这个关键词的权值在A文档中相对较大;但如果该关键词不仅在A文档中存在,在其他文档中也存在,那么它的权值会相对减小。进一步分析,即:如果一个单词在一篇文档中出现的频率很高,并且在其他文档集合中出现的频率很低,则认为该单词属于所属文档的代表词汇,与其他文档能够较好地区分。TF-IDF是文本分类向量模型中常用的方法。
用数学公式表达TF-IDF中的词频(Term Frequency, TF),如下:
式中,ni, j是指该词在文件j中出现的次数,分母表示在文件j中所有字词的出现次数之和,简单地理解即该词在此文件中出现的频率。
用数学公式表达逆向文件频率(Inverse Document Frequency, IDF),如下:
式中,|D|为资料中所有文件的总数,分母表示包含词语ti的文件数目。最终第i篇文章的第j个词的TF-IDF权值为TFi, j×IDFi。
结合上述TF及IDF的数学公式,TF-IDF的计算值即TF与IDF的积。例如,给定如表3-23所示的3篇文档,计算词语“好朋友”的TF-IDF值,其中文档内容已经按照空格符进行了分词处理。
表3-23 计算TF-IDF文档示例
(1)计算TF。词语“好朋友”在文档A中只出现了1次,但是共有4个词组,所以TF=1/4=0.25。
(2)计算IDF。词语“好朋友”在文档A和文档C中出现过,但是共有3篇文档,所以IDF=log (3/2)。
(3)计算TF-IDF。将TF和IDF相乘,TF-IDF=TF×IDF=0.25×log(3/2)。因此,词语“好朋友”在文档A中的权值为0.044。
TF-IDF并不是一种完美的权值计算方法,因为它的实现基于“对区别文档最有意义的词语应该是那些在文档中出现频率高,而在整个文档集合的其他文档中出现频率较低的词语”的假设条件,目的是突出重要单词,抑制次要单词。但是对于搜索引擎搜集的网页来说,在使用TF-IDF时,还需要考虑单词在网页中的位置信息。单词位置依然是非常关键的信息。例如,在标题中的关键词权重应当高于在正文内部的关键词权重,正文首尾段落单词的权重应当高于正文中部文本单词的权重。
3.7.3 基于TextRank算法
基于TextRank算法的思想原理借鉴了PageRank的网页之间相互投票的思想,把每个字当作一个网页,字与字之间也相互投票,以它们相邻的距离远近程度作为权重。下面借用PageRank的思想来阐述关键词的重要性提取。
每个词语的权值大小来自指向这个词语的所有词语的权值之和,指向关系可以被视为一种词语共现关系,这种词语共现关系与TextRank设定的共现窗口大小有关。共现窗口表示在以某个词语为中心的前后k个词语距离内,其他词语出现的累计次数,这个次数即共现关系的大小。可以通过TextRank算法实现最佳关键词的提取。TextRank公式如下:
与PageRank不同的是,TextRank公式引入了w的概率,wji表示从wj到wi的路径权重。设定词语相距越远,权重越低。d为阻尼系数,设定值为0.85。计算过程如图3-17所示。
图3-17 基于TextRank算法计算关键词示例
(1)构建短文的词网。词语与词语之间的相互作用构成一个关系网。词网关系的引入,相当于把每个词语当作图中的一个节点。
(2)利用TextRank算法迭代计算出每个词语的权重排序结果。该计算结果是通过不断迭代产生的。
例如,对“卖鲜花的漂亮女孩在买鲜花”进行分词并标注词性后的结果为“卖\v鲜花\n的\ude1漂亮\a女孩\n在\p买\v鲜花\n”,保留词性标注后的名词、动词、形容词及副词,停用词及其他不相关词汇均移除,得到结果“卖鲜花漂亮女孩买鲜花”。TextRank算法将利用这些词语形成一张图,每个词语作为图中的一个顶点,将词语的共现关系当作图中的边。假设TextRank的共现窗口大小为3,即以某个词语为核心,其前后相邻3个词语的出现次数。对“卖鲜花漂亮女孩买鲜花”进行共现次数计算,得到表3-24,表中的数值表示词语的共现次数大小。例如,词语“卖”的前后3个词语为“鲜花”“漂亮”“女孩”,其出现次数均为1。
表3-24 基于TextRank算法的“卖 鲜花 漂亮 女孩 买 鲜花”的共现次数统计
将表3-24转换为图中顶点之间的关系,如图3-18所示。
图3-18 基于TextRank算法的“卖 鲜花 漂亮 女孩 买 鲜花”关系图
设定在初始状态下,它们的权重相同,均为1。根据TextRank公式进行第一次迭代计算。例如,对S[卖]的计算方式如下:
然后依次计算S[鲜花]、S[漂亮]等。在对所有词分别进行1次、5次、100次、1000次迭代之后,结果如表3-25所示。
表3-25 “卖 鲜花 漂亮 女孩 买”不断迭代后的权值表
通过表3-25可以发现,迭代计算最后自动完成收敛,完成100次迭代及完成1000次迭代得到的结果一致;权值从高到低依次为“鲜花”“漂亮”“女孩”“买”“卖”;词语“漂亮”和“女孩”在多次迭代之后,两者权重相当,这与选择的共现窗口大小有关。例如,选择共现窗口大小为2,在多次迭代后的结果如表3-26所示。
表3-26 选择共现窗口大小为2,在多次迭代后的结果
通过表3-26可以发现,词语“漂亮”与“女孩”的权重不再相等,也就是说,共现窗口大小也会影响词语与词语之间的关系分布,但是相对于整体而言对词语权值大小的位置影响相对较小。一般在进行TextRank迭代收敛之后,也会对词语权重进行归一化处理。所谓归一化,是指将词语的权值限定在(0,1)区间,可以通过将每个词语的权值除以整个词语集中最大的权值得到。如表3-26所示,以词语“鲜花”的权值作为最大权值,将其他词语的权值与最大权值求商,得到最终结果,如表3-27所示。
表3-27 利用最大值对权值进行归一化处理的结果
归一化后的权值即文档中关键词的最后权值。进行归一化处理的目的是使数据具备一定范围内的可比性。