之前使用TFIDF做过行业关键词提取,TFIDF仅从词的统计信息出发,而没有充分考虑词之间的语义信息。TextRank考虑到了相邻词的语义关系,是一种基于图排序的关键词提取算法。
TextRank的提出
TextRank由Mihalcea与Tarau于EMNLP'04提出来,核心思想:通过词之间的相邻关系构建网络,然后用PageRank迭代计算每个节点的rank值,排序rank值即可得到关键词。PageRank本来是用于Google的网页排名的,网页之间的链接关系即为图的边,迭代计算公式如下:
d damping factor 阻尼系数,一般设置为0.85,便于快速收敛。
PageRank通过互联网中的超链接关系来确定一个网页的排名,其公式是通过一种投票的思想来设计的:如果我们要计算网页A的PageRank值(以下简称PR值),那么我们需要知道有哪些网页链接到网页A,也就是要首先得到网页A的入链,然后通过入链给网页A的投票来计算网页A的PR值。这样设计可以保证达到这样一个效果:当某些高质量的网页指向网页A的时候,那么网页A的PR值会因为这些高质量的投票而变大,而网页A被较少网页指向或被一些PR值较低的网页指向的时候,A的PR值也不会很大,这样可以合理地反映一个网页的质量水平。
网页之间的链接关系使用图来表示很容易理解,如何将一个句子构建成图?TextRank将某一个词与其前面的N个词、以及后面的N个词均具有图相邻关系(类似于N-gram语法模型)。具体实现:设置一个长度为N的滑动窗口,所有在这个窗口之内的词都视作词结点的相邻结点;则TextRank构建的词图为无向图。
和PageRank相比,TextRank多了权重项,用来表示两个节点之间的边连接有不同的重要程度。TextRank用于关键词提取的算法如下:
1)把给定的文本T按照完整句子进行分割,即
2)对于每个句子,进行分词和词性标注处理,并过滤掉停用词,只保留指定词性的单词,如名词、动词、形容词,即
,其中 ti,j 是保留后的候选关键词。
3)构建候选关键词图G = (V,E),其中V为节点集,由(2)生成的候选关键词组成,然后采用共现关系(co-occurrence)构造任两点之间的边,两个节点之间存在边仅当它们对应的词汇在长度为K的窗口中共现,K表示窗口大小,即最多共现K个单词。
4)根据上面公式,迭代传播各节点的权重,直至收敛。
5)对节点权重进行倒序排序,从而得到最重要的T个单词,作为候选关键词。
6)由5得到最重要的T个单词,在原始文本中进行标记,若形成相邻词组,则组合成多词关键词。
TextRank提取关键词短语
关键词短语的提取基于关键词提取,在文本中提取若干相邻的关键词,既可构成关键短语。
TextRank生成摘要
摘要的抽取,是将文本中的每一个句子看作一个节点,计算句子之间的相似性,那么句子间对应的节点存在无向有权边。相似性使用同时出现在两个句子中的同一个词的个数作为分子,分母是对句子中词的个数求对数之和。使用相似度公式循环计算任意两个节点之间的相似度,根据阈值去掉两个节点之间相似度较低的边连接,构建出节点连接图,然后计算TextRank值,最后对所有TextRank值排序,选出TextRank值最高的几个节点对应的句子作为摘要。
TextRank文本重要性排序
基于textrank,将每一个文本作为一个节点,计算节点之间的相似性,根据阈值去掉两个节点之间相似度较低的边连接,构建出节点连接图,然后计算TextRank值,最后对所有TextRank值排序,作为文本重要性排序的依据。