一种基于深度学习的中文生成式自动摘要方法

2020-04-07 03:26,,,*
关键词:解码器编码器笔画

,,,*

(1.南京信息职业技术学院计算机与软件学院,江苏南京210023;2.南京邮电大学计算机学院,江苏南京210023)

互联网中日益增长的文本数据导致人们需要花费更多时间用于筛选和甄别文本中的关键信息。自动摘要技术作为一种从长文本中获取关键信息的方法,能够降低信息爆炸时代人们信息获取的时间成本,引起越来越多研究者的关注。

自Luhn在文献[1]中提出自动摘要至今,文本摘要领域有了很大的进步,并且开发了大量的技术和方法,这些方法主要分为两类:基于统计的抽取式摘要方法[2]和基于知识的抽象式摘要方法[3]。基于统计的方法[4]主要处理统计特征,有助于从源文本中提取重要的单词和句子。这种技术和语言种类无关,它可以对任何语言文本进行摘要。而基于抽象的方法是在理解整段文本的语义后,机器做出概括性总结。2014年Google和Cho等[5]提出Seq2Seq框架,该框架实现了生成可变长度序列的功能,将深度学习的应用范围从传统的分类回归任务扩展到文本生成领域,是深度学习发展历史上的里程碑。2015年Lopyrev[3]将Seq2Seq框架应用在新闻标题生成的任务上,并加入了Attention机制,提出了Complex Attention和Simple Attention[6]两种方法。

中文信息处理作为专门以中文为研究对象的自然语言处理技术已经在世界范围内得到广泛的重视,并且取得了快速发展。“中文信息处理”可以划分为“汉字信息的处理”和“汉语信息的处理”两个分支,汉字信息处理主要指以汉字为处理对象的相关技术,包括汉字字符集的确定、编码、输入、输出、编辑、排版以及汉字频率统计和汉字的属性库[7]。一般而言,汉字信息处理关注的是文字(特殊图形)本身,而不是其承载的语义信息或者相互之间的语言学关系。自然语言处理(natural language processing, NLP)中“汉语信息”处理包括对传递信息、表达概念的词、短语、句子、短文以及语料库和网页等各种语言表达载体及其不同表达形式的处理技术。

2015年,Hu等[8]公开了中文自动摘要数据集LCSTS,并在词语和汉字两个粒度上使用融合Attention机制的 Seq2Seq 生成式摘要模型。而Rush等[9]也将此框架应用于文档摘要生成任务中,提出了ABS-System(attention-based summarization),在编码端使用Attention机制,在解码端使用了NNLM(neural network language model)[10]模型,改善了模型生成效果,提出了ABS+模型。对抗神经网络GAN(generative adversarial networks)[11]在自然语言处理的文本生成中被用来判断生成文本与真实文本的差异,增强语言模型的健壮性。

本文针对中文的特点,以汉字笔画作为最小粒度,参考Fasttext[12]方法,对中文做笔画粒度的文本编码,获取汉字笔画中的n-gram信息,通过Skip-Gram方法得到对应的中文词向量。然后基于机器翻译中的Seq2Seq[13]模型,在编码器部分使用双向长短期记忆神经网络(long short-term memory,LSTM)以利用从后向前的信息,在通过编码器生成句子语义向量时加入注意力机制(attention mechanism)[14],以计算不同输入词对解码端的影响权重。最后,在测试阶段的解码端加入Beam Search算法,优化生成序列的流畅度,并选择Rouge-N[15]对实验结果进行评价和分析。

1 模型设计

基于Sequence-to-Sequence框架中常用的自编码结构,结合自动摘要任务的特点,设计任务流程如图1所示。

图1 自动摘要任务流程Fig.1 Flow chart of automatic abstract task processing

任务流程的具体步骤:

a) 文本预处理:通过将原文信息分词后,进行词的向量化处理,并构建对应的词汇表,形成的词向量序列作为下一个阶段的输入。

b) 语义理解:循环神经网络的记忆功能,将第一阶段的词向量序列输入编码器(使用Bi-LSTM),编码器生成每一段文本的语义向量并传给下一个阶段。

c) 信息重组:Attention机制根据解码器反馈的隐藏状态以重组出最适合当前时刻的全文语义信息,并将重组后的中间语义信息送至解码器,用于当前时间步的词语预测。

d) 摘要生成:解码器(使用RNN)根据前一时刻预测的词和概括全文语义的中间语义向量来推断下一时刻词的分布,最终生成一个词序列即摘要句。

在上述的4个流程中,针对中文的特点引入笔画向量编码和训练自动文摘的语言模型。为了更加清晰地体现本文模型的结构,在图2中将模型区分为训练阶段和测试阶段两个部分。

图2 训练阶段及测试阶段模块细节Fig.2 Module details in training and testing phases

图2左边为本文模型的训练阶段,箭头表示数据的传输方向以及参数的反向传播,加下划线部分为本文使用的针对中文的笔画编码方式。其余部分包括由Bi-LSTM组成的编码器、RNN组成的解码器以及Attention机制的优化。右边为模型的测试阶段,主要是对训练好的解码器进行测试,输入一段测试文本,通过基于笔画的中文编码后使用训练好的解码器得到生成的自动摘要。在这一阶段,为了最大化生成句子的概率,引入Beam Search增加生成句子的选择范围。

2 基于笔画的中文编码

2.1 中文结构的文本编码

自动摘要是基于机器学习方法来完成对短文本的分析与生成,而机器学习方法输入的只能是向量。Fasttext将英文单词拆分到字母粒度来完成向量初始化,在英文中具有不错的效果。单个英文字符是没有语义信息的,而中文字符包含偏旁部首、字符组件、笔画信息等语义信息特征,中文每个字符都有很强的语义信息。基于偏旁部首和汉字组件特征的中文词向量模型JWE(joint learning word embedding model)[16]已经取得不错的效果,但是也有不足之处。例如,中文字符“智”,它的偏旁部首是“日”,但这个部首语义上和“智”没有什么关联;而按照字符组件可以分为“矢”“口”“日”,这些和原字符也没有什么语义关联。

本文使用和Fasttext类似的方法,将每个词拆分成笔画序列,使用基于笔画的n-gram信息来捕获类似“智”中的“知”这种只有从更小的笔画粒度才能捕获到并且和原字符语义接近的部分,其在中文的词向量表示上带来明显的效果提升。

在词向量编码的方法上,本文使用传统的Word2vec的Skip-Gram训练方法,通过中心词预测上下文。Word2vec中,对于每个字符使用简单的独热(one-hot)编码初始化,并借鉴Fasttext的思想,将每个词语转化成对应的笔画序列,例如:“大学”则会变成“一ノ丶丶丶ノ丶フフ丨一”,对于这样的序列做n-gram切分,切分后的笔画初始化作为输入,这样就可以捕获到汉字之间存在的深层关联。

该方法的意义在于,把汉字拆成笔画或者部首,主要通过笔画或者部首之间的语义信息,丰富文字本身的特征,从而捕获相似字之间的部件结构相似性,增加短语理解所需的特征。从语言学的方面来说,汉字造字上会让相似含义的字词具有类似的结构,这是本文汉字编码方法的理论基础。

2.2 笔画编码方法

汉字笔画细分有30多种,这里将笔画分为5个大类:横、竖、撇、捺,折。如表1所示,将这5个笔画分别使用数字编号,这样方便对应其在字典中的向量。

表1 汉字笔画编码

图3主要介绍了词语拆分成笔画并获取n-gram值的过程,主要分为4个步骤:

a) 将词语拆分成字符;

b) 找到每个字符对应的笔画序列;

c) 对上一步骤得到的笔画序列ID化;

d) 对ID化的笔画序列n-gram求和,每个笔画的n-gram代表一个向量,笔画向量的纬度和上下文单词的词向量纬度一致,在实验中全文出现在不同地方的相同单词和笔画共享相同的向量。

图3 词语拆分成n-gram笔画Fig.3 Words split into n-gram strokes

2.3 笔画向量算法

一个单词和他的上下文单词具有较高的相似性,当前词w和其上下文单词c的相似性使用它们的向量内积来表示f′sim(w,c)=w·c,其中w和c分别代表w和c的向量表示。给每个笔画的n-gram和每个上下文单词分配一个向量,并且根据组成当前词w的所有笔画n-gram向量和上下文词的词向量内积和来计算相似性。将语料库中所有单词的笔画n-gram向量保存在字典S中,其中S(w)表示单词w的笔画n-gram集合,相似性函数即为:

(1)

其中q为S(w)的元素,q为q的嵌入向量。

语言模型旨在预测一句话出现的概率,Skip-Gram模型使用中心词w预测上下文c,即为计算概率p(c|w),这里使用Softmax函数来计算这个概率:

(2)

c′属于语料库字典V中的一个单词,可以发现分母的计算量为|V|,对于以上分母的计算使用负采样方法来加速,负采样的思想在于降低负样本的个数以降低模型需要更新的权重个数。例如输入“大学”,使用one-hot编码时,在输出层希望对应“全国”和“排名”词语的神经元节点输出1,如果|V|的大小为10 000,那么剩下9 999个节点希望输出为0,这9 999个样本在这里就是负样本,负采样就是从9 999个负样本中抽取5~20个来更新其权重,其余权重不更新,以达到降低计算量的效果。基于负采样的损失函数为:

(3)

其中:D为语料库中所有单词训练的集合;T(w)为窗口内当前词的上下文单词;σ为sigmoid激活函数,σ(x)=(1+exp (-x))-1;λ为负采样样本个数;Ec′~p为期望,使得负采样的样本符合p分布。笔画编码的详细算法见算法1。

算法1Stroke Embedding。

参数:最大输入长度max_size;起始索引index;新的n-gram字符Char_new;更新中的字典vocabulary。

输入:某个中文词。

输出:其预测上下文词。

1.对词中每个汉字在对应笔画表中找到笔画序列并合并;

2.对笔画序列ID化为序列 stroke;

3. if index>max_size:break

For 3

Char_new=标记+ -strok[起始索引,起始索引+n_gram];

if Char_new不在vocabulary:add in;

4.在建立好新的笔画加词语字典后,送入Skip-Gram训练;

5.获得对应的词向量权重;

6.End。

Stroke Embedding算法的一个重要参数是n_gram,考虑到汉字的部件笔画数的大小,这里对它的取值为3、4和5,以捕获汉字中包含的大部分部件信息。

3 Seq2Seq模型的文本生成

3.1 基于Bi-LSTM的编码器设计

LSTM是一种时间循环神经网络,适合于处理和预测时间序列中间隔和延迟相对较长的重要事件。LSTM的主要思想是门控单元以及线性连接的引入。其中门控单元的作用在于有选择性地保存和输出历史信息,而线性连接可以看作是LSTM的“主干道”。通过加法,LSTM设计了每个时刻长时记忆单元Ct,存储每个时刻的重要信息,可以无障碍地在这条主干道上传递,因此LSTM可以更好地捕捉时序数据中间隔较大的依赖关系。

在LSTM中,长时记忆单元通过乘性操作和加性操作来保存信息。简单来讲,加法可以对信息做简单的叠加,而乘法因为乘到0就会变成0,更多是用来控制和缩放。在LSTM中,每个时刻到来的时候,通过“遗忘门”来忘掉一些信息再考虑要不要接受这个时刻的新信息。

但是LSTM对一个句子建模存在的问题是:无法编码从后向前的信息。在情感分类中,如果进行更加细致的分类,例如强褒义、弱褒义、中性、强贬义、弱贬义,需要对一些情感词、否定词的程度进行交互,LSTM仅仅通过单向对句子编码就会削弱长距离词之间的情感程度。例如“这家电影院音效差得不行”,其中“不行”是对“差”的程度加以修饰,加强这句话作为贬义的程度。因此在长文本序列中,能够更加完整捕获文本的语义至关重要。本文通过双向长时记忆网络(Bi-LSTM)可以捕捉双向语义依赖。图4为Bi-LSTM网络结构示意图。

图4 Bi-LSTM网络结构Fig.4 Diagram of Bi-LSTM

在作为Seq2Seq模型的编码或者解码器时,虽然不需要完成如情感分析的分类任务,但Bi-LSTM对语义向量更精准的定位也可以为文本摘要带来效果上的提升。Bi-LSTM对应的是编码部分,它将输入的句子序列分别正向和反向输入LSTM组成的神经网络中,得到两种顺序下每个单词对应的两个隐藏状态ht和h′t,然后将两种顺序下隐藏状态拼接:

hnew=fconcatenate(ht,h′t),

(4)

即首尾相接,这样就可以在编码部分获得较为完整的语义向量。整个模型的结构示意图如图5。

图5 Seq2Seq模型Fig.5 Seq2Seq model

Bi-LSTM作为本文模型图中编码器部分的主要结构,在获得语义向量C后,将其送至右边解码器来逐步生成序列中每个时间点的词语,训练阶段解码器由RNN单元组成。直观上来讲,该模型将左边输入的一段长度为n的文本输入双向循环神经网络,其中x0,x1,…,xt,…,xn分别表示文本中每个单词对应的词向量,得到语义向量C后,解码过程则是将其作为每个时刻的输入,然后在对应时刻输出一个单词y1,y2,…,ym,这样就可以解码出一段长度为m的文本,其中n和m没有严格的大小关系。由于本文的任务是文本摘要,输入文本长度大于输出文本,因此n>m。以上就是模型的训练过程,在测试过程中,主要使用训练好的解码器模型,通过优化序列生成的方式,最终在测试集上完成实验。

3.2 基于Beam Search的文本序列生成

在Seq2Seq模型训练完成后,需要使用该模型生成新的摘要句,而句子的生成是由每个单词逐渐生成后组成的序列问题。本节探讨集束搜索(Beam Search)方法在文本生成上的可行性。

贪心搜索(Greedy Search)方法在生成句子中第一个单词y1的分布后,根据条件语言模型挑选出最大概率的第一个词y1,然后生成第二个词y2的分布挑选出第二个词,以此类推,这种搜索方法就是贪心搜索。显然,贪心算法挑选的是每个时刻最大概率的单词,容易陷入局部最优,而真正需要的是一次性挑选整个序列y1,y2,…,yn,使得整体条件概率最高,而这种贪心搜索的效果并不管用。

相比贪心搜索只考虑每个时刻当前最大概率的一个单词,集束搜索则是根据概率获取最大的前K个单词,K的大小即为集束宽。图6为Beam Search选取一个最佳文本序列的示意图。

图6 Beam Search示例Fig.6 Beam Search example

假设字典大小为6,详细的步骤如下:

a)生成第一个词y1的概率分布[0.1,0.1,0.4,0.2,0.1,0.1]后,选取其中最大概率的2个词,如图6所示“我”、“在”,作为第一个单词的最可能的选择;

b)针对这两个单词计算第二个单词与之搭配的概率,将“我”和“在”作为解码器的输入,然后再选择概率最大的2个序列,即为“我在”和“在看”,以此类推,最终在遇到结束符〈〗s〉终止。

c)最后可以得到两个序列,“我在看电影”和“在看电影我”,很明显前者概率和最大,所以选择前者作为最终结果。

BeamSearch的算法过程见算法2。

算法2:BeamSearch。

输入:参数θ,beam大小:K, 输入:x。

输出:估计K个最佳摘要。

1. π[0]←{ε}初始化beam;

2. π[1]←{ti|i∈N}将开始时刻概率最大的K个词放入beam中;

3. fori= 2 toN:

4. Sort({ti|ti-1∈π[i-1]})计算beam中每个分支输入到解码器后的输出概率,并对此分支排序,

5. π[i]←K-argmax({ti|ti-1∈π[i-1]}),

6.O=O∪{ti|ti∈π[i] andti=END},π[i]=π[i]-O,

7. 选出最高概率的K个路径,将分支中符合输出的加入O,不符合的加入Beam,

8. End for;

9. 返回O。

在Beam Search的算法中,参数K的大小对测试阶段解码器的解码速度影响较大,一般取值3到7个词之间。

3.3 模型优化

语义向量C作为输入序列的语义压缩以及解码器的输入,因其长度的限制导致无法包含足够多的有用信息,尤其是在自动文摘任务中,编码器输入的序列往往是一段长文本,一个C就无法概括所有的信息,导致模型精度下降,本节基于Attention机制来使得语义向量C保持更多的语义信息。

Attention机制的设计理念来源于人眼对于图片的关注往往集中在某一些重点区域。在Seq2Seq模型中,这种Attention被分配在一些重点单词上,本文的自动文摘任务无法直观地体现这一优点,因此本文使用机器翻译来介绍Attention机制,这两种任务本质是一样的。在机器翻译中,解码器输出的译文中每个单词所受输入单词的影响力各不相同,因此,Attention机制根据不同时刻输入不同的语义向量Ci来解决这个问题,Ci来自编码器隐藏层向量hj与分配的权重aij的乘积和。本文3.1节介绍了LSTM序列里,每个时刻输出的隐藏层向量hi是由当前输出门和当前时刻记忆单元决定的,语义向量是在编码器最后一个单元输出,而使用Attention机制加权求和了每个时刻的隐藏层向量。图7展示了Attention机制的计算方法。

图7 Attention机制Fig.7 Attention mechanism

当计算单词“I”的语义向量C1时,输入序列中“我”的语义信息对其影响应当最大,因此分配给它的权重就应该最大。同理C2和“看”最相关,因此对应a22最大,那么如何计算aij就变成了一个重点问题。

事实上,aij的大小是从模型中学来的,它与编码器的第j-1阶段的隐状态和解码器第i阶段的隐状态有关。例如当计算单词“watch”对应的语义向量C2时,首先通过计算上一个单词“I”与编码器的3个隐藏向量h1、h2、h3的相似度,这也利用了相邻单词语义接近的语言规则。为了更好地说明如何计算aij,将编码器的隐藏状态定义为hj,解码器隐藏层状态定义为hi,Ci的计算公式为:

(5)

公式(5)中V表示输入序列的总长度,hj也是已知的,aij的计算公式如下:

(6)

eij=a(hi-1,hj)。

(7)

公式(6)的aij是一个Softmax的概率归一化输出,eij表示一个对齐模型,用于衡量编码器端的位置j个词对于解码器端的位置i个词的对齐程度(影响程度)。换句话说,解码器端生成位置i的词时,有多少程度受编码器端的位置j的词影响。对齐模型eij的计算方式有很多种,不同的计算方式,代表不同的Attention模型。最简单且最常用的对齐模型是dot product乘积矩阵,即把解码器端的输出隐状态ht与编码器端的输出隐状态hs进行矩阵乘,在计算时是通过计算将要预测的单词的上一时刻与输入序列隐藏状态矩阵的相似性来完成的,常见的对齐计算方式如下:

(8)

score(ht,hs)=eij表示源端与目标单词的对齐方式,常见有点乘、权值网络映射、concat映射几种方法。

不同的单词对齐方式对应着不同的Attention机制。例如,Hard Attention选择编码器隐藏层个数是随机的,按照一定概率选择输入端一部分的隐状态,而不是整个编码器的输入序列,为了实现梯度的反向传播,需要采用蒙特卡洛采样的方法来估计模块的梯度。Local Attention[17]则是在对解码端当前单词预测一个相对在编码器中的位置P,然后基于位置P给定一个窗口,只计算这个窗口中的对应单词的权重大小,最终得到语义向量C。但该方法中预测位置P的准确性是个挑战,且在并非很长的输入序列中,对计算量的降低并不显著。

从公式(8)可知,在计算对齐方式时,解码端输出的每个单词都需要计算与输入序列的对齐方式,编码器的所有隐藏层都要被用来计算相似性,即得到的权重向量aij的长度等于输入序列的长度。Soft Attention就是通过点乘计算单词之间对应方式以确定词之间关联性强弱的方法。

Attention机制都是基于编码端和解码端的隐变量来计算的,得到的是输入序列与输出序列的依赖关系。与以上诸多Attention机制不同,Self Attention 分别在编码端和解码端进行,仅与输入序列或者输出序列自身相关,捕捉编码端或解码端自身的词与词之间的依赖关系,然后把编码端得到的Attention加入到解码端得到的Attention中,捕捉两端词与词之间的依赖关系。Self Attention比传统的Attention机制效果要好,主要原因之一是,传统的Attention机制忽略了输入端或输出端句子中词与词之间的依赖关系。Self Attention的优点在于不仅可以得到输入端与输出端词与词之间的依赖关系,还可以有效获取两端自身词与词之间的依赖关系以及捕获一些代词的意义。其缺点在于计算较为复杂,并且在文本摘要任务中,重点在于捕获文本核心语义而不是词与词之间的语义关联,所以本文使用效率较高的Soft Attention。

4 实验分析

4.1 数据集与预处理

实验使用哈尔滨工业大学取自于新浪微博的大规模中文短文本摘要数据集LCSTS,数据集中包含了200万真实的中文短文本数据和每个文本作者给出的摘要,这个数据集也是目前最大的中文段文本摘要数据集,提供了数据集分割的标准方法,表2展示了3个部分数据集的个数。

表2 LCSTS数据组成

数据集包括3个部分:

a)第一部分是本数据集的主要部分,包含了2 400 591个(短文本,摘要)数据对,这部分数据用来训练生成摘要的模型。

b)第二部分包括了10 666个人工标注的(短文本,摘要)数据对,每个样本都打了1~5分,分数是用来评判短文本与摘要的相关程度,1代表最不相关,5代表最相关。这部分数据是从第一部分数据中随机采样出来的,用来分析第一部分数据的分布情况。其中,标注为3、4、5分的样本原文与摘要相关性更好一些,从中也可以看出很多摘要中会包含一些没有出现在原文中的词,这也说明与句子压缩任务不同。标注为1、2分的相关性差一些,更像是标题或者是评论而不是摘要。统计表明,1、2分的数据少于两成,可以用监督学习的方法过滤掉。

c)第三部分包括了1 106个(短文本,摘要)数据对,3个人对总共2 000对摘要进行了评判,这里的数据独立于第一部分和第二部分。本文选择3分以上的数据作为短文本摘要任务的测试数据集。

数据的预处理阶段极为重要,因为编码器部分数据的格式和标准化对整个实验的影响很大。上述LCSTS的PART 1部分为训练数据,在把训练数据的短文本输入和总结性摘要抽取出来后,需要对其中的一些信息进行替换和处理:

①去除特殊字符,主要包括标点符号以及常用停用语气词和转折词等,如:“「、」、¥、…、啊、阿、哎、而且”;

②括号里的内容,如【开心】,因为数据来源于微博,会有很多动画表情以这种形式存在;

③将所有日期替换为TAG_DATE;

④超链接URL替换为标签TAG_URL;

⑤数字替换为TAG_NUMBER;

⑥英文单词替换为标签TAG_NAME_EN。

4.2 测评方法

在文本摘要任务中最常用的自动评价方法是Rouge(automatic evaluation of summaries usingn-gram co-occurrence statistic)和人工评价。人工评价具有很大的主观性,并且时间成本太高,效率太低。

Rouge基于摘要中n元词(n-gram)的共现信息来评价摘要,是一种面向n元词召回率的评价方法。Rouge准则由一系列的评价方法组成,包括Rouge-N(N=1、2、3、4,分别代表基于1元词到4元词的模型),Rouge-L、Rouge-S、Rouge-W、Rouge-SU等。本文使用的评价方法包括Rouge-1、Rouge-2和Rouge-L等3种,其中Rouge-L中的L即是LCS(longest common subsequence,最长公共子序列)的首字母。

Rouge-N的计算公式如下:

(9)

其中:n-gram表示n元词;{Ref Summaries}表示参考摘要,即事先获得的标准摘要;Cmatch(n-gram)表示系统摘要和参考摘要中同时出现n-gram的个数;C(n-gram)则表示参考摘要中出现n-gram的个数。

Rouge-L的计算公式如下:

(10)

其中:LCS(X,Y)为X和Y的最长公共子序列长度;m、n分别表示参考摘要和自动摘要的长度(一般就是词的个数);RLCS、PLCS分别表示召回率和准确率;FLCS是Rouge-L分数。

4.3 实验设计与结果分析

首先使用jieba分词包对LCSTS数据集的第一部分分词后,选取50 000个高频词作为编码器词汇表,在词汇表中出现的词使用“UNK”表示。在设置解码器时,一个重要的参数是解码器字典大小,在实验中对解码器字典的参数做了对比试验,分别设置2 000、5 000、80 000、11 000、14 000等5种规格的大小,通过实验选取最佳字典的大小。在编码器中使用4层双向LSTM,每一层节点为256,batch_size为64,定义了Bucket桶机制:buckets = [(120, 30), …],把输入序列的句子按照长度的相似程度分到不同的固定长度的Bucket里面,长度不够的都添加PAD字符,标题长度限制30个词。

用于对比的几种方法为(后两种为本文方法):

a)Tf-idf[18]:抽取式摘要的基线方法。

b) ABS system[9]:生成式摘要的基线方法。

c) Our + att:本文普通词向量输入+Attention机制。

d) Our(S) + att:本文笔画编码词向量+ Attention机制。

表3和表4包括了4组实验数据在解码器字典大小为8 000下的实验结果和Rouge评分(后2组为本文的实验结果)。

表3 不同方法摘要对比

表4 Rouge评分结果

在表3中将本文的方法样例分别对比了抽取式基线方法Tf-idf和生成式基线方法ABS system,在这个样例中抽取了测试集中最具有代表性的例子,对比目标句可以发现,4个模型都对这段文本的摘要有不错的效果。本文的模型输出的句子效果比Tf-idf和ABS system效果更好,语义相对来说更加完整,且生成“华北”这个在原文中没有出现的新词,这一点使得它在总结地区“内蒙古 东北部 山西 中 北部 、 河北 中部 和 东北部 京津 地区 辽宁 西南部 吉林 中部 黑龙江 中部 偏南 等 地”时达到了高度概括的效果。相比于其他两种方法,本文模型在描述上显得更加完整。

在表4中,通过对比4种方法的Rouge-1、Rouge-2、Rouge-L分数发现,生成式方法在Rouge评分是弱于抽取式方法的。主要的原因在于Rouge评分的评价标准是基于词的相似程度,生成式方法在实际效果较好的情况下,很有可能是有一个比较差的Rouge评分。因此,本文实验部分,使用样例展示和Rouge评分两种方法直观地表示模型效果。

在表5中,通过实验对比了解码器字典大小对本文模型的影响。

表5中Ours(S)表示本文的Seq2Seq模型在使用笔画编码后训练得到的模型。当解码器字典大小为2 000时,使用基于笔画的编码来训练模型和使用普通词向量来训练对于模型效果的提升是巨大的,而且在字典大小上升的过程中,Rouge评分只上升了平均4~5分。这一点说明在字典并不完整的情况下,基于笔画的编码通过对汉字最小单元笔画的n-gram信息编码,组合出了较多字典中不存在的“生僻词”,模型在加入笔画编码后对字典的要求依赖降低,并且在效果上有了不错的提升。

表5 不同解码器字典大小的Rouge评分

5 结束语

本文通过一系列自然语言处理技术,实现了一个更加简明、准确的中文摘要生成方法。首先,针对中文的结构特点提出基于笔画的文本向量编码,构造笔画字典,通过Skip-Gram模型,构成文本向量,完成对汉字部件信息更细致的表示任务。其次,在对文本生成上使用Seq2Seq模型加以优化,包括在编码器中使用Bi-LSTM,在一定程度上解决了长序列文本信息丢失以及从后往前信息的补充问题,使用Attention机制捕获输入与输出词之间的关联强弱性,并在测试阶段的解码器中使用Beam Search优化序列的生成效果。最后基于LCSTS数据集训练模型,通过Rouge评分和人工判断两个方面证实本文的编码方法和模型在文本摘要可读性上效果提升明显。

猜你喜欢
解码器编码器笔画
融合CNN和Transformer编码器的变声语音鉴别与还原
科学解码器(一)
科学解码器(二)
科学解码器(三)
笔画相同 长短各异
——识记“己”“已”“巳”
有趣的一笔画
线圣AudioQuest 发布第三代Dragonfly Cobalt蓝蜻蜓解码器
找不同
基于双增量码道的绝对式编码器设计
一笔画