徐一鸣,易 黎
(1.武汉邮电科学研究院,湖北武汉 430074;2.南京烽火天地通信有限公司,江苏南京 210019)
文本摘要任务的目标是获得一段文字的简要压缩版本,这个任务一般被分成抽取式文本摘要和生成式文本摘要。在该文中主要关注抽取式摘要。
现在,已经有很多神经网络模型应用在文本摘要任务上[1-6]。其中,BERT 预训练模型的使用,进一步提升了抽取式摘要的效果。但是BERT 并不是具体针对某项下游任务,并且其中预训练任务设计仍待商榷。于是人们根据不同任务对BERT 提出改进,针对中文数据集提出了ENRIE[7];MASS[8]提出了同时利用编码器和解码器进行长序列遮盖,提高了模型理解语义的能力;UNILM[9]改变了self-attention的应用,将单向和双向attention 相结合;SpanBERT[10]利用长序列遮盖进行预测遮盖内容;RoBERT[11]取消了NSP 任务,并且采取随机遮盖策略。
该文针对BERT 预训练模型进行改进,使其可以更适应中文文本摘要任务,提高了摘要效果。
BERT(Bidirectional Encoder Representation from Transformers)[12]是由谷歌研发团队提出的,它以Transformer 模型为基础框架,不再使用传统深度学习任务中常用的RNN 和CNN,整个网络结构完全由注意力机制组成。
如果利用BERT 预训练模型进行生成抽取式摘要[13-14],需要它输出每一个句子的token。BERT预训练模型是作为masked-language model来训练的,输出的向量是句子的token。同时,BERT 对于每一个独立的句子有专门的segmentation embeddings,不过它只有两种标签来表示抽取式摘要中的句子。调整输入和BERT的embedding进行抽取摘要,对于连续的句子用EA和EB进行区分。为每一个句子编码时,在一个句子的开头位置放置一个[CLS]token,在句子结尾位置放置一个[SEP]token,让模型可以利用这两个token 来判断句子的独立性,BERT中的三种Embedding如图1所示。
在下游任务中,不再选择简单的sigmod 分类器,而是采用多层的Transformer 层来代替,从BERT 预训练模型的输出中提取侧重于文本摘要任务的文档级特征:
式中,h0=PosEmb(T),T是BERT 输出的句子向量,PosEmb 是将Positional Embedding 加入T的函数;LN是Layer Normalization 处理[15];MHAtt是multi-head attention 处理;上标l表示堆叠层数。最终的输出层仍可以看作是一个sigmod 分类器:
式中,是句子i从l层Transformer 中输出 的向量。在实验中,分别设置Transformer 层数l=1,2,3,最后发现2 层Transformer 表现最佳。
在对原始文本进行预处理的过程中,利用中文分词语料库对原始的文本进行分词分句处理。将切分出的中文词语作为一个token 输入或者进行Mask,分词与输入对比如表1 所示。
表1 分词与输入对比
Mask Language Model(MLM)是BERT 的预训练任务之一,可以理解完形填空任务。在原始BERT中,随机Mask 其中15%的词(在一个滑动窗口里取一个词,10%~15%的比例都可以)如图2 所示,用其上下文来做预测。
改进的BERT 中,不再对15%的token 采取随机Mask,而是选择遮盖连续的token 以达到遮盖序列的效果。如图3 所示,遮盖序列的长度k则是变化的,k的范围在切分出一句话的10%~50%。其中,当k=10%时可以把模型看作原始BERT 中的MLM,而文本摘要任务需要模型同时考虑语义与前后词句之间的关系,所以遮盖长度不能超过50%。同时,不同长度的k在整个训练过程中是同时存在的,它们占整个训练次数的比例不同。
在每次迭代时,都选择一次k的长度,其中,k的长度更倾向于选择短距离,整个训练k的分布近乎几何分布,k的比例与分布如图4 所示。
在训练过程中,这部分被Mask 的词,80%的时间采用[mask]进行表示,10%的时间采用另一个随机的词代替,10%的时间保持原词不变。但是,这种遮盖不再是单个token 的,而是整个序列级别的,被遮盖序列中每一个token 都用[mask]代替。
实验选择使用python3.6,pytorch1.8,CUDA11.1,bert_base_chinese 版本的BERT。在训练过程中,前10 000 步设置学习率如式(4)所示,对模型进行预热以加快拟合速度[16]。
整个模型在一块RTX3070 显卡上训练,每次训练100 000 步,每隔1 000 步在验证集上设置一个模型检查点进行保存和评估。根据验证集上的评估损失选择前三个检查点,并反馈测试集上的平均结果。
该文选取的数据集是LCSTS。数据集主要分为三部分,如表2 所示。
表2 数据集分布
第一部分是数据集的主要部分,用来训练生成摘要的模型;第二部分是从第一部分数据中随机采样出来的,用来分析第一部分数据的分布情况;第三部分作为测试集。
实验中,不同模型生成的摘要如表3 所示。
表3 生成的文本摘要
通过表3 可以看出,该文改进的BERT 生成的摘要信息相比BERTsum 更加简洁,反映的原文信息更加精准,更贴合人工摘要的效果。
当然,人工评价具有一定的差异性,该文采用针对文本摘要任务专用的评价指标Rouge,其中,Rouge_R 代表召回率,Rouge_P 代表准确率,在文本摘要任务中往往希望召回率和准确率都较高,但是实际情况是两者一般呈反比例,所以主要利用F 值即Rouge_F 进行比较。实验结果如表4-6 所示。
表4 四种模型的Rouge_R
表5 四种模型的Rouge_P
表6 四种模型的Rouge_F
实验中,除了对比原始BERT,还选择采用长序列遮盖策略的MASS 模型和针对中文数据集的ERNIE 模型进行对比。由表中所示,改进的BERT模型对比其他三种模型,在召回率、准确率和F 值上都领先,其中对比原始BERT,F 值高出了10%~17%。
为了在中文数据集上生成文本摘要,对原始BERTsum 进行改进:1)在对数据预处理时,对中文文本进行分词处理,是一个词语生成一个token,再进行输入或mask;2)在BERT 预训练过程中,改变mask 策略,遮盖长度动态的长序列。实验结果表明,相较于BERTsum,改进的BERT 在文本摘要任务上评价指标Rouge-1_F 提高了17.18%,Rouge-2_F提高了10.01%,Rouge-L_F 提高了14.8%。对于BERT 模型,选择遮盖长序列能够获得比随机遮盖单一token 更好的预训练结果。