冯骁骋,张凌源,冯掌印,吴佳铭,孙承杰,秦 兵
(哈尔滨工业大学 社会计算与信息检索研究中心,黑龙江 哈尔滨 150001)
近年来,随着人工智能和自然语言处理技术的不断进步,机器自动写作成为一种典型的应用任务,受到了国内外众多科研机构和企业的追捧。特别是自动写诗、评论生成、机器解说等生成任务被成功应用于人们的日常生活。因此研究者尝试将生成技术应用于更具挑战性的场景。
议论文自动生成或高考作文生成被看作是人工智能领域的重要挑战之一。高考也称普通高等学校招生全国统一考试,是国家为选拔优质人才向普通高等学校招生设置的全国性统一考试。而其中议论文或作文写作是对考生逻辑能力、思想观点和文字运用最为综合的一种考验。因此,机器若想写出一个好的议论文,也需要像人一样具备上述诸多能力,并且议论文与诗歌、评论等题材相比逻辑更加清晰、写作长度更长、篇章架构更为复杂。尽管GPT[1]等预训练语言模型在自动写作上获得了巨大成功,但是在议论文自动生成任务上并未展示出较好的效果。这是由于随着篇章字数的增多,语义漂移问题逐渐加重,并且预训练语言模型是以百科、小说等作为主要预训练语料,很少对论证结构进行学习,所写作文缺少典型的篇章结构信息。
冷海涛等[2]构建了面向议论文写作的抽取式生成方法。整个抽取式作文生成模型框架如图1所示,生成阶段主要由句子抽取和句子排序两部分组成。后续吴佳铭等[3]通过引入图模型的句子编码方式改进排序模型,并通过引入共现实体进一步加强句子联系形成新的节点和边,促进信息流动。尽管他们的方法较好地建模了句子语义表示,但却忽略了论证文本之间的逻辑结构特点。例如,主论点与分论点、分论点与论证句之间必须保持逻辑一致,否则整个篇章则会产生前后语义矛盾、逻辑倒置等严重问题。针对论证矛盾等问题,本文提出基于论证关系逻辑判别的议论文句子排序模型。因此本文可以划分为两部分研究内容: 论证关系判别和句子排序技术。
图1 抽取式作文生成基本框图
首先,论证关系判别与自然语言推理技术类似,后者的研究工作侧重于判定是否可以从给定的前提中推断出某一个给定的假设,而前者的研究工作则侧重于判别给定的两句话是否具有某种论证关系,同时推断出论证方向性,是前句论证后句,还是后句论证前句。
早期研究两个句子的相互关系,主要依赖一些常规的方法,例如,抽取句法特征、关系抽取等[4]。但这些方法具有一定的局限性,只能在比较特定的任务中使用。随着大规模标注数据集的出现,以及深度学习算法的快速发展,学术界在两个句子相互关系的研究上取得了明显进步。此外,完善的注意力机制,通过提供两个句子之间的对齐和依存关系,为寻找两个句子之间的相互关系提供了更加丰富的知识。在这些方法中的第一类是基于句子编码的方法[5-6]。其做法是将两个句子前后拼接,然后使用深度神经网络转化为句子的向量表示,最后使用分类器对该句子进行决策关系分类,这种做法只考虑前序与后续的语义结构信息,而没有考虑句子之间单词与单词交叉的相关性。而另一种做法则很好地弥补了第一种做法中缺乏的交互信息,利用相似矩阵来实现句子间的注意力机制,使得模型可以更好地获取交叉信息中的推理关系。Chen的ESIM模型就是使用了第二种做法,该模型在自然语言推理中取得了显著的成果[7]。此外,有研究者尝试在模型中引入知识图谱[8],同时还有部分研究者尝试加深模型深度,尤其加深上下文语义理解层RNN部分的深度[9],但是其结果对精度的影响虽有提升但微乎其微,直到引入上下文的预训练语言模型(包括ELMo[10]、GPT[1]、BERT[11]、XLNet[12])的出现代替了GloVe[13]和Word2Vec[14],使得研究者将目光关注到词语理解层,使用这些预训练模型获取句子中的词表示极大地提升了模型的精度,例如,Peters将ELMo引入到ESIM结构中[10]。
近年来,研究人员还发现目前的引入上下文语义的预训练语言模型往往忽视了最显著的结构化语义信息,使得深度学习模型错误地关注那些语义结构信息不明显的单词[15-16]。其中对于显式的语义结构特征的研究,Baker与Palmer等人早在十几年前就做了相应的研究[17-18]。这种形式化的语言通常将语义关系表示为谓语-论点结构,之后慢慢地被后人所归纳为一个NLP中的任务,即语义角色标注(Semantic Role Labeling,SRL)。而最近He[19]等人将端到端的深度神经网络技术引入SRL系统中,获得了更好的性能。由此,本文尝试将SRL作为显式语义结构融入论证关系逻辑判别模型中,希望使得模型能够较好地将关注点聚焦到强语义结构信息的词上,更好地适配议论文论证逻辑关系判别任务。
其次,在句子排序相关工作中,Liu等[20]提出的Learning to Rank是基于特征的机器学习方法,通过组合各种特征来决定各个句子的顺序。随着深度学习技术的广泛应用,Chen等[21]提出使用词袋模型、CNN、LSTM等方法建模句子,使用句子对的表示进行二元分类,预测前后顺序的概率,最后使用集束搜索得到排序结果。Gong等[22]提出了端到端的句子排序模型,利用LSTM进行句子和段落级的建模,再用指针网络进行句子排序。而近期吴佳铭等[3]提出了基于图神经网络的段落级句子排序模型,并将其应用到议论文作文数据集中,取得了优于其他模型的实验效果。而利用图神经网络来对句子集进行编码的有效性已经被很多研究所证实[23-25]。因此本文在吴佳铭等[3]的基础上,引入论证关系。其模型整体框架为利用图神经网络进行句子编码,最后使用指针网络[26]模型进行解码输出排序结果。为了引入论证关系,本文在图神经网络建图过程中,将论证关系作为虚点引入图中,对具有论证关系的句子对进行虚向连接。该排序模型在议论文数据集中证明了引入论证关系的有效性,得到了最优的排序效果。
给定两个句子: 句子A与句子B,该任务需要判断这两个句子间的论证关系。例如句子A为“平凡不意味着无价值。”句子B为“螺丝钉看起来很渺小,但它的价值不容我们忽视。少了它,大楼会倒塌。”可以看出句子B通过举例螺丝钉的作用来论证句子A中平凡是可以有价值的。而句子A与句子B的关系为: B论证A。相反在其他例子中也会有A论证B或者A、B无关等分类。
本文提出基于匹配聚合框架来搭建论证关系判别模型BSAI(BERT-SRL Argumentation Inference),用于预测两句话A、B的论证关系概率分布Pr(y|A,B),分为词语理解层、上下文语义理解层、匹配推理层、推理聚合层和预测层。模型结构如图2所示。
图2 论证关系逻辑判别模型结构图
2.1.1 词语理解层
(1)
为了使句子能够同时融入多个谓语事件的信息,本文将经过Bi-GRU的结果在单词维度拼接后输入一个全连接层,得到最终句子的语义信息向量,如式(2)所示。
(2)
本层将BERT产生的向量表示与SRL产生的向量表示进行拼接得到该层句子最终的词表示结果,如式(3)所示。
Embed(Si)=[eBERT(Si);eSRL(Si)]
(3)
2.1.2 上下文语义理解层
本层采用双向长短时记忆循环神经网络模型(Bi-LSTM)来增强句子S词向量的上下文语境表示,如式(4)所示。
(4)
此处,本文还尝试了其他融入上下文语义特征的方法,如GRU、LSTM、感知机等,发现使用Bi-LSTM取得的模型效果最佳。
2.1.3 匹配推理层
本层使用互注意力机制(Co-Attention)得到句子a与句子b之间的相关矩阵e,通过注意力机制,将原句子a的每个词表示与句子b的所有词表示进行相关性计算得到句子a相对句子b的相似表示a′,并将同样的方法作用到句子b,得到句子b相对句子a的相似表示b′,如式(5)所示。
(5)
为了增强句子间推理矩阵的推理效果,本层将相似表示向量与原向量做点积运算以及距离运算,并将结果融入推理关系表达式中。这种做法可以较好地增强模型的论证推理能力,并通过与原始元组级联,多方位地捕捉其在论证方向上的关系。例如,句子a的相似表示a′与原句子表示a之间差值的计算,可以理解为句子a与句子b之间的正向论证关系;而句子b的相似表示b′与原句表示b之间差值的计算,可以理解为句子a与句子b之间的逆向论证关系。使得在最后预测过程中,模型推断出具有论证关系的同时,也能精准地预测出哪个句子论证了哪个句子,具体如式(6)所示。
(6)
2.1.4 推理聚合层
在得到推理关系ma与mb后,为了进一步将上下文特征融入推理关系,本文使用另一个Bi-LSTM模型来解析推理关系ma与mb中的上下文推理部分,得到具有深层推理逻辑的推理关系向量a、b,如式(7)所示。
(7)
由于句子a和句子b的长度并不固定,且推理关系向量的长度也是与原始句子的长度相关。为了使模型不过多关注于句子的长度,并且方便后续对推理结果的预测,本模型采用平均池化、最大值池化两种方式对推理关系在字词长度这一维进行池化操作。为了规避句子长度对模型的影响,本处池化层放弃使用累加池化的方式,如式(8)所示。
(8)
最后,为了融合句子间的相互关系,本模型将句子a、b各自池化后的产物拼接作为本层的最终输出,如式(9)所示。
(9)
2.1.5 预测层
本层的目的是将推理聚合层的输出结果v,转化为句子a、b论证关系的概率分布Pr(y|a,b)。在本文模型中,本文使用多层感知机(MLP)来达到这一效果。此外,本文经过大量的对比实验,发现使用三层漏斗式的多层感知机,中间使用ELU作为激活函数,在最后添加Softmax层的方法对结果具有更好的预测。
(10)
式(10)为ELU函数,从公式中不难发现,ELU函数左边的数值范围软饱和,而右边的数值范围不饱和。这也使得右侧的数值范围部分缓解了梯度的消失,而左侧的软饱和度可以影响输入,使其对变化或噪声更加稳健。
在本模型中,本文将推理聚合层的输出结果v放入设置好的多层感知机,得到最终预测的句子a、b论证关系的概率分布Pr(y|a,b)。整个过程是一个端到端的训练,且在模型训练过程中使用交叉熵(Cross-Entropy)作为损失函数。
2.2.1 基于图神经网络的段落编码器
以往的工作[2]一般利用LSTM来对句子集编码,学习句子与句子之间的关联特征。但是由于LSTM结构具有局限性,在进行段落级编码时往往采用线性的顺序处理方式进行,这就使得原段落句子间的初始顺序对编码的结果产生影响。而句子排序任务往往输入乱序的句子集,这使得模型的效果与输入句子集的顺序有关,导致模型的不稳定性。
因此本文使用图神经网络来对句子集的段落信息进行编码。本文将句子集中的各个句子看成图中独立存在的各个节点,将句子与句子之间的联系看成图中节点与节点之间的边。整体上看句子集S={sO1,…,sOM}的段落级编码可以看成一个节点总数为M的全连接图,如图4所示。
图4 段落级编码全连接图
上述这种模式的建图方法会导致所有句子间的距离为1,导致在后续编码图结构的过程中使得原本距离较远的句子之间产生有噪声的信息交互。因此本文引入句子间的论证关系以及句子间的实体关系来减少不必要的连边。
对于句子间的论证关系,本文采用上文提及的BSAI模型对输入的句子集S={sO1,…,sOM}中的任意两个句子对(si,sj|i≠j),求得这n(n-1)个句子对的论证关系ai,j。之后遍历图上的每个节点vsi。假如存在一个节点vsj使得论证关系ai,j为vsi论证vsj,本文将为节点vsi引入一个无意义的虚点vai,将节点vsi与虚点vai连接一条标签为lt的边,将所有满足条件的节点vsj与虚点vai连接一条标签为la的边。其中,lt代表论点,la代表论据。
对于句子间的实体关系,本文使用语言技术平台(LTP)的句法分析模型,抽取出句子中介词宾语(POB)、动词宾语(VOB)以及主语(SBV)纳入实体词集合中。之后过滤掉实体集合中只出现在一个句子当中的词。对于实体词集合e={e1,…,en}中的每一个词ei,建立一个实体词节点vei,并将所有包含实体词ei的句子节点vsj|ei∈sj,与实体词节点vei连边,各条边的标签为该实体词ei在句子sj的角色,角色优先级按照主语-动宾-介宾的顺序排布。其中,主语用标签ls表示,动宾用标签lv表示,介宾用标签lp表示。
最后,为了让具有相关性的句子之间距离尽可能小,本文将互相可达的句子节点用一条无标签的边连接。最终图结构如图5所示。
图5 引入论证关系与实体关系后的图网络结构
图中句子s1与句子s3中都包含“父亲”这一实体,因此句子s1与句子s3之间会产生一条无标签边,由于句子s1中“父亲”是以主语存在的,因此句子s1与实体“父亲”有一条标签为ls的边,由于句子s3中“父亲”是以动宾词存在的,因此句子s3与实体“父亲”有一条标签为lv的边。由于句子s1在作为论点时,具有s2与s3两个论据,因此,句子s1分别与句子s2和s3有一条无标签的边,与虚点a1有一条标签为lt的边,代表论点。其他两个句子s2和s3与虚点a1有一条标签为la的边,代表论据。
为了编码上述图结构,本文使用GRN[30](循环图神经网络)作为图结构的编码器,该方法在各种图编码任务中都被证明其有效性。GRN主要通过将图按照时间轴展开,根据已构建的图框架建立各个节点之间的信息传递框架,如图6所示。
图6 图结构神经网络编码图
对于每个信息传递步骤t,每个节点vi的状态更新主要涉及以下两个步骤:
(1) 通过t-1时刻与节点vi相邻的节点以及全局节点g来获取更新状态信息。
(2) 利用GRU门控机制来更新节点vi的信息。
(11)
(12)
(13)
(14)
最后,对于全局图信息节点gt,其更新信息为上一个状态所有节点的加权平均和。具体如式(15)所示。
(15)
上述所有w*、W*、U*都是可学习参数。通过这种方式,每个节点通过迭代编码过程吸收更丰富的上下文信息,并捕获与其他节点的逻辑关系。经过T轮迭代过后,将最后一段的句子节点状态当作Pointer Network中各个句子的表示。
2.2.2 基于Pointer Network的排序结果解码
Pointer Network模型可以解决由输入数据决定Output Dictionary的问题,而这是Seq2Seq模型没有办法解决的。因此该模型可以解决组合问题,被广泛应用于信息抽取、句子排序等问题中。
如图7所示,Pointer Network的模型结构可以分为三部分: 第一为句子编码器,输入词用于得到句子的表示。第二为段落编码器,通过对候选的待排序句子集合的编码,得到段落的整体信息,传递给Decoder来初始化Decoder的状态,同时获得更深层次的句子级别表示,利于Decoder进行句子选择。第三为解码器,利用Attention的思想,每一步计算当前时刻的隐藏状态,作为Attention机制中的Query,再通过与每一句的Key计算Attention,获得每一句作为下一句的概率,选择概率最大的句子,将选中句子的Embedding表示作为下一步Decoder的输入。不断进行此过程,从而得到预测的排序序列。
图7 基于Pointer Network的句子排序模型
本文使用6 686篇高中议论文作为实验数据,将数据按篇章分为训练集、开发集、测试集后,构建论点与论据逻辑关系句子对,本文把目光聚焦到每篇文章的每段话中,若该段话同时出现论点句和论据,那么本文就将这两句话进行配对,论点句为句子A,论据为句子B构建论证关系“B论证A”。与构建中心论点与分论点逻辑判别数据集一样,为了能够让模型学习到双向论证的信息,本文同样随机地调换句子A、B,构建论证关系“A论证B”。于此同时,本文还发现部分段落存在只含论据的情况,经过观察,发现这些论据大部分情况,都论证其上文的论点,因此为了不浪费这些数据,本文将该种情况的论据与前文出现的最近的论点进行配对,得到论证关系判别数据集。数据集统计如表1所示。
表1 论证关系逻辑判别数据集
3.1.1 模型参数
本文将Batch Size大小设置为16,学习率设置为0.000 003,在词表示层使用了两个预训练模型,分别为Hugging Face的BERT-Base-Chinese模型,以及哈工大社会计算与信息检索实验室研发的语言技术平台LTP中的语义角色标注器SRL模型。其中,BERT预训练模型输出的词表示维度为768,LTP模型输出词表示维度为50,因此整体词表示的维度为818。在上下文语义理解成层中,Bi-LSTM隐藏层维度设置为600。在推理聚合层中,Bi-LSTM隐藏层维度也同样设置为600,在最终预测层使用了三层全连接感知机,第一层线性层维度设置为300,第二层线性层维度设置为50。在各层之间使用Batch维度的归一化函数进行归一化。同样我们将句子的长度固定为100。在训练过程中,该模型也同样使用Adam优化算法作为训练优化器,其损失函数也与上述模型一样使用Cross-Entropy作为损失函数。
3.1.2 模型评价指标
在模型实验训练的过程中,本文使用准确率ACC作为本文模型BSAI的评价指标,其计算如式(16)所示。
(16)
其中,TP为正例预测正确的个数、FP为负例预测错误的个数、TN为负例预测正确的个数、FN为正例预测错误的个数。使用ACC作为评价指标是因为在该模型下有两种类型的正例,有一种类型的负例,占比近似,且负例占比未超过正例的总和,因此直接计算其准确率可以更加直观地看出模型的好坏。
3.1.3 模型效果
本文将BSAI模型与ESIM模型、BERT-base模型、ESIM+BERT-base模型放到论证关系判别数据集中进行对比实验。实验结果表明,本文提出的BSAI模型要优于其他几个模型,其结果如表2所示。
表2 模型在论证逻辑判别数据集中的效果
实验显示,本文引入SRL得到BSAI模型,其在验证集上的准确率高出BERT+ESIM模型1.87%,且高于BERT-base模型2.0%,其在测试集中的准确率也高于BERT+ESIM模型1.48%,高于BERT-base模型1.94%,证实了语义角色标注器很好地获取到句子中的语义结构化信息,对于论据这种具有复杂语义结构的句子,模型可以更好地关注那些语义结构信息较强的词,从而使模型在匹配推理过程中产生的推理向量更有价值。
我们使用6 686 篇高中议论文作为实验数据,在这些篇议论文中抽取句子数目≥3的段落,在段落级别上考虑句子排序的效果,数据集的相关统计信息如表3所示。
表3 句子排序议论文数据集
句子排序实验评价指标有以下几种:
(1) 准确率(ACC): 它测量了能够预测句子绝对位置正确的百分比。
(2) 完美匹配率(PMR): 它测量了能够完全正确地预测段落中句子顺序的百分比。
(4) 匹配率(PM): 它测量各个句子序的子序列预测正确的百分比。
句子排序实验结果如表4所示。
表4 句子排序实验结果表
表中的Random为随机输出句子排序的结果;SE-Graph[3]为吴等在议论文数据集中的实验结果,SA-Graph为在图神经网络中仅有论证关系虚点以及原始句子节点的模型,后续Our模型都为2.2节所提到的本文实现的引入论证关系和实体关系的模型,其中模型后面括号中的系数,代表论证关系的控制强度,即2.1节所提及的BSAI模型在预测A论证B的Softmax后的值。系数为0.5则代表只对A论证B这一标签Softmax后的值大于0.5才对其建边。
表中的结果显示,引入论证关系的方法要优于以往议论文句子排序的最好模型(SE-Graph),且当把论证关系的强度控制在0.5时,模型取得最好的效果。其原因是过强的控制会导致图中论证关系对过少,图神经网络结构趋近于SE-Graph,而过弱的强度控制会使得图神经网络结构趋近于全连接图。从实验的各项数据中发现,引入论证关系后不管是句子间绝对位置(ACC)的判断,性能还是句子间相对位置(Ktau)的判断,性能均得到较大的提升,其中Ktau的提升幅度更为明显,这也进一步证明了引入论证关系后,可以加强句子间相互位置的判别。
本文主要研究抽取式的议论文自动生成任务,并通过提出基于论证关系判别的议论文句子排序方法优化已有的作文生成系统。具体而言,我们开发了基于匹配-聚合框架的论证关系判别模型BSAI,并将其结果应用于排序模型,在原有图编码模型中构建了带有论证关系的虚点。最终我们所提出的论证关系判别模型和句子排序模型均在议论文数据集上达到了当前的最优结果。