APP下载

中文单文档摘要模型DSum-SSE

2021-08-06赫俊民鲁梦华

计算机工程与应用 2021年15期
关键词:编码器级别文档

赫俊民,鲁梦华,孟 魁

1.中国石化股份有限公司 胜利油田分公司,物探研究院,山东 东营 257093

2.上海交通大学 电子信息与电气工程学院,上海 200240

随着当今世界知识资源日益膨胀,每时每刻都有大量的信息从各种渠道推送给人们,人们在日常生活中能接触到的信息量级也呈几何级上涨。这纷繁复杂数量庞大的各类信息知识和人们有限的获取能力之间存在着信息过载的问题。如何更加快速地将文字中的信息传达给人们,最简单的方式就是对其进行一定程度上的精简。自动文本摘要技术以此为出发点,致力于生成尽可能覆盖原文本所要表达的关键信息,表述简练,并且内容连贯,易于阅读的摘要,保证信息的高覆盖度、低冗余度、高可读性。

早期的自动摘要技术有基于图的打分方法[1]、统计机器学习[2]、构建语法分析树[3]等等,这些方法应用于不同的场景,难以生成质量尚佳的摘要。而在文本摘要的类型上,分为抽取式摘要和生成式摘要两种[4-5]:抽取式摘要直接从原文中抽取字、单词、短语或者句子,大体上按照文本出现顺序将其重新进行组合;生成式摘要则需要对原文本进行更深层次的理解,采用更加灵活的表达方式对其进行重构。

在中文单文档摘要领域,由于缺少可靠的摘要数据集,目前有监督的摘要模型研究方面并不多见,而无监督摘要模型中最为流行的是TextRank[6],它使用句子之间的相似程度建立带权图,并在此基础上获得每句句子的重要性分数,最终选取相对重要的句子作为摘要输出。由于受到其无监督的形式限制,有时难以找到文中相对关键的信息。

本文构造了中文抽取式自动摘要语料库,该语料库题材广泛,摘要数目达到20万篇以上,并在此基础上设计了一种有监督的文档级抽取式摘要模型——DSum-SSE(Document Summarization with SPA Sentence Embedding)。该模型使用含Pointer 机制[7]与注意力机制[8]的摘要框架SPA(Sequence-to-Sequence frame with Pointer and Attention)形成句子级别摘要,作为句子向量的编码,在编码器端引入了选择性编码,并对句子进行层次化的表示,在解码器端则利用极端化的Pointer机制对句子进行摘取,最终获得文档级别的句子摘要。

1 句子级别自动摘要模型SPA

含Pointer 机制与注意力机制的自动摘要框架SPA是一种句子级生成式文本摘要模型,其建立主要目的是替句子级别向量编码提供一个指导,即在完成句子级概括式文本摘要任务的过程中,其编码器所得的输出可以表征句子的特征。本方案将该特征用于文档级别的抽取式摘要任务中。

1.1 词嵌入

词嵌入即将单词的one-hot 编码wi映射为低维稠密向量xi,该向量表征了单词的语法信息和语义信息。在实现上,由于单词的数目非常多,所以单词对应向量的维度通常较高,人为指定单词向量每个维度所对应的含义是极其困难的,本文选用了GloVe(Global Vector)[9]算法进行词嵌入。其核心思想在于,相比单词同时出现时的概率,单词同时出现时的概率的比率能更好地区分单词,其更好地利用了全局上的共现信息。

1.2 端到端框架

端到端(Sequence-to-Sequence)框架[10]是一种新型的编码器-解码器架构,它将序列转化任务处理过程分为两个部分:编码器通过读取输入,对其进行理解和处理,并将其表示为一个包含系统所需信息的稠密向量;而解码器读入编码器生成的稠密向量,将其转化为任务所需的合法输出。

编码器端的输入为单词向量表示序列x=(x1,x2,…,xn),其中xi为一个单词的向量表示,由单词的one-hot编码wi映射得到。考虑到实际的应用中,当前时刻的输出不仅与前一时刻的输入相关,通常和后一时刻的输入也是相关的,所以这里选用双向GRU(Bidirectional Gate Recurrent Unit,BiGRU)[11]作为循环神经网络单元。BiGRU可以结合上下文的信息获得单词在结合整体句子含义的向量(hi,h′i),也可以获得表征了句子整体含义的向量c,其具体表示如公式(1)。

其中,(h1,h2,…,hn)和分别为前向连接所得的所有隐藏状态向量和后向连接所得的隐藏状态向量,函数q有多种类型可以选取,本文将前向连接和后向连接的最后一个隐藏向量hn和相连接的方式来对句子含义进行表示。

解码器端引入了注意力机制,该机制由Bahdanau等人提出,该机制模仿了生物观察行为的内部过程,是一种将内部经验和外部感觉对齐从而增加部分区域的观察精细度的机制。在引入注意力机制之后,解码器端需要的不是稠密向量c,而是对应时间步的向量ct,即对于每一个时间步,均有一个特定的上下文向量ct进行表示。其表示如公式(4):

其中,αti表示在时刻t时输入的单词wt对输入端单词wi关注程度的权重大小,在计算中由单词wt对应向量xt直接参与运算,Bahdanau使用公式(5)、(6)对其进行计算:

其中,eti反映了待编码单词和输入单词之间的匹配程度,单词之间的相关程度越高,该值越高,系统也将越关注该输入单词;We、Ue、ve均为神经网络需要进行训练的参数。

解码器使用GRU 作为循环神经网络单元,通过读取t-1 时刻生成单词的词向量-1,t-1 时刻生成的隐层状态st-1,以及t时刻的上下文向量ct,获得当前时刻t的隐层状态st。特别的,编码器的初始隐层状态通过编码器反向连接的最后一个隐藏层状态计算获得,其具体公式如(7)、(8):

对于t时刻的输出单词的概率分布,由t-1 时刻生成单词的词向量-1,t时刻的上下文向量ct,以及当前时刻t的隐层状态st所决定,这些参数进行一个线性变换之后再归一化,其具体公式如(9)、(10):

其中Wo、Uo、Vo、To为权重矩阵,为神经网络需要训练的参数。

1.3 未登录词问题

未登录词问题是指在输出单词时一些重要词汇并未登陆在词典中,难以在词典中寻找含义近似的词语进行输出,在面对一些名字或者专有名词时该问题尤为突出。这里引入了Pointer机制对其进行处理。

在解码中,选择机制输出概率值pgen,pgen∈[0,1],该值由t-1 时刻生成单词的词向量-1,编码器的隐藏状态st,以及当前时刻t的上下文向量ct计算得到,具体如公式(11):

其中,Ww,Ws,Wc为权重矩阵,bp为偏置项,这些参数需要在网络中进行学习。pgen表征了选择预设词典中单词的概率,该值越高,越容易从原词典中选择单词输出,最终生成某个单词的概率公式具体如式(12):

其中,Pv为在原先词典中采样,得到单词的概率分布。

1.4 摘要重复生成问题

摘要重复生成问题即在摘要生成时,多次生成原来文本中较为重要的部分。针对摘要重复生成问题,本文在处理时引入了Coverage机制[12],该机制的核心思想在于不再关注已经关注过的输入,这也是一个与注意力机制相结合的机制。在注意力机制中,额外引入一个参量covt,该参量表征了对原句中单词提供关注度的累计覆盖程度,其计算如式(13):

该参量将作为计算注意力时的额外输入,因此式(6)可改写为:

其中,We、Ue、Ve为权重矩阵,ve为权重向量。

2 文档级自动摘要模型DSum-SSE

目前文档级别的抽取式摘要还不够成熟,特别是对于中文的摘要,由于中文单词繁多,语法相对复杂,因此本文选择了相对更加稳定的抽取式摘要以保证摘要的可读性。本文所使用的模型主要结合了句子编码框架SPA,并结合其他的方法,构造了一个文档级别的抽取式摘要模型——采用SPA 句子编码的文档级摘要模型(Document Summarization with SPA Sentence Embedding,DSum-SSE)。其整体结构如图1。

图1 DSum-SSE整体结构图Fig.1 Architecture of DSum-SSE

2.1 层次化句子表示

句子是文档级别抽取式摘要的最小单元,在句子级别的摘要框架中,已经实现了句子整体含义的向量表示,且由于原任务也为摘要任务,所以该表示对句子的核心特征加以关注。在此基础上,需要结合文档的整体含义对其进行表示。本文中引入了以BiGRU为单元的循环神经网络,在引入该网络后,输入所对应的隐藏向量即可表示该句子在考量了文档中其他句子含义之后所得的表示向量。

考虑到摘要任务中句子位置的重要性,本文对于句子表示向量额外添加了正弦位置编码[8]。正弦位置编码方法由Vaswani等提出,在该方法中,引入了一个正弦波函数和一个余弦波函数,由这两个函数生成与原表示向量维度相同的位置向量,与原先的表示向量进行叠加。对于表示向量vpos,具体表示如公式(15)、(16):

其中,pos为表示向量vpos在所有表示向量中的顺序位置,dmodel为所有需要添加位置信息的表示向量的总数,在本文中即为待摘要文档中句子的数目。

2.2 句子抽取

对于句子的编码可以将其视为一个编码器,输入为未经处理的原文本信息,输出为句子的表达向量,在经过编码器的编码,得到句子结合全文信息和位置信息之后的表达向量as后,将输入到编码器中,编码器结合表达向量以及编码其中的隐藏向量,利用Pointer机制和注意力机制,对句子进行摘取。

对于句子的编码可以将其视为一个编码器,输入为未经处理的原文本信息,输出为句子的表达向量,在经过编码器的编码,得到句子结合全文信息和位置信息之后的表达向量as后,将输入到编码器中,编码器结合表达向量以及编码其中的隐藏向量,利用Pointer机制和注意力机制,对句子进行摘取。

Pointer机制原先应用于生成式摘要,它克服了生成式摘要很难解决的未登录词问题,在输出词汇进行选择时会有倾向地从原文本中或者词汇表中选取。而处理抽取式摘要时也可以利用这种思想,不同的是,抽取式摘要对的全部内容都从原文本中进行选取,是一种极端化的Pointer机制。

句子在选取时,首先通过句子结合全文后的表示向量as使用注意力机制得到上下文向量et,再结合表示向量as上下文向量et对句子抽取的概率进行计算,其具体的计算公式如式(17)、(18):

zt表示解码器中的隐藏状态,、Wa1、Wa2为需要学习的参数。

此外,在计算得到p(st|s1,s2,…,st-1)之后,接下来面临的问题可以看作一个搜索问题,本文在这里选用了集束宽为4 的集束搜索[13],这可以在权衡运算时间的情况下尽可能输出近似最优的。

2.3 选择性编码

对于篇幅不长的文档来说,前文中所做的处理能在较短时间内得出质量较好的摘要,但是随着篇幅的增加,考虑的信息量也大大增加,摘要质量会有所下降。考虑到实际上即使是较长的文本,表达其主旨的句子在总体中的占比也是较低的,所以引入选择性编码,以对一些无重要信息的句子进行剔除。

选择性编码[14]原用于句子级别的生成式摘要任务,实现于端到端框架之下,由Zhou 等人提出。将该方法迁移到文档级别的摘要任务中同样适用,这里将原先编码器的GRU 单元中最后一个时刻的前向表示向量hn和后向表示向量相连接,以作为文档主旨的表示向量vdoc。之后将vdoc和句子表示向量as作为参数输入到选择门sGate中,并得到新的表示向量as,其具体如公式(22)、(23):

其中,Wg和Ug为需要训练的参数。

3 实验与分析

3.1 数据集说明

本实验中使用的句子级别的文本摘要以LCSTS(A Large-Scale Chinese Short Text Summarization Dataset)[15]作为数据集,其数据来源于知名社交平台微博,其中包含了超过200 万真实的中文短文本数据,以及每个文本作者给出的摘要,同时作者团队手动标注了10 666份文本摘要。

文档级别的文本摘要数据集使用了本文自己构造的数据集CDESD,其中包括超过20 万对的文档以及其对应抽取式摘要,该摘要来源于清华新闻数据集,其中包括时尚、金融、体育等各种新闻类别,对应的摘要通过手工标注得到,并抽取其中数目超过5 000的数据对,由专业人士进行了评判,其表现良好。原文的篇幅从300字以上到近2 000字不等,摘要的篇幅则在400字以下,多为300字左右。

3.2 实验结果与分析

3.2.1 句子级生成式文本摘要模型SPA

在词向量的编码方式上,选择GloVe 方法,生成的词语与向量对超过60 万对,向量维数为300 维。所设置的训练批次大小为64,即一次输入64 个原文本和对应摘要组成的二元组,所使用的优化方法为Adam,学习率会不断衰减,考虑到时间成本与准确率,将其初始值设为0.003。在编码器中,取输入训练集中频率最高的词汇作为源端词汇表,共计30 000 个,其余单词使用作为替换,以保证此表中包含大部分常用词,并忽略一些专有名词。双向门化循环单元中,隐藏层大小设置为150。在解码器中,门化循环单元参数设置与编码器端一致,解码时的单词搜索方式为集束搜索,集束宽为4。

本文中所使用的句子级别摘要算法SPA 将与以下的模型进行比较:

(1)RNN:由双向门循环单元和单向门循环单元分别作为编码器和解码器,由Hu等人提出[15]。

(2)SRB:在端到端框架下通过提高最高语义相似度以提高摘要性能,由Ma等人提出[16]。

(3)CopyNet:结合Copy机制的端到端框架,以解决未登录词问题,由Gu等人提出[17]。

(4)DGRD:在编码其中加入变分自动编码机制(Variational AutoEncoder,VAE),由Li等人提出[18]。

(5)CGU:在端到端框架中,引入新的全局编码机制以处理中间向量,由Lin等人提出[19]。

(6)superAE:在端到端框架中加入针对摘要的自编码器对学习过程加以引导,由Ma等人提出[20]。

表1 展示了本文所使用的模型与上述模型性能的差异。可以看出,本文所使用的SPA 模型取得了36.03的ROUGE-1、23.32 的ROUGE-2 及34.31 的ROUGE-L的结果,相比于效果表现最好的CGU模型和superAE模型还有一定差距。但是其较好的表现可以证明其对句子编码有出色的表达能力。

表1 LCSTS数据集上的ROUGE分数Table 1 ROUGE score on LCSTS dataset

3.2.2 文档级抽取式文本摘要模型DSum-SSE

在文档级别模型的训练中,训练的批次大小为64,所使用的优化方法为Adam。考虑时间成本与准确率,初始学习速率设置为0.003。

由于在句子级别生成式摘要模型中编码器的GRU单元隐藏层大小设置为150,所以文档级别抽取式模型中句子向量的表示长度为300,编码器中GRU单元的隐藏层大小设置为256。

考虑到当前没有非常成熟的中文文档级别的抽取式摘要数据集,所以当前性能较好的文档级别有监督抽取式摘要模型很难找到,因此这里选取了无监督模型中性能表现较好,也是现在应用最多的TextRank 模型作为比较。在TextRank 模型的设置中,首先对文档中每句句子进行打分,并按照分数对其进行降序排列,抽取当前分数最高的句子加入输出的摘要句集合中,直至字数达到所要求的上限,或是已经输出原文档中的所有句子,这里设置的文本字数上限为300,最后再将输出摘要句集合中的所有句子按照在原文中出现的顺序进行排序。

使用本文中提出的数据集进行测试之后,本文的抽取式模型和TextRank 模型的具体性能表现如表2。其中,DSum-SSE(wb)指的是将DSum-SSE 模型中句子编码的方式变为所有词向量的均值,DSum-SSE(pos)为加入位置编码的模型,DSum-SSE(Sel)为加入选择性编码机制的模型。

表2 CDESD数据集上的ROUGE 分数Table 2 ROUGE score on CDESD dataset

可以看到模型整体性能远优于TextRank,这是因为有监督模型能够更好地按照数据集的实际情况,对输出摘要的函数进行拟合。

对比不同DSum-SSE设置的实验结果,可以发现:

(1)DSum-SSE(wb)的ROUGE分数相比DSum-SSE低了很多,说明词袋模型对句子含义的表达能力明显弱于SPA模型。

(2)引入了位置编码机制(pos)之后,模型在性能上反而有所下降。因为位置编码原先是应用于使用多头注意力机制来代替循环神经网络模型的。在该模型中,需要通过增加额外的位置信息来避免模型仅仅是一个高明的词袋模型。在DSum-SSE模型中,位置信息实际上是可以通过循环神经网络的训练来获得,尽管引入额外的位置信息可以在一定程度上强调摘要模型中句子顺序位置的重要性,但并非必要。

(3)引入了选择性编码(Sel)之后,模型在性能上有一定提升,这很大程度上在于模型在实现文本摘要的过程中,添加了额外的信息过滤机制,使得摘要在表达上更加精准。

本文还对句子抽取的概率分布进行了可视化的分析。图2 表示了两篇文章在每次选取摘要句子时的概率分布,其中色块的行数表示输出的摘要中句子总数(包含文档结尾符号),列数表示原文档中句子总数(包含文档结尾符号),色块由浅到深表示概率的从低到高。

图2 句子抽取的概率分布图Fig.2 Probability distribution of sentence extraction

可以看到,在应对篇幅不同的文档时,注意力的关注中心基本上均为从文档首渐渐到文档结尾,在少数情况下会发生输出顺序的颠倒,即倾向于先输出在文档中位置靠后的句子,而这种情况更有可能发生在篇幅较长的文档中。考虑到实际情况中,确实有可能出现文本局部上出现倒叙的情况,本文模型在决定输出句子时,考虑了句子的位置信息与语义信息,所以可以对这种倒叙在摘要中修正为正叙,这在很多非重要信息被省略的情况下可以更加通顺地对文章含义进行表达。

4 结束语

文档级文本摘要相比于句子级别的摘要,在信息的总量上更多。但在中文单文档摘要领域,由于缺少可靠的数据集,有监督的摘要模型并不成熟。

本文构造了一个中文抽取式自动摘要语料库——CDESD,文档题材类型包含时尚、金融、体育、财经、政治等各方面,摘要数目超过20万篇。在此基础上,设计了一个有监督的文档级别文本摘模型DSum-SSE,将句子级别的生成式摘要作为一个子任务进行讨论。在本文构建的中文语料库上进行实验的结果表明,DSum-SSE可以生成更优质的摘要,有能力代替现在流行的无监督式抽取式摘要算法TextRank。

目前DSum-SSE还存在一定不足,模型在摘要的篇幅上输出较为固定,即本文模型很难对于一篇较长的文档给出多个压缩程度不同的摘要。在之后的研究当中,可以考虑构造同一原文本对应多个篇幅不同摘要的数据集,训练多个适应于不同状况的模型。

猜你喜欢

编码器级别文档
浅谈Matlab与Word文档的应用接口
痘痘分级别,轻重不一样
有人一声不吭向你扔了个文档
基于FPGA的同步机轴角编码器
迈向UHD HDR的“水晶” 十万元级别的SIM2 CRYSTAL4 UHD
新年导购手册之两万元以下级别好物推荐
基于双增量码道的绝对式编码器设计
你是什么级别的
基于RI码计算的Word复制文档鉴别
JESD204B接口协议中的8B10B编码器设计