基于双编码器的中文文本摘要技术的研究与实现
2021-09-16李大舟
高 巍,马 辉,李大舟,于 沛
(沈阳化工大学 计算机科学与技术学院,辽宁 沈阳 110142)
0 引 言
人工生成摘要可以提取文本的有效信息,但是其面临人工资源不足与低效率的难题。自动文摘[1]是自然语言处理领域的重要分支,它是通过计算机对文本信息进行压缩和提取,生成简短的能有效概括文本内容的短文或句子。自动摘要问题可以看成一个输入序列到一个输出序列的映射过程,因此可以采用序列到序列模型来实现生成式文本摘要。随着深度学习技术的不断成熟,研究人员将深度学习与Seq2Seq模型相结合进行生成式摘要的研究。目前,该模型通常采用循环神经网络(recurrent neural network,RNN)来构造编码器和解码器。
1 相关研究
随着深度学习的迅速发展为生成式文本摘要提供了另一种可行性框架,序列到序列模型,基本思想是根据输入序列的全局信息得到与之对应的输出序列,序列到序列模型由编码器和解码器两部分构成。Rush等[2]最先将该模型应用于生成式摘要,将卷积模型应用于对原文档进行编码,然后利用上下文之间的注意力前馈神经网络生成摘要,与之前的生成式方法相比,该模型是在“理解”源文信息的基础上生成摘要。See等[3]采用BiLSTM和LSTM分别构建编解码器,并采用指针机制来缓解未登录词问题,在确保生成摘要语义通顺和精确的基础上又具有新生单词的能力。谢鸣元等[4]考虑文本分类对生成式摘要的影响,利用卷积神经网络对文档进行分类,在Seq2Seq基础上结合文本类别特征生成摘要。侯丽微等[5]用注意力机制计算出关键词语义向量,将其和编码器语义向量、解码器语义向量结合后共同推导下一个词项。Bai等[6]提出时间卷积网络,并在多个数据集中,TCN都得到了比RNN更为准确的结果,TCN是一种新型的可以用来解决时间序列预测的模型。韩建胜等[7]将TCN网络应用于中文文本情感分类,TCN网络对文本特征提取更充分,具有较强的分析文本能力。
本文提出一种模型TCAtten-GRU来改善传统编解码器存在的语义信息不充分、生成的摘要不连贯和重复词汇问题。①在编码器端采用双编码结构,分别用时间卷积网络和卷积神经网络来构造两个编码器。时间卷积网络对源文进行编码得到全文信息,卷积神经网络网络提取文本的高层特征[8],两个结果相融合可以更完整表述源文信息,利用融合后的隐层状态值构建注意力机制。②解码器采用门控循环单元[9](gated recurrent unit,GRU)来构建,同时结合指针机制[10]和集束搜索[11]方法。
2 基于双编码器生成式模型的构建
通过对近年来生成式摘要方法进行研究后,本文提出一种基于encoder-decoder架构的双编码器模型。编码器encoder1采用TCN网络(temporal convolutional network,TCN)来获取全文的语义信息,编码器encoder2采用CNN(convolutional neural networks,CNN)网络来更好地提取文本的高层次特征;将CNN提取的特征信息与TCN每一个隐层状态融合后构建注意力机制;解码器decoder采用单向GRU网络进行解码信息,加入指针机制和集束搜索解决未登录词问题。TCAtten-GRU模型的框架如图1所示。
图1 TCAtten-GRU模型总框架
2.1 构建输入层
在使用双编码器对文本进行编码时,首先构建输入层,双编码器采用共同的输入。先用pkuseg[12]分词工具将源文本切分成词,再用Glove预训练模型对词进行分布式向量表示。设文本D切分成词后可用x={x1,x2,…,xn} 来表示词向量,词向量的维度为m(本文等于256),n为输入序列的长度,将输入序列映射为输入矩阵Mn×m,输入层结构如图2所示,图中n=105。
图2 输入层结构
2.2 时间卷积编码器
采用TCN网络构建编码器encoder1。传统的编码器大多都采用循环神经网络或其变体,但是会存在梯度弥散和梯度爆炸的问题。TCN网络可以大规模进行并行处理,因此在训练和验证时网络的速度都会更快;TCN网络具有灵活的感受野,在处理历史信息长短上更加灵活;TCN网络训练时占用的内存更少,尤其是对于长序列。该网络中,将一维因果卷积[13]和扩张卷积[14]相结合作为标准卷积层,2个标准卷积层与恒等映射封装成一个残差模块[15],残差模块堆叠成深度网络,并用全卷积层代替最后几层的全连接层。dropout层防止网络过拟合,TCN网络框架如图3所示。
图3 TCN网络框架
因果卷积目的在于严格按照时序性对序列进行处理,表现于下一时刻的输出只依赖于上一时刻及其之前的值。输入序列x={x1,x2,…,xn} 在t时刻的输出为yt,则yt可由式(1)表示
yt=f(x1,x2,…,xt)
(1)
因果卷积构建长期的记忆需要扩大感受野,扩大感受野需要非常多的层级数或很大的卷积核来实现。但是卷积层数的增加会带来训练复杂、梯度消失以及拟合效果不好等问题。扩张卷积可以在保持参数和输出大小不变的前提下,解决这些问题。扩张卷积不仅可以扩大感受野、降低运算量,还可以获取更多的上下文信息。卷积核F={f1,f2,…,fK},在扩张系数为d处xt的扩张卷积F(xt)为式(2)
(2)
式中:K为卷积核大小,扩张系数d代表两个卷积核之间插入的零值个数。xt-(K-k)·d表示为F(xt)采用上一层的元素单元。为了确保卷积核在很长的历史信息中覆盖更多的输入序列,令扩张系数随着网络深度的变化以2的指数增大,图4为扩张卷积网络结构。
图4 扩张卷积网络结构
每一次扩张卷积运算后都用ReLu函数进行非线性变换,式(3)~式(5)为扩张卷积的运算方式
ht=Conv(Mt×Fj+bt)
(3)
{h1,h2,…,hn}=LayerNorm({h1,h2,…,hn})
(4)
{h1,h2,…,hn}=ReLu({h1,h2,…,hn})
(5)
其中,ht是t时刻TCN网络得到的状态值,Conv表示卷积操作,Mt是t时刻网络计算的词的矩阵,Fj是第j层的卷积核,bt是偏置。LayerNorm表示每次扩大因果卷积结束后,对参数进行层级归一化,采用ReLu激活函数进行非线性计算,{h1,h2,…,hn} 是经过一次完整的卷积计算而得到的状态值。
引入残差模块解决因网络深度而带来的梯度消失问题。网络越深提取的特征越丰富,得到的语义信息也会更具体。如果简单的加深网络层数会出现梯度消失或梯度爆炸,通常采用冗余层恒等映射来解决网络退化的问题。设网络的输入为x,期望输出为H(x),恒等映射函数可表示为H(x)=x,但是网络层学习恒等映射非常困难。因此将恒等映射转换为残差函数采用F(x)=H(x)-x,当F(x)=0就构成了恒等映射。为了保持输入和输出维度一致,采用全卷机网络代替全连接层,实现端对端的序列预测效果。每一个隐藏层维度保持与输入层维度相同,并通过填充操作保持和输出层维度相同。
2.3 卷积网络编码器
采用CNN网络构建编码器encoder2。卷积神经网络在图像处理领域表现的十分出色,近年来,有相关研究将其应用在自然语言处理领域。如2017年,Facebook[16]公司提出基于CNN网络的Seq2Seq模型,该模型在机器翻译和文本摘要任务中均表现出色,引起学者的广泛关注。卷积网络一方面可以并行运算,提高运行速度;另一方面它的层次结构可以更好地提取文本特征。卷积网络的基本框架如图5所示。
图5 卷积神经网络
oi=ReLu(c⊗xi∶i+h-1+b)
(6)
O=o1⊕o2⊕…⊕on
(7)
激活函数ReLu表示对卷积结果进行非线性映射,b是偏移量,o=[o1,o2,…,on]。oi是当前卷积核在输入矩阵中移动一次产生的结果,o是当前卷积核对输入矩阵做一次完全卷积后的输出结果。将每个卷积结果联合得到最终卷积结果O。本文采用3种尺寸的卷积核,每种尺寸的卷积核数量都是多个,通过不同的卷积核来提取文本特征。最后,将这些特征值联合作为文本的特征表达,并通过填充保证卷积网络的输入和输出的矩阵形状大小是相同的。
2.4 注意力机制
本文将双编码器获得的全文信息和词汇特征融入到注意力机制,改善语义信息不充分等问题,增强对全文的理解。首先对双编码的输出结果进行融合,如式(8)所示
(8)
(9)
(10)
(11)
2.5 解码器
解码器端采用单向GRU网络。解码器的输入由上一时刻t-1解码器的输出yt-1、上一时刻t-1解码器的隐藏状态St-1、当前时刻t的上下文语义Ct,这3部分共同构成。将双编码器的最终隐藏状态作为解码器的第一个输入,GRU网络结构公式为式(12)~式(15)
zt=σ(WzSt-1+WzCt+Wzyt-1])
(12)
rt=σ(Wr+St-1+WrCt+Wryt-1])
(13)
(14)
(15)
P(yt|y1,y2,…,yn,Ct)=softmax(St)
(16)
St=GRU(St-1,Ct,yt-1)
(17)
2.6 指针机制与集束搜索
本文采用指针机制解决未登录词问题(out of vocabulary,OOV),采用集束搜索降低计算复杂度并提高准确率。
模型的词表由文本的高频词汇构成,不在词汇表中的词用UNK表示。指针机制是指在解码器端设置一个指针开关,判断目标词汇yt是复制文本词汇生成还是由GRU网络直接生成。当解码器生成OOV的词,指针开关为复制模式P,指针指向源文本复制相应词汇作为目标词;若不是OOV的词,指针开关模式为生成模式G,由解码器直接从词表中生成目标词汇
P=sigmoid(WsSt+Wyyt-1+WcCt+b)
(18)
式中:P可以看成指针控制开关,概率值很小时复制词语,反之基于词汇表生成新词汇。Ws、Wy、Wc这3个为权重矩阵。
传统的解码器采用的是贪心搜索,即在概率矩阵中选择最大的概率去生成目标词。集束搜索是一种启发式图搜索算法,集束搜索选取前q个最大概率,考虑更多的候选空间,这样可以获得更好的生成结果。本文设置集束搜索的宽度q为10。
3 实验与分析
3.1 数据集
本文采用由B.Hu等[18]构建的中文短文本摘要数据集LCSTS,该数据集抓取通过认证组织的微博。该数据集收集新浪微博上的50个流行官方组织用户作为种子(粉丝超过100万且具有蓝V标志,如人民日报、中国日报、环球时报等),微博文本涉及政治、经济、军事、娱乐等领域。数据集由短文本-摘要构成数据对,主要分为3部分,见表1。
表1 LCSTS数据集介绍
第一部分:这部分是数据集的主要部分,包含2 400 591个短文本-摘要对,用来训练模型。
第二部分:这部分数据是从第一部分数据中随机采样得到的,包含10 666个人工标注的短文本-摘要对,将其作为高质量的训练样本数据。用1-5分对样本进行打分,‘1’表示最不相关,‘5’表示最相关。
第三部分:独立于第一部分和第二部分,包含1106个短文本-摘要对,使用‘3’以上作为测试集。
本文采用第一部分作为训练集,第三部分作为测试集。
3.2 评价指标
本文采用自动文本摘要任务中通用的ROUGE分数作为评价指标,ROUGE是面向召回率的摘要评估辅助工具。该指标思想是将模型生成的摘要与参考摘要中的n元词汇重叠量作为评价依据,生成摘要与参考摘要匹配的n(n取值为1,2,3等自然数)元词语数量越多,ROUGE的评分越高,摘要质量越好。评价指标包含ROUGE-N(N取值为1,2,3等自然数),ROUGE-L等一系列指标。ROUGE-N指标计算生成摘要与参考摘要的n-gram召回率。ROUGE-L指标计算生成摘要与参考摘要两个文本单元之间的最长公共子序列(lcs)。本文采用ROUGE-1、ROUGE-2和ROUGE-L评价文本摘要质量,如式(19)~式(23)所示
(19)
(20)
(21)
(22)
(23)
其中,X表示生成摘要,Y表示参考摘要。Cmatch(1-gram)表示生成摘要和参考摘要1-gram的共现次数,Cmatch(2-gram)表示生成摘要和参考摘要2-gram的共现次数。LCS(X,Y)表示生成摘要与参考摘要的最长公共子序列长度,m表示参考摘要的长度,n表示生成摘要的长度。
3.3 实验环境与参数设置
本文实验环境见表2。
表2 实验环境
实验中,选取50 000个高频词汇构建词汇表。大量的实验研究表明,词向量的维度对模型的表现有着很大的影响。本文通过PIP损失函数找到词向量矩阵偏差与方差的最佳平衡点,选取本文的最优词向量为256维,如图6所示。模型训练的批次大小设置为64,Adam的学习率设置为0.001。
图6 词嵌入维度最优选择
TCN网络参数选优过程如图7所示,扩张系数设置为2i。图7(a)代表TCN网络Loss值随卷积层数变化曲线,当卷积层数为4时,Loss值最小,所以扩张卷积层数设置为4。图7(b)代表TCN网络Loss值随卷积核大小变化曲线,当卷积核大小为7时,Loss值最小,所以卷积核大小设置为7。图7(c)表示TCN网络Loss值随dropout变化曲线,当dropout值为0.25时,Loss值最小,所以dropout设置为0.25。
图7 TCN网络参数择优曲线
CNN网络参数选优过程如图8所示,CNN网络卷积层设置为3,卷积核个数设置为256个,卷积滑动步长设置为1。图8(a)代表CCN网络Loss值随卷积层数变化曲线,当卷积层数为3时,Loss值最小,所以扩张卷积层数设置为3。图8(b)代表CNN网络Loss值随卷积核大小变化曲线,当卷积核大小为1、3、5时,Loss值相较最小,所以卷积核大小设置为1、3、5。图8(c)表示CNN网络Loss值随dropout变化曲线,当dropout值为0.4时,Loss值最小,所以dropout设置为0.4。
图8 CNN网络参数择优曲线
3.4 实验过程与结果分析
第一步:数据处理、分词。本文采用pkuseg分词[12]工具对文本进行分词,pkuseg是由北京大学语言计算与机器学习研究组研制推出的一套全新的中文分词工具包。该分词工具支持多领域分词,分词准确率较高。第二步:构建词汇表。将数据集中的第一部分作为训练集,对其进行分词后,从中选取50 000个高频词汇作为词汇表。构建词向量。采用Glove预训练模型将分词表示成分布式向量。第三步:编码器编码。双编码器共同构建上下文向量,TCN网络对全文信息进行编码,CNN网络提取文本词汇特征。将双编码器进行特征融合得到编码器端的最终隐层状态。第四步:注意力机制。加入注意力机制将固定的上下文语义向量转换为不同时刻结合解码器的上下文语义向量。第五步:解码器解码。解码器的输入为上下文语义向量、上一时刻的解码器隐藏状态和上一时刻解码器的输出。第六步:生成摘要。第七步:评价模型。
本文采用上述数据集进行实验,训练集迭代次数和测试集迭代次数与损失值变化如图9所示。
图9 TCAtten-GRU模型训练集和测试集与损失值变化关系
将该模型与4种代表模型进行对比与分析,分别是Hu等在LCSTS数据集中提出的两种模型RNN[18](编解码器都是RNN,没有注意力机制,编码器的最后一个隐藏状态作为中间语义向量)和RNN content[18](编解码器与上一个模型一致,加入注意力机制)、MC-LSTM+atten[9](编码器采用CNN网络,解码器为LSTM,加入注意力机制)以及BiGRU-GRU+atten[3](编码器采用双向GRU网络,解码器采用GRU,加入注意力机制)。实验详情见表3,每个模型的评分随迭代次数而改变,模型与3个评价指标对比如图10所示。
表3 不同模型的ROUGE评分对比
图10 不同模型的ROUGE评分对比
从表3中可以看出,TCAtten-GRU(本文)模型的3个评分均高于其余4种模型。采用TCN和CNN作为双编码器可以更好的对源文进行编码,得到更为充分的上下文语义向量;加入指针机制更好地解决了未登录词问题;集束搜索可以生成更好的摘要。表4为测试结果的例子。
表4 不同模型的生成摘要结果
4 结束语
本文通过对生成式摘要任务进行研究,在传统Seq2Seq模型的基础上提出了一种模型TCAtten-GRU。该模型采用双编码器结构并融入注意力机制,解码器端加入集束搜索和指针机制。TCN网络编码器对文本进行全文编码,CNN网络编码器可以更好提取文本特征,将双编码的结果相融合共同构建注意力机制以得到更丰富和准确的语义信息。加入集束搜索和指针机制的解码器可以解决未登录词问题并得到更准确的摘要,提高了生成摘要的质量。在LCSTS数据上进行实验后,从ROUGE指标可以看出,本模型与其它4个模型相比有较好的性能。自动摘要根据文本数量和大小来分,可以分为短文本和长文本、单文档和多文档,该模型在处理长文本和多文档时性能还有待提升,所以下一步本模型将进一步改进来解决以上问题。