抽取式摘要:TextRank和BertSum

2020 年 4 月 5 日 AINLP


一:内容预告


本文介绍抽取式文本摘要。


文本摘要,按摘要输出的类型,可以分为抽取式摘要(Extractive)和生成式摘要(Abstractive)。


抽取式好比老实人,温顺服从,循规蹈矩,不敢越雷池半步。


抽取式摘要直接从原文中摘取完整的句子,作为文章的摘要,保证摘要在语法和事实上的正确性但无法做到概括文章内容和结合外部知识,缺乏惊艳之感,意外之喜。


生成式好比游侠儿,白马饰金羁,连翩西北驰,金鳞岂是池中物。


生成式摘要可以产生原文中没有的单词和短语,给人耳目一新之感,但是容易野马脱缰,返回不符合语法和事实的结果。


抽取式摘要的方法,包括传统的聚类法和图方法,以及基于深度学习的序列标注法或句子排序法。


本文主要关注以下三个问题:


  • 如何用聚类法做抽取式摘要?

  • 如何用图方法做抽取式摘要?

  • 如何用深度学习的方法做抽取式摘要?



二:聚类法做抽取式摘要


基于聚类法的抽取式摘要,是无监督的文本摘要方法。


一种做法是把整篇文章看做聚类中心,首先计算聚类中心的向量表示。


再把文章拆分成多条完整的句子,计算所有句子与聚类中心的距离或相似度,进行排序,取相似度得分最高的topk个句子,作为摘要。


下面是之前做的新闻自动摘要系统,输入新闻标题和正文,就可以输出新闻摘要。



这种做法有两点比较关键:


一是如何得到更好的句向量。


普林斯顿大学出品的SIF句向量是一种简单有效的方法,比较适合长文本的向量化。


二是如何恰当地切分句子。


如包含书名号和双引号的句子,如何拆分。


这种做法的缺点也比较明显。


一是部分作为摘要的句子太长了,没有进行信息提炼,有违摘要的本质。


二是更长的句子,蕴含的语义信息更丰富,与聚类中心的距离更近,更容易被选取为摘要,显得不够精炼。


当然,也可以使用 K-means 进行句子聚类,将句子分为N个类别。


然后从每个类别中,选择距离聚类中心最近的一个句子,一共得到N个句子,作为最终的摘要。



三:图方法做抽取式摘要


基于图方法的抽取式摘要,是无监督的文本摘要,使用的是TextRank算法。


TextRank源自于PageRank。


PageRank是互联网网页排序的方法,经过轻微的修改,成为TextRank,可用于关键词提取和文本摘要。


01
TextRank与PageRank


PageRank的思想是,对于每个网页都给出一个正实数,也就是PageRank值,表示网页的重要程度。


PageRank值越高,表示网页越重要,在互联网搜索的排序中越可能被排在前面。



假设互联网是一个有向图,节点是网页,每条边附有转移概率。


网页浏览者在每个页面上依照超链接,以等概率跳转到下一个网页,并且在网页上持续不断地进行这样的随机跳转。


整个过程形成了一阶马尔科夫链。


在不断地跳转之后,这个马尔科夫链会形成一个平稳分布,而PageRank就是这个平稳分布,每个网页的PageRank值就是平稳概率。


修改为TexrRank后,公式如下:



在抽取式文本摘要中,TextRank和PageRank的相似之处在于:


  • 用句子类比于网页

  • 任意两个句子的相似度类比于网页转换概率

  • 相似度得分存储在一个方形矩阵中,类比于PageRank的转移概率矩阵


02
TextRank做文本摘要


用TextRank做单领域多文本的自动摘要,过程如下:


  • 把所有文章分割成完整的单句,并整合在一起

  • 计算所有句子的向量表示

  • 计算所有句子的相似度,存放在矩阵中,作为转移概率矩阵

  • 将转移概率矩阵转换为以句子为节点、相似度得分为边的图结构,用于计算句子的TextRank值

  • 按TextRank值对句子进行排序,取topk句子作为摘要。



咦,上面的内容怎么和博客园的一篇文章差不多啊?


是的,因为那篇文章是我写的。


具体的实现,用networkx这个库,可参考我之前在博客园写的文章:


https://www.cnblogs.com/Luv-GEM/p/10884493.html



四:深度学习做抽取式摘要


基于深度学习的抽取式摘要,是有监督的文本摘要,可以建模为序列标注任务或句子排序任务。


建模为序列标注任务,就是为原文中的每一个句子打一个二分类标签(0 或 1),0 代表该句不属于摘要,1 代表该句属于摘要,训练一个标注模型。


所有标注为1的句子,可以作为最终的摘要。


建模为句子排序任务,则是输出每个句子作为摘要的概率,选择概率最大的topk个句子,作为最终的摘要。


《Fine-tune BERT for Extractive Summarization》这篇论文,就是把抽取式摘要,建模为序列标注任务和句子排序任务。


论文对BERT的输入层和Fine-Tuning层进行了修改,使其适用于抽取式文本摘要任务。


论文中的BertSum模型,在CNN/Dailymail和NYT数据集上都表现优异,是当前用深度学习做抽取式摘要的SOTA模型。


论文地址:https://arxiv.org/pdf/1903.10318.pdf


源码地址:https://github.com/nlpyang/BertSum


01
修改输入层


BERT是用MLM和NSP两大任务来进行预训练的,因此输入是token序列,输出则是token序列的向量表示,而不是句子级别的向量表示。


另外,尽管对于句对任务(如文本匹配),BERT使用了 Segment Embedding 来区分两条不同的句子EA, EB,但是抽取式摘要,输入的是两条以上的句子。


因此,论文对输入层进行了修改,以便于对多条句子进行编码。



(一)Encoding Multiple Sentences


在每个句子开头加一个[CLS]标记,在末尾加一个[SEP]标记。


(二)Interval Segment Embeddings


对于句子senti如果i是奇数那么Segment Embedding为EAi为偶数,则为EB以此来区分不同的句子。


如果输入5个句子,那么对应的Segment Embeddings为:



相对位置编码(Position Embeddings)就和原生BERT一致了。


经过BERT的预训练层,得到每个[CLS]标记的向量Ti,作为每个句子的特征向量。


02
定义下游摘要层


论文定义了三种摘要层,叠加在BERT的预训练层上,进行联合训练,做Fine-Tuning。


(一)加线性层


在预训练层加一个简单的线性层,做Sigmoid,得到每个句子作为摘要的概率。



(二)加Transformer层


在预训练层加1个或多个Transformer层,用于提取文档级别的特征,再做Sigmoid。


首先用一个PosEmb函数,把每个句子的位置编码,和每个句子的向量表示Ti结合。



然后送入Transformer层,用多头注意力机制(Multi-Head Attention)和层归一化(Layer Normalization),提取文档级特征。


L表示Transformer的层数,作者分别取1、2、3进行实验,发现L=2时效果最好。



经过L层Transformer做信息提取,得到最终的向量表示hiL进而对每个句子进行标注(或者说二分类)。


(三)加LSTM层


在预训练层加LSTM层,最终的向量
表示hi是LSTM最后一步的隐状态,而是每一步向上输出的向量,最后再做Sigmoid。



得到每个句子作为摘要的概率后,计算二元交叉熵损失,来更新模型参数。


03
实验细节


(一)减少摘要冗余


作者选取在验证集上表现最好的前3个模型,在测试集上进行评估,评估结果取三个模型的平均。


在测试阶段,输入一篇文档,输出所有句子作为摘要的概率,取概率最高的三个句子,作为最终的摘要。


同时,作者采用 Trigram Blocking 的方法,去掉可能造成冗余的摘要句。


具体的做法是,给定已经抽取出来的部分摘要S(多个句子组成),和一个候选句子c,如果S和c之间存在一个重合的语块(由三个单词构成),那么就略过句子c。


(二)实验结果


BertSum模型在两大数据集上进行测试:CNN/DailyMail和NYT,用ROUGE F1 (R-1、R-2 和R-L)作为评估指标,并与多个模型进行对比。


其中,在CNN/DailyMail上的测试结果如下。



从不同模型的对比来看,BertSum模型以较大的优势摘得桂冠,成为新的SOTA。


从自定义的摘要层来看,加Transformer层的BertSum模型,在三个分指标上,都优于加线性层和LSTM层的模型。


此外,进一步的实验表明,Interval Segment Embeddings和Trigram Blocking的引入,都有利于提升模型的效果。





参考资料:

1:《统计学习方法》(第二版)

2:《Fine-tune BERT for Extractive Summarization》


推荐阅读

AINLP年度阅读收藏清单

数学之美中盛赞的 Michael Collins 教授,他的NLP课程要不要收藏?

自动作诗机&藏头诗生成器:五言、七言、绝句、律诗全了

From Word Embeddings To Document Distances 阅读笔记

模型压缩实践系列之——bert-of-theseus,一个非常亲民的bert压缩方法

这门斯坦福大学自然语言处理经典入门课,我放到B站了

可解释性论文阅读笔记1-Tree Regularization

征稿启示 | 稿费+GPU算力+星球嘉宾一个都不少

关于AINLP

AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括文本摘要、智能问答、聊天机器人、机器翻译、自动生成、知识图谱、预训练模型、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLPer(id:ainlper),备注工作/研究方向+加群目的。



登录查看更多
5

相关内容

PageRank,网页排名,又称网页级别、Google左侧排名或佩奇排名,是一种由[1] 根据网页之间相互的超链接计算的技术,而作为网页排名的要素之一,以Google公司创办人拉里·佩奇(Larry Page)之姓来命名。Google用它来体现网页的相关性和重要性,在搜索引擎优化操作中是经常被用来评估网页优化的成效因素之一。Google的创始人拉里·佩奇和谢尔盖·布林于1998年在斯坦福大学发明了这项技术。
【论文推荐】文本摘要简述
专知会员服务
68+阅读 · 2020年7月20日
【ACL2020】基于图神经网络的文本分类新方法
专知会员服务
68+阅读 · 2020年7月12日
基于多头注意力胶囊网络的文本分类模型
专知会员服务
76+阅读 · 2020年5月24日
【ACL2020-复旦大学NLP】异构图神经网络的文档摘要提取
专知会员服务
34+阅读 · 2020年5月1日
【ACL2020-Allen AI】预训练语言模型中的无监督域聚类
专知会员服务
23+阅读 · 2020年4月7日
【综述】关键词生成,附10页pdf论文下载
专知会员服务
52+阅读 · 2019年11月20日
使用BERT做文本摘要
专知
23+阅读 · 2019年12月7日
几种句子表示方法的比较
AINLP
15+阅读 · 2019年9月21日
面试题:文本摘要中的NLP技术
七月在线实验室
15+阅读 · 2019年5月13日
赛尔原创 | 文本摘要简述
哈工大SCIR
22+阅读 · 2019年3月25日
R语言自然语言处理:关键词提取与文本摘要(TextRank)
R语言中文社区
4+阅读 · 2019年3月18日
手把手 | 基于TextRank算法的文本摘要(附Python代码)
大数据文摘
11+阅读 · 2018年12月27日
独家 | 基于TextRank算法的文本摘要(附Python代码)
数据派THU
14+阅读 · 2018年12月21日
赛尔原创 | 用PyTorch搭建抽取式摘要系统
哈工大SCIR
6+阅读 · 2017年9月25日
干货|当深度学习遇见自动文本摘要
全球人工智能
9+阅读 · 2017年7月26日
Visualizing and Measuring the Geometry of BERT
Arxiv
7+阅读 · 2019年10月28日
Arxiv
20+阅读 · 2019年9月7日
Arxiv
5+阅读 · 2019年8月22日
Arxiv
6+阅读 · 2019年8月22日
How to Fine-Tune BERT for Text Classification?
Arxiv
13+阅读 · 2019年5月14日
Arxiv
21+阅读 · 2019年3月25日
VIP会员
相关VIP内容
【论文推荐】文本摘要简述
专知会员服务
68+阅读 · 2020年7月20日
【ACL2020】基于图神经网络的文本分类新方法
专知会员服务
68+阅读 · 2020年7月12日
基于多头注意力胶囊网络的文本分类模型
专知会员服务
76+阅读 · 2020年5月24日
【ACL2020-复旦大学NLP】异构图神经网络的文档摘要提取
专知会员服务
34+阅读 · 2020年5月1日
【ACL2020-Allen AI】预训练语言模型中的无监督域聚类
专知会员服务
23+阅读 · 2020年4月7日
【综述】关键词生成,附10页pdf论文下载
专知会员服务
52+阅读 · 2019年11月20日
相关资讯
使用BERT做文本摘要
专知
23+阅读 · 2019年12月7日
几种句子表示方法的比较
AINLP
15+阅读 · 2019年9月21日
面试题:文本摘要中的NLP技术
七月在线实验室
15+阅读 · 2019年5月13日
赛尔原创 | 文本摘要简述
哈工大SCIR
22+阅读 · 2019年3月25日
R语言自然语言处理:关键词提取与文本摘要(TextRank)
R语言中文社区
4+阅读 · 2019年3月18日
手把手 | 基于TextRank算法的文本摘要(附Python代码)
大数据文摘
11+阅读 · 2018年12月27日
独家 | 基于TextRank算法的文本摘要(附Python代码)
数据派THU
14+阅读 · 2018年12月21日
赛尔原创 | 用PyTorch搭建抽取式摘要系统
哈工大SCIR
6+阅读 · 2017年9月25日
干货|当深度学习遇见自动文本摘要
全球人工智能
9+阅读 · 2017年7月26日
相关论文
Visualizing and Measuring the Geometry of BERT
Arxiv
7+阅读 · 2019年10月28日
Arxiv
20+阅读 · 2019年9月7日
Arxiv
5+阅读 · 2019年8月22日
Arxiv
6+阅读 · 2019年8月22日
How to Fine-Tune BERT for Text Classification?
Arxiv
13+阅读 · 2019年5月14日
Arxiv
21+阅读 · 2019年3月25日
Top
微信扫码咨询专知VIP会员