基于双编码器结构的文本自动摘要研究
2020-06-18冯读娟严建峰
冯读娟,杨 璐,严建峰
(苏州大学 计算机科学与技术学院,江苏 苏州 215006)
0 概述
文本摘要的目的是简化句子以抽取文本主要信息。目前,文本摘要按照文档数量可以分为单文档摘要和多文档摘要,按照实现方式可以分为抽取式摘要和生成式摘要。抽取式自动摘要按照一定的权重计算方法抽取原文本中的重要句子并进行拼接以组成文本摘要[1]。生成式摘要则是计算机读取原文本后,在理解整篇文章的基础上不使用原文句子而直接生成的摘要结果。随着深度学习技术在自然语言处理(Natural Language Processing,NLP)领域的广泛应用,特别是序列到序列(sequence-to-sequence,seq2seq)模型的出现,使得生成式摘要更加流畅和自然。
来自Facebook的RUSH等人[2]较早提出一种Encoder-Decoder框架下的句子摘要模型,其中尝试Bag-of-Words、CNN和Attention-Based 3种编码方式,同时还与抽取式方法相结合,分别在DUC2004和Gigaword数据集上进行对比,结果表明,增加了人工特征的ABS+模型效果优于ABS模型。
CHOPRA等人[3]同样使用卷积网络编码原文,使用循环神经网络(RNN)作为解码器。根据RNN作用的不同,将模型分为RAS-Elman和RAS-LSTM,在Gigaword数据集上对比各模型,结果表明,RAS-Elman模型效果较好。
来自IBM的NALLAPATI等人[4]使用双向门控循环单元(BiGRU)作为编码器对原文实现编码,解码器使用GRU进行解码,同时融合一些特征到模型中,实验结果表明,该方法的性能优于单一使用深度神经网络。BAHDANAU等人[5]提出一种新的解码方式,其解码的源头不仅是编码输出的语义向量,同时构建一种从输入序列中为当前预测词自动搜寻相关部分的机制,即注意力机制,该机制有效提高了神经机器翻译(Neural Machine Translation,NMT)的效果。SEE等人[6]采用BiLSTM编码原文的词向量序列,解码器采用单向LSTM,使用指针网络模型缓解未登录词(Out-of-Vocabulary,OOV)问题,参数复用降低了模型的复杂度。GEHRING等人[7]将CNN用于神经机器翻译任务上,其相比BiLSTM取得了较好的BLEU结果,且训练速度得到较大提高。
本文建立一种新的CGAtten-GRU双编码网络模型以解决文本自动摘要生成问题。通过多层CNN和BiGRU分别构建2个不同的编码器,利用双编码器输出结果建立注意力机制。解码器端使用GRU同时融合Copy机制和集束搜索(Beam-Search)方法进行解码。在大规模中文短文本摘要数据集LCSTS上进行实验,将Rouge[8]作为评价指标,以验证该模型的性能。
1 基于双编码器结构的生成式摘要模型
在自然语言处理过程中,seq2seq模型普遍使用RNN作为编码器和解码器。编码器RNN处理长度为m的输入序列x=(x1,x2,…,xm)并返回状态向量h=(h1,h2,…,hm)。中间向量h进入编码器RNN生成结果y=(y1,y2,…,yn)。解码端利用上一个解码状态st、前一个目标词汇的embedding向量wt以及由编码输出构造的语义向量ct共同生成下一个时间步的输出yt+1。不同的RNN种类以及不同的条件输入,将构造出不同的编码器-解码器架构。
RNN具有记忆功能,每个时间步状态st捕捉之前时间点上的信息。为了规避标准RNN中的梯度爆炸和梯度消失问题,一般使用RNN中的2种改进网络结构,分别是长短时记忆(Long Short-Term Memory,LSTM)网络和GRU。LSTM[9]网络相对于RNN学习速度更快,而GRU网络[10]是LSTM网络的一种变体,其将LSTM的忘记门和输入门合成为一个单一的更新门,同时混合了细胞状态和隐藏状态等。本文模型中全部使用更为简单快速的GRU网络。
目前,在自然语言处理领域,CNN在机器翻译、文本分类等任务中已经有许多应用[11-13]。卷积网络在输入序列的固定大小窗口上操作,使得能够同时计算源句子的所有特征。RNN网络维持整个过去的隐藏状态,无法进行序列内的并行计算。与RNN相比,一系列卷积层操作为获取序列元素之间的关系提供了更快捷的方法。卷积网络处理过程自上而下,所有单词都经历相同数量的变换,而RNN的第一个单词被过度处理且最后一个单词仅被处理一次。
基于以上2种网络结构在编码器-解码器架构中的应用优势与缺点,本文尝试将2种网络结构相融合,构造一种双编码网络结构以对源文本进行充分编码。
将注意力机制引入到初始的编码器-解码器框架中是为了解决传统结构在编码解码时仅依赖于内部一个固定长度向量的问题[14]。单纯的编码器-解码器模型在编码时将所有输入信息压缩成固定长度传递给解码器,这个过程中存在信息丢失问题,导致解码器接收到的语义向量无法完全表示整个序列的信息。此外,输出词汇更多的是受输入序列某些特定部分的影响[15],解码器在生成词汇时缺少选择性关注输入序列的机制,影响了输出的准确率。
注意力机制通过在输入序列上引入注意力权重,优先考虑某些相关信息的位置。本文提出的双编码器模型分别经过卷积网络和RNN,通过结合双编码器的中间输出结果来构造新的上下文向量。
本文CGAtten-GRU模型的整体结构如图1所示。其中,一个编码器encoder-1使用3层卷积网络,另一个编码器encoder-2使用单层双向GRU网络,解码器使用单层GRU网络。
田铭背着范青青下山,他恨恨地问:“那是个什么样的人,让你到现在还忘记不了。”范青青在他的后背上无力地说:“谁说的,早忘记了,你没听见我在叫田铭吗?你为什么都不答应。”
图1 CGAtten-GRU模型整体结构
2 CGAtten-GRU模型构建
2.1 编码器
编码器encoder-1采用单层BiGRU网络读取源文本。GRU网络定义如下:
zi=σ(Wz[xi,hi-1])
(1)
ri=σ(Wr[xi,hi-1])
(2)
(3)
(4)
其中,Wz、Wr、Wh为权重矩阵。
双向GRU网络包含前向神经网络和后向神经网络。由于单向网络结构仅将已经输入的过去的信息存储在隐藏状态中,训练过程中无法使用未来的信息,因此本文实验中使用双向网络结构[16],同时保留来自正负2个时间方向的状态数据。
(5)
(6)
编码器encoder-2由3层卷积网络堆叠而成。文献[17]研究表明,实验过程中卷积网络设置越深的层数,得出的实验结果就越好。但是达到一定深度后,模型的性能不会随着网络层数的增加而一直提升。在本文的中文文本生成式摘要任务中,设置卷积层数为3并作为encoder-2编码器,此时能取得较好的实验结果。
2.2 解码器
st=GRU(wt-1,ct-1,st-1)
(7)
(8)
其中,Wd是权重矩阵,b是偏置向量。
语义向量ct的权重at,i由encoder-2卷积网络的输出结果计算:
(9)
(10)
对以上结果和encoder-1的BiGRU网络输出状态hi进行加权求和,ct的最终结果为:
(11)
结合前一个词的词嵌入向量wt-1、当前语义表示ct、解码状态st三者计算获得输出状态rt。rt通过一个maxout[18]隐藏层与一个softmax层后得到下一个词在词典中的位置:
rt=Wrwt-1+Urct+Vrst
(12)
(13)
p(yt|y1,y2,…,yt-1)=softmax(Womt)
(14)
2.3 Copy机制与集束搜索
由于摘要结果往往包含一些命名实体和稀有名词,且语言本身也会不断产生一些新词汇,即使增大词典也不可能将所有实体名词和新词等全部包含在内,这一问题对摘要结果影响较大。本文模型通过Copy机制[19-20]及Beam-Search[21]集束搜索方法提高摘要准确性。
在模型中使用Copy机制时,有2个softmax层来预测下一个词汇,一个预测该词在原语句中的位置,另一个预测该词在词典中的位置。从源文本复制单词的概率为:
p=σ(Wst+Uct+b)
(15)
集束搜索从左到右生成摘要词汇,每次生成一个词汇时均对结果进行排序,并保留固定数量的候选词汇,固定的数量即集束宽度。集束搜索通过这种剪枝操作能够在一定程度上降低计算复杂度,提高解码速度。本文模型设置集束宽度为12。
3 实验结果与分析
3.1 实验数据集
本文实验使用LCSTS数据集[22],该数据集包含3个部分,如表1所示。
1)第1部分包含2 400 591个短文本-摘要对,是数据集的主要构成部分,这部分数据在实验中用作训练集。
2)第2部分包含10 666个文本-摘要训练对,全部从第1部分数据中随机抽取,人工打分标注在1~5之间,表示文本与对应摘要之间的相关性,“1”表示最不相关,“5”表示最匹配。
3)第3部分包含1 106个文本-摘要对。对于这部分数据,3位志愿者分别独立地对2 000个文本数据进行标记,提取具有相同分数的数据得到1 106个文本-摘要对。本部分数据集独立于第1部分与第2部分。在实验中,本文使用该部分3、4、5评分的数据作为短文本摘要生成任务的测试集。
表1 数据集信息
短文本(ST)、分词短文本(Segmented ST)、摘要(SUM)和分词摘要(Segmented SUM)长度分布情况如图2所示[22]。
图2 数据集文本及摘要长度统计
3.2 实验设置
实验将第1部分数据作为训练集,通过jieba工具将文本及摘要进行分词处理。如图2所示,分词文本长度中位数略大于60,分词摘要长度中位数约为10,因此,在本文实验中,固定文本及摘要长度分别为65和15。剔除分词后文本长度小于10、摘要长度小于5的数据。实际训练数据量为2 340 205,过滤掉60 343条长度不符合要求的数据对。
固定词汇表大小为50 000,从分词处理的数据集中选取50 000个高频词作为词汇表。本文设计的解码器词汇表和编码器相同,同时共用编码器的词嵌入矩阵。批尺寸大小为64,词向量维度为256。本文采用Adam[23]模型优化器,学习率为0.001。所有模型的训练过程都在GTX 1080Ti机器上完成,实验用时2天左右。
测试集使用第3部分数据中评分为3、4、5的文本-摘要组合对,共计725个。实验结果使用Rouge[8]进行评价。Rouge是国际公认的自动摘要评价标准,其通过计算标准摘要与实验摘要结果重叠词汇来衡量摘要质量,例如,使用单词汇、双词汇以及最长公共子序列词汇长度分别计算Rouge-1、Rouge-2、Rouge-L值。在下文的实验过程中,主要使用Rouge-1、Rouge-2、Rouge-L 3个值评价本文的生成式摘要质量,并与文献[22]提出的2个模型进行实验结果对比。
3.3 结果分析
如表2所示,第1组实验模型结构(RNN)为文献[22]提出的第1个模型,其未引入注意力机制,使用RNN做编码器和解码器,且将编码器得到的最后一个隐藏层状态传输到解码器;第2组实验模型结构(RNN context)为文献[22]提出的第2个模型,其在第1组模型的基础上在解码器端引入上下文,将编码器所有状态传入解码器。以上2组实验模型中的RNN结构均采用GRU网络,使用Adadelta作为模型优化器,解码过程中利用集束搜索得到摘要结果。第3组编码器(MC-GRU)仅采用CNN网络,卷积结构与本文模型相同,解码器使用RNN,包括注意力机制。第4组为本文模型,其采用2种编码器结构构建注意力机制,解码器端采用了GRU网络,同时引入注意力及Copy机制并使用集束搜索方法。从表2可以看出,在Rouge评价系统下,本文CGAtten-GRU模型的Rouge-1、Rouge-2、Rouge-L值高于第2组和第3组模型。CGAtten-GRU模型引入2个编码器构造注意力,有效弥补了编码后中间语义向量包含信息不充分的问题,提高了进入解码器的信息量,从而极大地提升了摘要效果。同时,本文模型在解码器端辅助使用Copy机制和集束搜索方法,也在一定程度上提高了摘要的准确性。
表2 4种模型性能对比
4 结束语
本文提出一种基于双编码器结构的CGAtten-GRU模型。构造2种不同的编码器网络结构对源文本并行编码,2个编码器输出的语义向量共同构造注意力机制,以丰富编码输出的中间信息内容,使得解码获取足够的信息从而提高其准确度。结合Copy机制及集束搜索方法解决未登录词问题,进一步提升摘要效果。在大规模中文数据集LCSTS上的实验结果表明,该模型生成的中文摘要质量较高。下一步将改进卷积编码器结构并提高注意力区分度,以改善摘要结果中的词语重复现象。