【实验目的】

能根据目标对任意给定的一篇文章进行自动摘要生成。

【实验原理】

TextRank

TextRank算法是一种文本排序算法,由谷歌的网页重要性排序算法PageRank算法改进而来,它能够从一个给定的文本中提取出该文本的关键词、关键词组,并使用抽取式的自动文摘方法提取出该文本的关键句。

TextRank算法过程

TextRank算法的核心公式如下,其中\omega_{\text{ji}}用于表示两个节点之间的边连接具有不同的重要程度:

file

TextRank算法提取关键词和关键词组的具体步骤如下:

1)将给定的文本按照整句进行分割,即T=\lbrack S_{1},S_{2},\ldots,S_{m}\rbrack

2)对于每个句子S_{i} \in T,对其进行分词和词性标注,然后剔除停用词,只保留指定词性的词,如名词、动词、形容词等,即S_{i} = \lbrack t_{i,1},t_{i,2},\ldots,t_{i,n}\rbrack,其中t_{i,j}为句子i中保留下的词;

3)构建词图G = (V,E),其中V为节点集合,由以上步骤生成的词组成,然后采用共现关系构造任意两个节点之间的边:两个节点之间存在边仅当它们对应的词在长度为K的窗口中共现,K表示窗口大小,即最多共现K个单词,一般K取2;

4)根据上面的公式,迭代计算各节点的权重,直至收敛;

5)对节点的权重进行倒序排序,从中得到最重要的t个单词,作为top-t关键词;

6)对于得到的top-t关键词,在原始文本中进行标记,若它们之间形成了相邻词组,则作为关键词组提取出来。

从给定文本中提取关键句时,将文本中的每个句子分别看作一个节点,如果两个句子有相似性,则认为这两个句子对应的节点之间存在一条无向有权边,衡量句子之间相似性的公式如下:

file

S_{i},S_{j}为两个句子,w_{k}为句子中的词。

分子部分的意思是同时出现在两个句子中的同一个词的数量,分母是对句子中词的个数求对数后求和,这样设计可以遏制较长的句子在相似度计算上的优势。

根据以上相似度计算公式循环计算任意两个节点之间的相似度,设置阈值去掉两个节点之间相似度较低的边连接,构建出节点连接图,然后迭代计算每个节点的TextRank值,排序后选出TextRank值最高的几个节点对应的句子作为关键句。

【实验操作】

  1. 使用Python语言,基于TextRank算法编程实现,设置算法参数中的窗口大小k=4。

  2. 《包信和校长在中国科大建校60周年纪念大会上的讲话》进行分析,提取出关键词、关键短语、摘要。

输出如图:

file

file

【结果分析】

可以看出,TextRank自动摘要效果看起来非常不错。

TextRank能有这么好的效果,主要是因为图排序模型是基于全局信息来计算每个顶点的重要性,而不是仅仅使用局部信息。

【参考文献】

[1] Mihalcea R, Tarau P. TextRank: Bringing order into texts[C]. Association for Computational Linguistics, 2004.

[2] 包信和校长在中国科大建校60周年纪念大会上的讲话,
科大-历史文化网, 2018.9.27

最后修改日期: 2019年6月17日

作者

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。