基于句子级LSTM编码的文本标题生成
2021-05-14钱揖丽马雪雯
钱揖丽 马雪雯
1(山西大学计算机与信息技术学院 山西 太原 030006) 2(山西大学计算机智能与中文信息处理教育部重点实验室 山西 太原 030006)
0 引 言
文本摘要旨在为一个文档生成简短、连贯且信息丰富的摘要。文本摘要的方法可以分为抽取式和生成式两类。抽取式的摘要从源文本中抽取重要的句子或短语组成摘要,生成式的摘要对文档构建语义表示,使机器理解文本后生成新的摘要。抽取方法比较简单,可以保证单个句子的流畅性并且保留原文信息,但是会出现冗余信息,特别是在生成短摘要的情况下。而生成方法可以生成源文本中没有出现的新单词和短语。当生成的摘要是单个紧凑的句子时,文本摘要任务可以称为标题生成[1-2]。
随着深度学习的发展,序列到序列神经网络模型被广泛应用于自然语言处理任务[3-4]。在文本摘要领域,不同于以往的抽取式方法[5-6],此模型也成为生成式摘要的主要方法[7-8]。序列到序列模型进行标题生成的过程是用编码器对源文本进行语义表示,然后使用解码器生成标题。
长短期记忆网络[9](Long Short-Term Memory,LSTM)由于其设计的特点,可以捕捉到较长距离的依赖关系。而序列到序列模型的编码阶段需要准确理解和表示原始文本,所以双向长短期记忆网络(Bidirectional Long Short-Term Memory,BiLSTM)被提出用来表示文本的上下文语义关联,其在各种对文本进行编码的工作中一直是主导方法[10-11],包括使用神经网络模型进行文本摘要生成时,通过BiLSTM对源文本构建文本语义表示[12-14]。
虽然BiLSTM在文本表示方面取得了很好的效果,但是仍具有一定的局限性。例如,使用BiLSTM对文本进行编码是循环递归进行的,顺序性的特点无法实现并行化,以及上下文之间的语义关联会随着状态的传递逐渐减弱。针对BiLSTM的局限,本文使用的序列到序列模型在编码阶段不采用BiLSTM,而是使用一种句子级LSTM方法对源文本进行编码。其主要思想是在每个重复步骤中对整个文本的所有单词建模隐藏状态,而不是像BiLSTM编码时一个时刻只传入一个单词,即对整个文本构建一个全局信息的句子级状态,同时建模每个单词的子状态作为局部信息。在一个重复步骤中,连续词之间、句子级状态与单词状态之间都会进行信息交换,全面理解文本信息,并且每个单词从向左和向右单词接受信息的语义计算是并行的。得到输入文本的语义信息后使用混合指针网络机制的解码器生成标题。
1 相关工作
目前针对文本摘要和标题生成任务的研究主要是使用序列到序列模型,一般由嵌入层、编码层、解码层和训练策略组成。嵌入层对词进行分布式表示,编码层主要是序列建模,得到源文本语义向量,送入解码层生成摘要或者标题,训练策略是对模型参数进行优化。
在嵌入层,大多数工作使用Mikolov等[15]提出的Word2vec和Pennington等[16]提出的Glove词向量工具对文本向量化。Nallapati等[8]在词嵌入层将词性、命名实体标签、单词的TF和IDF等文本特征融合在词向量中,让单词具有多个维度的意义。Wang等[17]在词向量中加入位置向量作为最终的文本向量表示,丰富词向量的含义。
在编码层,多数模型使用BiLSTM和门控循环单元(Gated Recurrent Unit,GRU)循环神经网络对原文中的每个词进行编码,使得每个词都具有上下文信息。Zhou等[18]在编码器中引入选择门网络,从源文本中提取重要信息,去除冗余信息提高摘要质量。Zeng等[19]考虑到人写摘要时会多次阅读一篇文章,提出一种再读编码器,读取源文本两次,得到比较合理的语义向量。而文献[7,17]使用卷积神经网络(CNN)进行文本编码,去除了LSTM和GRU的循环特性,实现了文本编码时的并行性,从而提升了模型训练速度。
在解码层,一般模型融合可以选择到原始文本重要信息的注意力机制解码生成摘要或标题。Han等[14]提出一种多样性的波束搜索算法,生成多样的候选序列,促进解码生成信息丰富的摘要。针对传统解码方法会带来的错误传播问题,Wan等[20]提出一种双向解码器的序列到序列模型,解码阶段使用前向和后向两种方向的解码器。
针对训练策略,Yana等[21]提出将文本摘要的评价指标融合到优化目标内,使用最小风险训练方法训练模型。Paulus等[22]在传统的损失函数中加入强化学习损失函数,用以解决传统方法带来的暴露偏差和输出结果不灵活等问题。
使用序列到序列模型易产生重复和无法处理词汇表外(Out-of-vocabulary,OOV)等问题。针对这些问题,See等[13]提出了使用指针网络和覆盖机制解决;Lin等[23]在编码器中加入卷积门控单元进行源文本的全局编码,解决输出产生的重复单词或短语问题。
针对BiLSTM自身顺序性特点所带来的问题,本文从文本编码表示部分考虑,在序列到序列模型中采用句子级LSTM编码,得到具有丰富语义特征的上下文文本表示,从而解码生成文本标题。
2 模型设计
本文使用的标题生成模型是基于带注意力机制的序列到序列神经网络模型,也称为编码-解码模型。模型分为对输入文本进行语义编码和解码生成文本标题。对此,生成任务形式化为:给定一篇输入文本x={x1,x2,…,xN},其中N为文本的单词个数,即文本长度。将文本x作为输入,编码得到隐藏状态序列h={h1,h2,…,hN},经注意力机制计算出上下文向量c=g({h1,h2,…,hN}),其中g是组合隐藏状态的函数,解码生成一个长度为T 标题生成模型的编码层是对给定的文本进行上下文语义编码。本节主要介绍序列到序列模型中基础的BiLSTM编码以及本文使用的句子级LSTM编码。 2.1.1 BiLSTM编码表示文本 使用BiLSTM编码的带注意力机制的序列到序列标题生成模型的框架如图1所示。 图1 BiLSTM编码的标题生成模型 在BiLSTM编码文本时,BiLSTM由两个方向的LSTM组成,包括从左向右和从右向左对输入文本中的单词循环进行编码。这种结构可以捕捉历史信息和未来信息,从而表征文本的上下文语义信息。在每个方向的LSTM上,输入文本被编码成一个包含所有单词隐藏状态的序列。给定状态初始值,每个时刻t消耗一个单词,循环完整个文本后得到状态序列。 (1) (2) (3) (4) ct=ct-1⊙ft+ut⊙it (5) (6) (7) 对于整个输入文本的语义信息由正向LSTM得到的语义信息(文本最后一个单词的隐藏状态)和反向LSTM得到的语义信息(文本第一个单词的隐藏状态)拼接表示: (8) 2.1.2句子级LSTM编码表示文本 本文在序列到序列标题生成模型中编码器(encoder)部分使用的句子级LSTM编码框架如图2所示。 图2 句子级LSTM编码t时刻框架 由图2可以看出,每个单词hi通过上下文窗口获得一个N-gram的上下文信息,并且与包含整篇文本语义的d进行信息交换;而句子级状态d通过每个单词和上一时刻的全局状态控制当前的全局语义信息。句子级LSTM编码在同一时刻对每个单词并行进行向左向右双向信息流的交换,同一个循环时间步中进行了单词与单词以及单词与整个文本之间的信息交换。 (9) (10) (11) (12) (13) (14) (15) (16) (17) (18) 在t时刻对于整个文本的句子级状态dt的更新计算如式(19)-式(24)所示。 (19) (20) (21) (22) (23) (24) 序列到序列模型的解码层用于标题生成。在解码部分通过对由编码层得出的向量计算注意力权重,得到上下文向量(Context Vector)后作为解码层输入的一部分,并且加入指针机制经过循环LSTM神经网络生成文本标题。 2.2.1注意力机制 注意力机制使标题生成模型在解码的每个时间步集中于输入文本的重要信息,因此注意力机制通过对编码层的输出向量计算注意力分布,得到上下文向量。 在解码的每个步骤t中,注意力分布at表明了隐藏状态序列中所有向量的重要程度,即筛选出文本的重要信息,其计算式表示为: eti=vTtanh(Whhi+Wsst+ba) (25) at=softmax(et) (26) 式中:v、Wh、Ws是权重矩阵;ba是偏置项;hi是编码得到的隐藏状态;st是解码状态。 得到注意力分布后对隐藏状态序列加权和计算出上下文向量ct,计算式表示为: (27) 2.2.2混合指针网络解码生成标题 在解码阶段,使用一个单向LSTM网络逐个生成单词组成标题。解码的第t个时间步骤上,生成的标题词隐藏状态st由前一时刻LSTM单元的隐藏状态st-1,前一个生成步骤的标题词yt-1和上下文向量ct得到。标题词的st与上下文向量ct经过线性层得到词汇分布Pvocab: st=f(yt-1,ct,st-1) (28) (29) 式中:Wv表示权重矩阵;bv表示偏置。 在使用BiLSTM编码的序列到序列模型中,解码层的初始状态s0表示为: s0=tanh(Wese+be) (30) 式中:We是权重矩阵;be是偏置项;se表示两个LSTM最后隐藏状态的前向和后向的连接,如式(8)所示。 而使用句子级LSTM编码的序列到序列模型将解码的初始状态设置为具有整个文本全局信息的句子级状态d: s0=tanh(Wd′d+bd′) (31) 式中:Wd′是权重矩阵;bd′为偏置项。 词汇分布Pvocab是固定词汇表中所有单词的概率分布,预测生成的标题词y的最终概率为: P(y)=Pvocab(y) (32) 由于词表的大小有限,仅使用传统的解码生成不能处理OOV词的分布。因此混合使用指针机制,可以实现从原文中复制关键字[13],用以解决易出现的UNK(Unknown Words)问题。在指针机制中使用一个生成概率p控制解码器生成单词或者复制单词,计算为: (33) 式中:Wc、Ws、Wy表示权重矩阵;bp表示偏置;σ是sigmoid函数。引入指针机制后,可以选择从词汇表分布Pvocab中生成一个单词或者从输入文本的注意力分布at中复制一个单词,结合两者的概率分布,预测单词y的最终概率为: (34) 2.2.3训练策略 (35) 整个文本序列的损失值为: (36) 实验所用数据集是Byte Cup 2018国际机器学习竞赛提供数据集中的训练集,数据来自字节跳动旗下产品TopBuzz开放版权的文章,包含约130万篇文本的信息。通过对训练集所有的数据进行噪声处理后将其划分为训练集、验证集和测试集三个部分,数据分布如下:训练集1 250 970篇、验证集5 000篇、测试集5 000篇。经统计数据集中文本内容的平均长度为598.62,标题的平均长度为11.75。 ROUGE是文本自动摘要常用的评价指标,该指标比较的是自动生成的文本与人工生成的文本(即参考文本),通过计算二者之间重叠单元的数量用以评价摘要的质量。 本文使用计算unigram的ROUGE-1、bi-gram的ROUGE-2和最长公共子序列(Longest Common Subsequence,LCS)的ROUGE-L的F1值作为模型性能的评价指标。 对文本使用Stanford CoreNLP工具进行处理。在所有的实验中,词向量是随机初始化得到,设置词向量的维度为256,神经网络隐藏单元数为256。使用超参数为β1=0.9,β2=0.999,ε=10-8的Adam算法进行优化,学习率设置为0.001,批量大小为20。在测试阶段,设置beam search算法的beam size为5。 实验结果使用Pyrouge工具包计算ROUGE-1、ROUGE-2、ROUGE-L的F1值。 本文利用不同的模型和文本表示方法,在测试数据集上测试,实验结果如表1所示。其中:Lead模型使用输入文本的第一句作为标题;Seq2seq[13]为基础的序列到序列模型,编码部分使用双向LSTM(BiLSTM)对文本进行表示;Seq2seq+point[13]为混合指针网络的序列到序列模型,编码部分使用双向LSTM(BiLSTM)对文本进行表示;RAS-LSTM+point[7]为混合指针网络的序列到序列模型,编码部分使用卷积神经网络(CNN)对文本进行表示;ST-LSTM为混合指针网络的序列到序列模型,编码部分使用本文的句子级LSTM对文本进行表示。 表1 不同方法的ROUGE-F1值对比 % 可以看出:① 新闻类文本的第一个句子通常会涵盖比较丰富的信息,所以Lead方法抽取第一句作为标题,从评价指标来看并不会很差,但是句子一般较长,作为文章标题并不恰当。② 使用神经网络模型方法的实验效果均比Lead方法好,因为序列到序列模型在编码阶段会充分考虑文本的语义信息。③ 在序列到序列模型中加入指针机制效果更好,因为指针机制可以实现从原文中复制单词,解决了UNK问题。④ 与BiLSTM方法相比,使用句子级LSTM实验效果好,表明使用句子级LSTM对文本编码可以获得更加丰富的语义信息。⑤ 使用卷积网络编码获得的是句子的局部语义信息,而句子级LSTM可以获得全局信息,故实验效果更好。 另一方面,使用BiLSTM训练一个批量需要2.1 s,而基于句子级LSTM的标题生成模型需要1.3 s,在整体的训练步骤上要比使用BiLSTM模型快38%的时间,提升了模型的训练速度。 基于句子级LSTM编码的标题生成模型中循环时间步骤和上下文窗口的大小可以通过实验设定。本文选取了1、2、3三个窗口大小在循环时间步1~11上进行实验。图3是针对不同循环步骤和不同窗口大小的实验结果,评价指标选取ROUGE-L的F1值。 图3 不同窗口大小和循环步骤的ROUGE-L F1值 可以看出,循环步骤从1增加到11,ROUGE值呈上升趋势,说明了循环步骤在信息交换中的是有效的。通过比较不同窗口在有限循环步骤中的最高值,可以看出窗口取值为3时得到文本语义信息的效果更好。 基于序列到序列模型的标题生成任务,本文构建了一个句子级LSTM编码的标题生成模型。使用句子级LSTM编码每个单词的局部信息及整个文本的全局信息,局部信息与全局信息之间进行信息交换,为输入文本提供了丰富的上下文信息。不足之处是本文的词向量是随机初始化的,未来将对词向量增加特征融合,丰富词向量的含义。2.1 文本表示
2.2 标题生成
3 实 验
3.1 数据集和评价指标
3.2 实验设置
3.3 实验结果对比
3.4 不同参数的实验
4 结 语