TextRank 关键词提取算法
[转]blog.csdn.net/AndrewLee_/…
TextRank是一种文本排序算法,是由网页排序算法PageRank发展而来。
一、PageRank原理
网页i的重要性由含有指向网页i链接的所有网页j确定。
代表网页
的重要性
为阻尼系数,一般设0.85
是网页j中的链接存在的链接指向的网页的集合(也就是说网页j中指出去的链接网页集合)。
是集合中元素的个数。
PageRank需要使用上面的公式多次迭代才能得到结果。初始时,可以设置每个网页的重要性为1。上面公式等号左边计算的结果是迭代后网页i的PR值,等号右边用到的PR值全是迭代前的。
一句话形象描述上图公式:所有指向网页i的网页j,网页j的重要性除以网页j向外指出链接的个数(由于网页j最多只能有一个链接指向网页i)的值的累积和作为网页i的重要性。
二、TextRank原理
基于TextRank的关键词提取
TextRank算法是利用局部词汇之间关系(共现窗口)对后续关键词进行排序,直接从文本本身抽取。其主要步骤如下:
(1)把给定的文本T按照完整句子进行分割,即
(2)对于每个句子,进行分词和词性标注处理,并过滤掉停用词,只保留指定词性的单词,如名词、动词、形容词,即
,其中
是保留后的候选关键词。
(3)构建候选关键词图,其中V为节点集,由(2)生成的候选关键词组成,然后采用共现关系(co-occurrence)构造任两点之间的边,两个节点之间存在边仅当它们对应的词汇在长度为K的窗口中共现,K表示窗口大小,即最多共现K个单词。
(4)根据上面公式,迭代传播各节点的权重,直至收敛。
(5)对节点权重进行倒序排序,从而得到最重要的T个单词,作为候选关键词。
(6)由(5)得到最重要的T个单词,在原始文本中进行标记,若形成相邻词组,则组合成多词关键词。例如,文本中有句子“Matlab code for plotting ambiguity function”,如果“Matlab”和“code”均属于候选关键词,则组合成“Matlab code”加入关键词序列。
基于TextRank的关键词短语提取
若原文本中存在若干个关键词相邻的情况,那么这些关键词可以构成一个关键短语。
基于Text Rank的自动文摘
将每个句子看成图中的一个节点,若两个句子之间有相似性,认为对应的两个节点之间有一个无向有权边,权值是相似度。通过pagerank算法计算得到的重要性最高的若干句子可以当作摘要。
计算两个句子和
的相似度:
(1)预处理:将输入的文本或文本集的内容分割成句子,构建图,其中V为句子集,对句子进行分词、去除停止词。
(2)句子相似度计算:构建图G中的边集E,基于句子间的内容覆盖率,给定两个句子,
,计算句子相似度。若两个句子之间的相似度大于给定的阈值,就认为这两个句子语义相关并将它们连接起来,即边的权值
(3)句子权重计算:根据公式,迭代传播权重计算各句子的得分;
(4)抽取文摘句:将(3)得到的句子得分进行倒序排序,抽取重要度最高的T个句子作为候选文摘句。 (5)形成文摘:根据字数或句子数要求,从候选文摘句中抽取句子组成文摘。