查看原文
其他

BertSum-基于BERT模型的抽取式文本摘要

刘聪NLP NLP工作站 2023-11-28

写在前面

大家好,我是刘聪NLP。

最近在梳理文本摘要相关内容,翻到一篇19年关于基于BERT模型进行抽取式摘要的老文「BertSum」,在这里分享给大家。该论文一开始挂在arXiv时,为《Fine-tune BERT for Extractive Summarization》,主要介绍了如何使用BERT模型进行抽取式(Extractive)摘要。

paper:https://arxiv.org/pdf/1903.10318.pdf
github:https://github.com/nlpyang/BertSum

后面,又发表于EMNLP2019,为《Text Summarization with Pretrained Encoders》,增加了生成式(抽象式,Abstractive)摘要部分,并对第一版论文进行了部分内容的补充与删减。

paper:https://aclanthology.org/D19-1387.pdf
github:https://github.com/nlpyang/PreSumm

介绍

文本摘要任务主要分为抽象式摘要(abstractive summarization)和抽取式摘要(extractive summarization)。在抽象式摘要中,目标摘要所包含的词或短语会不在原文中,通常需要进行文本重写等操作进行生成;而抽取式摘要,就是通过复制和重组文档中最重要的内容(一般为句子)来形成摘要。那么如何获取并选择文档中重要句子,就是抽取式摘要的关键。

传统抽取式摘要方法包括Lead-3和TextRank,传统深度学习方法一般采用LSTM或GRU模型进行重要句子的判断与选择,而本文采用预训练语言模型BERT进行抽取式摘要。

模型结构

BertSum模型结构如下图所示主要由句子编码层和摘要判断层组成,其中,「句子编码层」通过BERT模型获取文档中每个句子的句向量编码,「摘要判断层」通过三种不同的结构进行选择判断,为每个句子进行打分,最终选取最优的top-n个句子作为文档摘要。

句子编码层

由于BERT模型MLM预训练机制,使得其输出向量为每个token的向量;即使分隔符可以区分输入的不同句子,但是仅有两个标签(句子A或句子B),与抽取式摘要需要分隔多个句子大不相同;因此对BERT模型的输入进行了修改,如下:

  • 将文档中的每个句子前后均插入[CLS]和[SEP]标记,并将每个句子前的[CLS]标记进入模型后的输出向量,作为该句子的句向量表征。例如:文档为”我爱南京。我喜欢NLP。我学习摘要。“,输入序列为”[CLS]我爱南京。[SEP][CLS]我喜欢NLP。[SEP][CLS]我学习摘要。[SEP]“
  • 采用Segment Embeddings区分文档中的多个句子,将奇数句子和偶数句子的Segment Embeddings分别设置为,例如:文档为,那么Segment Embeddings为

摘要判断层

从句子编码层获取文档中每个句子的句向量后,构建了3种摘要判断层,以通过获取每个句子在文档级特征下的重要性。对于每个句子,计算出最终的预测分数,模型的损失是相对于金标签的二元交叉熵。

  • Simple Classifier,仅在BERT输出上添加一个线性全连接层,并使用一个sigmoid函数获得预测分数,如下:
  • Transformer,在BERT输出后增加额外的Transformer层,进一步提取专注于摘要任务的文档级特征,如下:

其中,为句子的句向量,,PosEmb函数为在句向量中增加位置信息函数,MHAtt函数为多头注意力函数,为Transformer的层数。最后仍然接一个sigmoid函数的全连接层,

最终选择为2。

  • LSTM,在BERT输出增加额外的LSTM层,进一步提取专注于摘要任务的文档级特征,如下:

其中,分别为遗忘门、输入门和输出门;分别为隐藏向量、记忆向量和输出向量;分别为不同的layer normalization操作。最后仍然接一个sigmoid函数的全连接层,

实验细节

训练集构建

由于目前文本摘要的数据大多为抽象式文本摘要数据集,不适合训练抽取摘要模型。论文利用贪心算法构建每个文档抽取式摘要对应的句子集合,即通过算法贪婪地选择能使ROUGE分数最大化的句子集合。将选中的句子集合中的句子的标签设为1,其余的句子为0。

模型预测

在模型预测阶段,将文档按照句子进行切分,采用BertSum模型获取每个句子的得分,然后根据分数从高到低对这些句子进行排序,并选择前3个句子作为摘要。

在句子选择阶段,采用Trigram Blocking机制来减少摘要的冗余,即对应当前已组成摘要S和侯选句子c,如果S和c直接存在tri-gram相同片段,则跳过句子c,也就是句子c不会增加在已组成摘要S中。

数据超出BERT限制

BERT模型由于最大长度为512,而现实中文档长度常常会超出。在《Text Summarization with Pretrained Encoders》文中提到,在BERT模型中添加更多的位置嵌入来克服这个限制,并且位置嵌入是随机初始化的,并在训练时与其他参数同时进行微调。

实验结果

主要对比了LEAD、REFRESH、NEUSUM、PGN以及DCA方法,较当时方法,该论文效果确实不错,如下表所示,在三种摘要判断层中,Transformer的效果最优。并且进行了进一步的消融实验,发现采用不同的Segment Embeddings会给结果带来一些提升,但是Trigram Blocking机制更为关键,具体如下表所示。

总结

个人认为该论文是一篇较为经典的BERT模型应用论文,当时2019年看的时候就进行了尝试,并且也将其用到了一些项目中。

放假ing,但是也要学习。

请多多关注本人知乎「刘聪NLP」,有问题的朋友也欢迎加我微信「logCong」私聊,交个朋友吧,一起学习,一起进步。
我们的口号是“生命不止,学习不停”。

往期推荐


CPT模型:一种中文兼顾NLU和NLG的非平衡预训练语言模型

SimCSE论文精读

中文文本匹配数据集整理

一个使模型训练速度提升20%的Trick--BlockShuffle

常用预训练语言模型(PTMs)总结

回顾BART模型

中文机器阅读理解(片段抽取)数据集整理

中文摘要数据集汇总

超详细中文注释的GPT2新闻标题生成项目


继续滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存