基于TextRank的关键词提取算法

基于TextRank的关键词提取算法


前沿

TextRank是一种文本排序算法,是基于著名的网页排序算法PageRank改动而来。在介绍TextRank前,我们先简单介绍下什么是PageRank。另外TextRank不仅能进行关键词提取,也能做自动文摘,这边文章以关键词提取为主,自动文摘部分后续补充。

一、PageRank原理

PageRank是用来计算网页重要性的,将每一个网页看作一个节点,将网页之间的链接看作是节点之间的有向边,网页的重要性取决于链接到它的网页数量以及这些网页的重要性。衡量网页重要性的公式说明如下:

基于TextRank的关键词提取算法

二、TextRank原理

进行关键词提取时,TextRank算法思想和PageRank算法类似,不同的是,TextRank中时以词为节点,以共现关系建立起节点之间的链接,需要强调的是,PageRank中是有向边,而TextRank中是无向边,或者说是双向边。

什么是共现关系呢?将文本进行分词,去除停用词或词性筛选等之后,设定窗口长度为K,即最多只能出现K个词,进行窗口滑动,在窗口中共同出现的词之间即可建立起无向边。

基于TextRank的关键词提取算法

基于TextRank提取关键词的主要步骤:

(1)把给定的文本T按照完整句子进行分割;

(2)对于每个句子,进行分词和词性标注处理,并过滤掉停用词,只保留指定词性的单词,如名词、动词、形容词等。这些词形成候选关键词;

(3)构建候选关键词图G = (V,E),其中V为节点集,由(2)生成的候选关键词组成,然后采用共现关系(co-occurrence)构造任两点之间的边,两个节点之间存在边仅当它们对应的词汇在长度为K的窗口中共现;

(4)根据PageRank原理中的衡量重要性的公式,初始化各节点的权重,然后迭代计算各节点的权重,直至收敛;

(5)对节点权重进行倒序排序,从而得到最重要的T个单词,作为候选关键词;

(6)由(5)得到最重要的T个单词,在原始文本中进行标记,若形成相邻词组,则组合成多词关键词。例如,文本中有句子“Matlab code for plotting ambiguity function”,如果“Matlab”和“code”均属于候选关键词,则组合成“Matlab code”加入关键词序列。