创新实训(9)-提取式文本摘要之-TextRank

创新实训(9)-提取式文本摘要之-TextRank

1.起源

TextRank的灵感起源于PageRank算法,PageRank是用于计算网页权重的一个算法。

这个算法是基于图的算法,每个网页可以看作式一个图中的节点,如果网页A能够跳转到网页B,那么就有一条从A到B的有向边。这样就可以构造一个有向图。

然后使用下面的公式经过多次迭代就可以获得每个网页对应的权重。

创新实训(9)-提取式文本摘要之-TextRank

下面解释每个元素的含义:

创新实训(9)-提取式文本摘要之-TextRank

2. TextRank提取关键词

提取关键词和计算网页权重类似,只不过将网页替换成了词语。

所以第一步就是分词,每个单词就是图中的一个节点。然后是边的定义,可以利用n-gram的思路,即每个单词只与它附近的n个单词有关,即它与附近的n个词对应的节点连一条无向边。

另外,还需要对句子中的单词进行一部分处理,比如去掉停用词之类的。

下面是论文中的例子:

创新实训(9)-提取式文本摘要之-TextRank

图构建好之后,就可以使用上面的公式进行计算了。

3. TextRank提取文章摘要

上面提取文章关键词是以单词为节点,类比一下,提取文章摘要就应该以句子为节点。但是节点之间的关系如何定义是一个问题,无法使用上面提到的n-gram了,因为相邻的句子之间的关系是不确定的,可能说的完全是两个不同的事。

论文中作者提出了一个计算两个句子之间相似度的方法。这样一来,节点之间的边就变成了加权的边了,权值就是两个句子之间的相似度。

下面是论文中给出的计算两个句子相似度的公式:

创新实训(9)-提取式文本摘要之-TextRank

创新实训(9)-提取式文本摘要之-TextRank

当然使用其他计算相似度的方式也是可以的。

由于使用了带权的边,因此公式也要进行相应的修改:

创新实训(9)-提取式文本摘要之-TextRank基本就是把原来的对应边的部分添加了权重,边的数量改成了权重和。

4.TextRank文章摘要代码实现

这里参考了github上别人已经实现的代码:https://github.com/letiantian/TextRank4ZH

参考链接

https://www.jianshu.com/p/ffaee5708866
TextRank论文:https://web.eecs.umich.edu/~mihalcea/papers/mihalcea.emnlp04.pdf