APP下载

基于句子选择的关键短语生成

2021-10-12罗益超李争彦

中文信息学报 2021年8期
关键词:偏置文档短语

罗益超,李争彦,张 奇

(复旦大学 计算机科学技术学院,上海 200433)

0 引言

关键短语生成是一个在自然语言处理中传统并具有挑战的任务。它可以通过生成的关键短语捕获文档的中心思想。当模型生成一个简洁的输出后(关键短语),我们可以很方便地应用于下游任务。例如,文本分类(text categorizing)[1]、文本摘要(summarization)[2-3]和意见挖掘(opinion mining)[4]等。

在关键短语生成中,根据关键短语是否存在于原文中可以分为抽取式(present)关键短语和生成式(absent)关键短语。传统的方法[5]致力于生成抽取式关键短语,所以这类方法也被称为关键短语抽取。最近很多研究致力于同时生成两种关键短语。Meng等[6]提出了一种基于注意力机制(attention-based)的序列到序列(Seq2Seq)框架[7],并引入了拷贝机制(copy mechanism)[8],从而有效地生成稀有词。Chen等[9]提出了一种结合覆盖机制(coverage mechanism)[10]和回顾机制(review mechanism)的模型,从而生成更多样化的关键短语。Chen等[11]提出了一种利用标题信息去指导生成关键短语的模型。Chan等[12]利用结合自适应奖励函数的强化学习方法去提升模型效果,并生成更多数量的关键短语。

所有这些方法都基于一个序列到序列(Seq2Seq)的框架,它把整个输入文档当成一个序列,平等地对待文档中的每个单词。然而,文档中信息的重要性是不同的。例如,对于科学性论文的摘要,一般包括目的(purpose)、方法(methodology)、实验发现(findings)、实验价值(value)等几句话,而像“目的”、“方法”中很大概率有关键短语,但“实验发现”、“价值”中很少有关键字。因此,利用文档结构去建模句子级信息可以有效减少无效信息,并且能让模型更加致力于重要的部分。

本文提出了一个新颖的方法,叫作句级选择网络(sentence selective network,SenSeNet),其可以自动收集每一个句子的信息并用隐变量隐式地表示句子特征,从而判断这个句子是否倾向于生成关键短语,然后根据二值信号(0、1)引入对应的归纳偏置到原本的序列生成框架中辅助模型生成。在句级选择网络中,需要将平滑连续的句子表示值转化成离散型变量(0、1),这会造成梯度无法回传的问题。所以我们引入直通估计量[13](straight-through estimator,STE)方法来分别处理前向传播和反向传播,从而使模型可以端到端训练。另外,为了保证句级选择网络的性能和效率,本文提出了一个与任务强相关的弱监督信号来监督句级选择网络。

图1 关键短语生成的一个例子注: 粗体单词是present keyphrase,下划线单词是absent keyphrase。其中摘要被分为四部分: 目的(purpose)、方法(methodology)、发现(findings)、价值(value)。

本文在五个数据集上做了实验。实验表明,句级选择网络能够较为准确地选择相对重要的句子,并且在抽取式关键短语和生成式关键短语两部分都有一定的性能提升,尤其是在生成式关键短语部分。为了进一步分析实验结果,本文提出了一个新概念——半抽取式关键短语(semi-present keyphrase)。另外,本文还做了通用性实验,实验表明,该模型在各种序列生成模型中均能发挥有效的作用。

1 相关工作

目前的关键短语生成方法主要分为传统的关键短语抽取(keyphrase extraction)和近期的关键短语生成(keyphrase generation)。

传统的关键短语抽取方法[14-15]直接抽取文中重要片段作为关键短语,它一般分为两步: 候选词抽取和排序。在第一阶段,首先使用一些启发式方法提取一些候选词,例如,词性标注(part-of-speech tags)[16]和N元模型(N-gram)[17],然后将这些候选词依据成为关键短语的可能性被有监督[18]或者无监督[19]的方法排序。传统方法的缺点是不能生成文中不存在的短语。

为了解决这个问题,meng等首先提出了一个基于Seq2Seq模型[20]——CopyRNN。它结合了注意力机制[7]和拷贝机制[8]。这个工作提出了一个大规模数据集KP20k,并将关键短语生成引入深度学习时代。此后,许多方法或者机制被引入到这个框架中用来提高性能。CorrRNN[9]引入覆盖机制[10]和回顾机制来缓解重复和冗余的问题,使模型生成更加多样的关键短语。TG-net[11]充分利用了标题信息并把标题作为一个额外信息去指导原文编码,取得不错的效果。

以上深度学习的方法是基于one2one模式的,具体做的时候,模型会将文档和每一个关键短语一一对应地放入模型中训练,最后用beam-search进行解码,选取概率最高的k个关键短语作为结果,所以这些方法生成的关键短语数量是固定的。Yuan等[21]提出两个方法: catSeq和catSeqD,可以生成不同数量的多个关键短语。它的做法是将一个文档对应的多个关键短语拼接在一起,用分隔符分开,以结束符结尾,拼接后作为一个序列。在解码阶段时,生成的关键短语到结束符为止。这种模式被称为one2many。最近Chan等[12]结合一个自适应的奖励函数的强化学习方法提升模型性能并生成数量更多的关键短语(由于之前的catSeq生成的平均数量小于标签的平均数量)。另外这篇文献中提出了一种结合维基百科语料的评价指标缓解同义词未被合理评价的问题。

本文的工作参考了Yuan等[21]的工作,也是one2many模式,一次生成不同数量的关键短语。和TG-net模型相似,本文的模型也致力于从文中的重要部分抽取关键短语,但是区别于TG-net只关注标题信息,本文的模型更加关注所有重要句子。

2 主要方法

2.1 问题定义

表1 三种不同关键短语的例子

2.2 基于句子选择的编码器

传统的编码器(encoder)模块首先将输入序列x=(x1,x2,…,xT)做词嵌入(embedding),转换成e=(e1,e2,…,eT),然后经过一个编码器层,如双向门控循环单元(GRU)[22]或者Transformer[23]得到隐状态表示H,如式(1)所示。

H=Encode(e)

(1)

在句子选择模块中,本文使用卷积神经网络(CNN)对句子进行分类[24],将之前得到的序列词嵌入表示e按照句号进行分离。第i个句子Si如式(2)所示。

Si=eπi⊕eπi+1⊕…⊕eπi+|Si|-1

(2)

其中,MLP是多层感知机,sigmoid是非线性激活函数,wmi是一个可训练的权重向量。zi是一个二进制控制门,决定句子i是否重要(1表示重要,0表示不重要)。

为了将这个重要性信息反馈给模型,将被判断重要的句子中每个单词都标记1,判断为不重要的句子中的每个单词都标记0,用向量g(长度T)表示。然后用一个embedding矩阵D∈R1×2d对向量g做一个词嵌入,然后得到一个和隐状态H形状相同的矩阵G,将G和H进行同纬度相加得到最终的隐状态F,如式(8)、式(9)所示。

其中,d是隐状态的维度,因为是双向GRU所以需要2d。

2.3 解码器

在解码器中,用编码器得到的最后隐状态F结合注意力机制计算上下文向量u。时间t的上下文向量ut根据式(10)计算:

(10)

图2 基于句子选择的编码器模块注: 底部的圆圈表示词嵌入,顶部的圆圈表示按照句子划分后的词嵌入。句子表示为词嵌入经过卷积网络后得到的。句子重要性为句子表示得到的01标签。隐状态为源词序列经过encoder得到的。最终隐状态为两个同纬度隐状态相加。

其中,αtj表示源序列中第j位置和输出第t个位置的相关性。

在上下文ut的帮助下,解码器可以更好地通过传统的语言模型生成单词序列,如式(11)、式(12)所示。

其中,st代表解码器在t时刻时的隐状态,Softmax可以得到生成词表中每个单词的概率,yt表示t时刻的输出。

由于out-of-vocabulary(OOV),模型不能生成稀有词。因此我们引入拷贝机制到解码器中用来直接从源文档中拷贝稀有词。所以最终生成一个单词的概率被分为两部分——生成和拷贝,如式(13)~式(15)所示。

其中,χ代表源文x中稀有词的集合,Wc是一个可学习的参数矩阵,Z被用于归一化。

2.4 训练过程

2.4.1 标准训练过程和STE优化

为了训练模型,最小化负似然对数按照式(16)计算:

LMLE=-∑logp(yt|y

(16)

然而,在编码器模块中,模型为句子生成了一个二进制离散型表示[见式(7)],这样就造成模型不连续和梯度无法回传的问题。为了解决这个问题,一个通用的方法就是利用策略梯度(policy gradient)从语言模型p(yt|y

在这个工作中,受之前训练不连续的神经网络的工作[13,25]的影响,利用直通估计量(straight-through estimator)去估计二值表示的梯度。对于解码器的一个特定参数θ,估计梯度按照式(17)计算:

(17)

用一个连续并且平滑的函数η来估计之前不连读的离散变量z。本方法在正向传播的时候还是传递0、1离散值,而在反向传播的时候用η的梯度去估计z的梯度。尽管这个估计有一个偏差,但是它在估计离散变量时非常高效。

2.4.2 弱监督训练

由于目前提出的模型只接收源文档和目标关键短语来作为训练指导,而其中句子的重要性特征(0、1)需要模型自己来学习,这会使模型训练得非常困难和缓慢。另外,如果缺乏这部分的监督信息,模型学习到最后很有可能将句子选择层全部学成1或者全部学成0,这样句级选择网络就失去了其作用,模型就退化成了标准的Seq2Seq模型。调研以往的工作可以发现,大部分正确的关键短语都是被直接从源文档中抽取出来的,我们认为存在抽取式关键短语的句子相对比较重要,受Zhou等[26]将弱监督应用于NLP工作启发,我们为每一个句子提出了一个弱监督信号ai∈{0,1},用它来描述这个句子是否是重要的,其中1表示重要,0表示不重要。信号设定来源为: 若这个句子中存在抽取式关键短语或者半抽取式关键短语,则标记为1,反之标记为0。然后将这个弱监督信号添加到模型中,并用BCE loss(Binary Cross-Entropy loss)进行监督,如式(18)所示。

(18)

因此,最后的损失函数如式(19)所示。

L=LMLE+λLBCE

(19)

其中,λ是一个超参。

3 实验部分

3.1 数据集

本文在五个公开科学性关键短语生成数据集上做了实验: Inspec[17]、NUS[18]、Krapivin[27]、SemEval-2010[28]、KP20k[6]。

其中,KP20k中有约50万条数据,比其他数据集规模都大许多,所以下文会以该数据集为重点进行分析。

3.2 实现细节

遵循Chan等[12]工作的实验设计,在预处理过程中,将原文中所有数字用代替,将present keyphrase和absent keyphrase用分割,并且将present keyphrase按照文中出现顺序进行排序。在生成关键短语时,将重复的关键短语删除。另外,为了控制变量来证明句级选择器的有效性,所有baseline参数设置都和Chan等人的工作保持一样,如词表大小设为50 000,隐层大小设置为150。

另外,还有一些文中所提出模型的独特的细节,如设置embedding矩阵D中的纬度d为150,这和隐层的维度一样大,符合模型的设计;卷积神经网络的卷积核大小设置为{1,3,5},通道数为100;BCE损失函数的权重系数λ经过实验调试,在0.08附近模型结果最优。

3.3 Baseline模型和评价指标

由于传统方法性能远远低于深度学习的方法,所以本文只考虑基于Seq2Seq的模型。参考Chan等人[12]的工作,选取四个前人提出的模型并沿用了他们取的模型名: 结合拷贝机制的catSeq[21]、可生成不同数量的catSeqD[21]、结合覆盖机制和回顾机制的catSeqCorr[9]、结合标题信息的catSeqTG[11],其中,后三个模型都是往第一个模型中添加机制或者方法。本文提出的模型也是在catSeq中添加方法,所以其性能也是相对于catSeq的。另外,本文尝试使用不同的编码层(如Transformer、LSTM等)来验证提出的模型的通用性。

先前的一些工作[6,11]从beam-search的结果中切取概率最高固定个数(如5或10)的关键短语作为结果计算评价指标,如F1@5和F1@10。为了更好地评价可变数量的关键短语,Yuan等[21]提出了一个新的评价指标,F1@M。它通过比较所有预测的关键短语和真实标签来计算F1。

本文生成可变数量的关键短语,所以使用F1@ 5和F1@M两个评价指标来分别评价present keyphrase和absent keyphrase。其中需要注意的是,由于生成可变数量的关键短语有可能不足5个,所以计算F1@ 5时,需要将生成不足5个关键短语的例子用随机错误的关键短语补全。

4 实验分析

4.1 Present和absent关键短语预测分析

本文分别评测了模型在present和absent keyphrase上的性能。不同模型在present keyphrase上的评测结果如表2所示。可以看到,句级选择网络的性能在几乎所有数据集上都超过了四个基准数据集,除了在Krapivin数据集上略低于catSeqTG模型。事实上,本文提出的模型相对catSeq性能有一定的提升。经统计分析,Krapivin数据集中关键短语更多地集中于标题中,而catSeq-TG则更加关注标题信息,所以结果会比本文模型略好一点。

表2 Present keyphrase在五个数据集上的预测结果

Absent keyphrase上的结果展示在表3中。可以观察到,句级选择网络在所有数据集上都取得了最好的结果,并且性能得到了显著的提升。

表3 Absent keyphrase在五个数据集上的预测结果

Present和absent keyphrase取得如此显著的成果,证明了我们提出的句级选择网络能有效利用句子信息,过滤不重要信息,使模型更加集中于重要的信息。

4.2 Semi-present关键短语预测分析

在本节中,为了验证前一节提出的观点,我们分析了句级选择网络在semi-present keyphrase上的性能。根据统计,semi-present keyphrase占所有keyphrase的7.9%,而absent keyphrase占所有的41.3%。又根据定义semi-present属于absent keyphrase,所以semi-present占absent中的很大一部分。因此,若能改进semi-present的准确率,就能很大程度提升absent的性能。

表4中比较了所有基准模型在semi-present keyphrase上的性能。由于现有的模型在生成absent keyphrase上F1值非常低,所以我们选取正确预测的关键短语数量和Recall值作为评价指标,来分析semi-present keyphrase和absent keyphrase在除去前者剩下部分(用 absent w/o表示)中的效果。可以发现,不管是semi-present keyphrase还是absent keyphrase,模型SenSeNet的性能都有很大提升。特别是在semi-present keyphrase上,SenSeNet相对于基准模型在召回率上提升了0.6%,同时在absent w/o上提升0.4%,所以能在absent关键短语上取得性能的显著提升。

表4 Semi-present keyphrase和absent w/o keyphrase (除去semi-present)在KP20k数据集上的结果

4.3 句子数量对预测的影响

在本节中,重点分析了文档句子数量对SenSeNet预测关键短语性能的影响。本文将测试数据集按照文档句子数量分为5份,然后计算每一部分中SenSeNet相对于catSeq提升了多少。评价指标选取了F1@5和F1@M,present和absent分别展示,数值为提升的百分数,结果如图3所示。

图3 不同句子数性能相对提升注: SenSeNet相对于catSeq在不同句子数量的测试数据集中性能提升的比例。

可以看到,不管是present keyphrase还是absent keyphrase,随着句子数量增加,SenSeNet相对于基准模型提升的百分数不断提升。这说明SenSeNet在随着文档句子数量变多时,仍然能有良好的性能,确实具有良好的去噪能力。另外可以看到在absent keyphrase中,模型能提升的百分数远远大于在present keyphrase中,也说明SenSeNet在absent keyphrase中特别有效。

本文统计显示: 平均句子数量为7.6,平均“重要”句子数量(弱监督信号标记为1的)为3.9。其中,“重要”的句子占比为53.4%,也说明如果能从原文中选取重要的句子,会对生成关键短语非常有效。而实际预测过程中,表现最好的模型,句级选择网络选取了54.1%的句子作为重要句子,这个比例和弱监督信号中的比例十分接近。另外,本模型中抽取的76%的关键短语都来自重要句子。这说明我们模型成功地捕获了句子重要性的文档结构,并且成功地将这个归纳偏置引入到序列生成模型中。

4.4 用例分析

本节进行了用例分析。图4用一个具体的例子比较了catSeq和SenSeNet生成的关键短语。其中,在真实标签中,粗体单词是present keyphrase(原文中有对应),下划线单词是absent keyphrase,特别地,这个下划线单词属于semi-present keyphrase(原文中灰底字为来源)。原文中第1句和第4句为模型实际选择的重要句子。

图4 对比SenSeNet和catSeq输出的用例分析注: 第①和第④句是被SenSeNet判断为重要的句子。粗体单词表示present keyphrase,下划线单词表示absent keyphrase(特别的在这个例子中也是semi-present keyphrase),方框单词表示错误预测的关键短语但是存在于文档中。第①句中灰色部分单词表示semi-present keyphrase的来源。

对比catSeq和SenSeNet的输出可以发现,catSeq只对了一个present keyphrase,而SenSeNet则相对于catSeq多对了两个present keyphrase和一个absent keyphrase。分析原因,SenSeNet将这两个单词“fuzzy reasoning”和“power plant control”所在的句子给判断为重要的,所以模型能以更大可能从这两个句子中选出关键短语。相反,catSeq比SenSeNet多预测了一个错误单词“control system”,而这个单词存在的句子被SenSeNet判断为不重要的,所以模型降低了从这个句子中选取关键词的概率,最终没有错误预测这个单词。这也说明句子重要性判断对关键短语预测有很大帮助。

4.5 可视化分析

在本节中对模型生成关键短语时的attention分布做了可视化分析。如图5所示,三张热力图分别表示同一句话在catSeq、SenSeNet加入重要的偏置后(1)、SenSeNet加入不重要的偏置后(0)三种情况下,每个单词在解码时attention数值之和。可以理解为数值越高,被抽取为关键短语的概率越高。其中,粗体的几个词是真实关键短语标签。

在catSeq中,真实关键短语中的几个单词概率虽然相对于同句中其他单词高一点,但是还是很低,个别单词如“time”甚至为0,所以这几个单词不容易被抽出来作为输出。而当句级选择网络判断这句话为重要,并加入了1的偏置后,可以发现,这几个词的概率变得非常高,很容易被抽取出来作为关键短语。在图5的第3行Sen SeNeto中,当加入0的偏置后,这个句子中,连原本概率相对比较高的两个单词“short”和“fractional”的数值也变得很低,变得更加不容易被抽取。图5有效说明了SenSeNet对句子加入“重要”的偏置和“不重要”的偏置处理都十分有效。

图5 同一句话中所有单词被预测的概率在三种不同情况下的可视化分析

4.6 通用性分析

在本节中,重点对模型的通用性做了分析,比较了多个Seq2Seq框架在KP20k数据集上有无添加SenSeNet的结果,如表5所示。

表5 通用性对比实验

表5中,评测指标是F1@5,其中“TF”表示Transformer。从表5中可以看出,无论选用哪种Seq2Seq框架,SenSeNet在present和absent keyphrase上都有显著的提升。这说明本文提出的模型是十分通用的。我们将SenSeNet能非常容易地移植入不同的框架并十分有效的原因总结为以下三点: ①句级选择网络是一个独立运营的模块,可以单独收集句子信息并给出判断; ②使用“1”和“0”的词嵌入表示作为句子级的归纳偏置,而不是使用比较“硬”的“0、1”门控(直接将不重要的信息舍去),这样能让模型更加平滑,并且能保留更多的原始语义信息,从而能使模型更好地运行; ③加入配套且和任务强相关的弱监督信号能更好地指导模型进行句子选择。

表5中有一个奇怪的现象,就是当今比较流行且具有并行性的Transformer框架的结果不如相对传统的GRU和LSTM。事实上,不仅关键字生成中有这个问题,其他的任务中也同样,如命名实体识别(NER)[29]。Yan等[30]分析了这个现象,并且总结了两个原因: ①标准Transformer不关注方向和距离信息; ②Transformer的注意力分布其实相对比较平滑,但是在NER中,注意力分布比较稀疏,因为只有少数词是比较重要的。这两点在关键短语生成中也同样存在。

5 结语

本文提出了一个新颖的模型句级选择网络(SenSeNet)用于关键短语生成。它可以自动评估文档中的每个句子是否更倾向于生成关键短语并向模型中引入偏置。本文使用直通估计量(STE)解决模型不连续问题,并引入弱监督信号指导模型更好地选择重要的句子。实验表明,句级选择网络能有效地捕获文档结构信息,同时有效地选择倾向于生成关键短语的句子,最后在抽取式关键短语和生成式关键短语中都有显著效果。

猜你喜欢

偏置文档短语
基于40%正面偏置碰撞的某车型仿真及结构优化
基于双向线性插值的车道辅助系统障碍避让研究
浅谈Matlab与Word文档的应用接口
有人一声不吭向你扔了个文档
基于RI码计算的Word复制文档鉴别
一级旋流偏置对双旋流杯下游流场的影响
《健民短语》一则
Persistence of the reproductive toxicity of chlorpiryphos-ethyl in male Wistar rat
面向TIA和缓冲器应用的毫微微安偏置电流运放可实现500MHz增益带宽