融入句法感知表示进行句法增强的语义解析

2021-09-18 06:21谢德峰吉建民
计算机应用 2021年9期
关键词:句法语义解析

谢德峰,吉建民

(中国科学技术大学计算机科学与技术学院,合肥 230027)

(*通信作者电子邮箱jianmin@ustc.edu.cn)

0 引言

伴随着21 世纪第二个十年期间人工智能领域的发展与各种深度学习模型的提出,人工智能已经成为当今计算机学科中非常重要的一个子学科,成为了21 世纪最火热的话题。与此同时,机器人作为人工智能领域的一个子学科,综合了计算机学科中多个研究方向,也成为了许多学术团队和科技公司正在大力研究的对象。随着经济的发展,生活辅助型智能应用越来越多,给人们带来了非常大的便利,智能机器人也逐步进入市场,为人们提供简单的劳动服务。人们希望能用自然语言直接与机器人或者应用进行沟通,从而让机器人或者应用更好地服务人们,为人们带来便利。

文献[1]中指出,自然语言理解是机器人或者应用能够提供智能服务的关键技术之一。语义解析(semantic parsing)的定义就是这样一个任务:将一个自然语言语句转化成机器能够理解或执行的语言,比如逻辑表达形式或可执行的程序,从而使计算机理解自然语言。语义解析作为自然语言理解的核心,在很多任务中都是关键步骤。语义解析是让机器人理解自然语言的关键步骤。

随着深度学习的发展,许多团队也试着利用深度学习模型来完成语义解析的任务。但由于现有语义解析数据集的规模较小,远远不能满足深度学习所需要的数据量,且构建和标注新的数据集非常困难,因为标注形式不是简单的类别而是一串逻辑符号组成的表达式,标注人员需要专业知识背景,因此,数据集少且规模小成为了制约语义解析发展的一个问题。此外,语义解析还对模型输出的精度要求高,输出序列只要有其中一个字符解析错误,那么一整串序列输出都是不正确且不可用的。同时,语义解析过程中还存在两大难题:其中一个问题是长期依赖问题,即需要生成的某个元素依赖于另一个遥远的元素;另一个问题是结构建模问题,即所要生成的序列需要符合逻辑表示的语法要求,该语法包含了丰富的结构信息。如何在上述一系列制约因素以及精度要求之下进一步提高语义解析模型准确率及效率,成为亟须研究和解决的难题。

句法解析(syntactic parsing)是自然语言处理中一个重要的任务,其目标是分析句子的语法结构并将其表示为容易理解的结构(通常是树形结构)。句法解析与语义解析是两个完全不同的任务,二者的实现方式也截然不同:句法解析的目标是解析出句子中词汇与词汇之间的句法关系(包括结构关系和依存关系);语义解析的目标在于解析句子的内在含义并将该含义抽象成逻辑表示。一般而言,句法解析模型生成图形式的句法关系,而语义解析生成序列形式的逻辑语句。句法解析得到的句法关系可作为特征信息用于辅助语义解析任务。句法解析是所有工具性自然语言处理(Natural Language Processing,NLP)任务中较为高级、复杂的一种任务。文献[2]阐述了句法解析可进一步分为句法结构解析(syntactic structure parsing)和依存关系解析(dependency parsing)两种,其中:句法结构解析是通过分析语句中词与词之间的相互联系,相互作用的方式,得到的整个涵盖整个句子全局的句法结构树;而依存关系解析则是根据语法依存理论,分析语言单位内成分之间的依存关系从而揭示其句法依存结构。

以往的基于深度学习的语义解析方法大多是以序列到序列(Seq2Seq)模型[3-4]为基础。在这些研究中,大多没有直接用到输入源的自然语言句子的句法特性,而是将识别句法特性的任务统一地交给了端到端神经网络去自主处理,但神经网络很难能在没有相关标注信息的情况下自主识别出输入句子的句法特性。利用自然语言本身的句法特征信息可以为模型增加可参考的输入信息,有助于缓解语义解析中语言结构建模和数据集规模小的瓶颈问题。为了进一步提高语义解析模型的准确率和效率,本文采用一种利用句法信息来增强模型效率的语义解析方法,即利用句法解析任务来辅助语义解析任务。该方法利用输入句子的句法依存关系来增强端到端语义解析模型的效率。基本思路是在已有端到端语义解析模型的基础上,先对一个端到端的依存关系解析器进行预训练,将该依存关系解析器的中间表示作为句法感知表示,与原有的字词嵌入(word embedding)表示拼接到一起,产生新的输入嵌入表示,而后再将该新的输入嵌入表示用于端到端语义解析模型,以此来提高语义解析模型的效率。

近几年也有一些工作开始尝试利用句法信息来增强端到端语义解析,例如文献[5-6]采用树形长短期记忆(Tree Long Short-Term Memory,Tree-LSTM)单元来处理句法结构信息,但本文提出的融入句法感知表示进行句法增强的语义解析更加简单且有效。文献[7]采用了融入句法感知表示的思路,受其启发,本文工作将该思路应用于语义解析领域。本文实验使用基于Transformer 的Seq2Seq 模型作为基准模型,采用转导融合学习方式进行模型融合。实验同时对比了最近10 年的语义解析研究工作。最终实验结果表明,在ATIS、GEO、JOBS 数据集上,本文采用的句法增强语义解析方法不仅全面超过了基准水平,还在大部分指标上超越了其他相关工作。

1 相关工作

最传统的语义解析包括模板匹配、手写语法规则进行推导等方法。虽然有些工作已经能达到非常高的准确率,但是都需要进行大量的前期工程,依赖于手工设计的规则,通用性较差。

统计语义解析方法主要是运用了机器学习方法,依赖于有标注的自然语言和逻辑表达式配对的数据集。文献[8-10]中依赖了自然语言语句的依存关系解析结果,用lambda 算子或者组合范畴语法分析器来将语句的依存结构转化为逻辑形式;文献[11]中没有用到手工规则或者组合范畴语法,而是直接采用了较为暴力的方法,通过连接(Join),求交(Intersection)和聚合(Aggregate)三种操作,以及提出的桥接操作自底向上地对语法树的节点进行两两合并,从而在根节点得到逻辑形式;文献[12]将物理特征分类器和基于概率范畴语法的语言模型两者进行联合学习,以此让语言模型能够构造组合意义表示;文献[13]中采用了组合类别语法归纳来处理语义解析任务;文献[14]通过构建一个词法语法分解词典来建模词类之间的词法、语法和语义,以此提升组合范畴文法的效率。

随着深度学习的发展,许多基于神经网络Seq2Seq 模型或其衍生模型大量涌现。深度学习的优点在于其在不需要特征工程的情况下,取得了不亚于手工转换方法的准确率,但同时也带来了难以解释模型的缺点。文献[15]中采用基于LSTM 单元[16-17]和基于注意力机制[4,18]的Seq2Seq 模型来解决语义解析问题;同时文献[15]还提出了统一基于LSTM 和注意力机制的序列到树(Seq2Tree)模型来解决语义解析中的结构建模问题,提高语义解析效率。自此,许多研究团队都以文献[15]为基础,在编码器端或者解码器端进行模型上的改进。文献[19]在编码器端融入了自然语言的句法信息,考虑了单词顺序、依存结构特征和句法成分特征,构建了一个图-序列(Graph2Seq)模型。文献[20]则在解码器端生成了一个语义图,构建了一个序列-语义图模型。文献[21]虽然是以Seq2Seq 模型为基础,但是根据结构化查询语言(Structured Query Language,SQL)的特点,在解码器端分成三个频道并加入了一个门单元。三个频道分别预测数据表中列名称、表中单元格名称以及SQL 语法关键字;而门单元则是一个控制开关,在每个时间节点预测应该选择哪个频道的预测结果作为输出。文献[22]则用了两层的编码器+解码器模型(encoderdecoder)来实现从粗略到精细的语义解析过程:第一层先生成草稿,第二层再生成其中的变量作为补充。TRANX[23]借鉴了抽象语法树(Abstract Syntax Tree,AST)的思想,根据目标语言的语法构建规约文法,基于该文法可以将生成目标表示为语法树,然后实现自顶向下的语法树生成系统。文献[24]提出了一种自适应的解码方式来帮助解码器自主学习要生成的逻辑形式结构。

近年来随着预训练语言模型的兴起,很多领域都开始注意到了众多预训练语言模型的基础模型Transformer[25]。Transformer具有媲美LSTM的处理远距离依赖的能力,同时也具备与卷积神经网络相似的并行可行性,它在处理大规模数据集时比LSTM 要更具鲁棒性,不容易过拟合。TreeGen[26]借助Transformer[25]作为解码器(decoder),同时也采用基于Transformer 改造的可用于语义解析的AST 阅读器来编码抽象句法树。

2 方法与模型

2.1 基于深度学习的依存关系解析器

为了在语义解析模型中融入依存句法信息感知表示,首先需要预训练一个依存关系解析器。本文所使用的句法信息为依存关系信息,依存关系解析是根据语法依存理论,解析语言单位内成分之间的依存关系从而揭示其句法依存结构,依存关系树则描述了原句中词与词之间的依存关系。如图1 所示为一个句子中的依存关系信息示例。

图1 依存关系信息示例Fig.1 Example of dependency relation information

依存关系解析器的作用是根据输入句子及其词性标注标记出其依存关系,从而获得该句子的依存关系解析结构图。依存关系解析器本质上是一个序列到图的生成器,该依存关系解析过程可如图2 所示。其中,r1~r8为编码器生成的中间表示。

图2 依存关系解析的解析过程Fig.2 Process of dependency relation parsing

本文所采用的依存关系解析器源自于文献[27],该解析器已被证明了相较于文献[28]中所提出的模型更加简单却更高效,因此采用该依存关系解析器提取输入句子中的依存关系信息。如图3 所示,该依存关系解析器由双向LSTM、四个全连接层和两个特殊的计算参数矩阵所构成。可以将该模型看作是编码器(encoder)和decoder 两个部分,嵌入层和LSTM层为encoder 部分,其余上层为decoder 部分。首先,模型的输入是单词和单词各自的词性标注信息(part-of-speech),将输入的句子的词嵌入(word embedding)和词性标注信息嵌入(Part-Of-Speech embedding,POS embedding)拼接起来作为输入,然后用多层双向长短期记忆层(Bi-directional LSTM,BiLSTM)处理该输入,得到中间表示R。如式(1)~(2):

图3 依存关系解析器模型结构Fig.3 Structure of dependency relation parser

其中:e(word-dependency)、e(pos)为依存关系解析器端的词嵌入和标注信息嵌入。

随后,用4 个不同的全连接层分别处理中间表示R,得到4 个表示,如式(3)~(6)所示,其含义与文献[27]中含义相同。这一步的操作的目的是在保证LSTM解析能力不损失的情况下对R进行降维处理,达到防止过拟合的目的。

接着,将上一步得到边以及边上标签的表示进行双衍射处理[28],如式(7)~(8)所示。双衍射公式计算过程如式(9)~(10)所示。

值得注意的是:当双衍射处理是为了处理是否有边存在的,即结果为得到S(edge)时,U的维度为(d×1×d),d表示的维度;当双衍射处理是为了处理是否有边上标签信息,即结果为得到S(label)时,U的维度为(d×c×d),其中c是所有边可能标签的数量总和。最后得到的边矩阵S(edge)中,s(edge)[i][j]表示节点i指向节点j的边存在的概率,而边标签矩阵S(label)中,s(label)[i][j]表示节点i指向节点j的边(若存在)的所有可能标签的概率。该过程如式(11)~(12)所示:

与文献[27]相同,本文通过计算预测分布与真实标签分布的损失,然后通过反向传播梯度下降来训练模型。用softmax cross-entropy 来计算边标签预测与边真实标签之间的损失,用sigmoid cross-entropy 来衡量边存在概率与边存在真实标签之间的损失。然后引入超参数λ来平衡这两个损失函数的权重。过程如式(13)~(15)所示:

2.2 基于Transformer的语义解析模型

在语义解析领域,以往的多数研究都是以LSTM 和注意力机制为基础Seq2Seq 模型。近年来随着预训练语言模型的兴起,Transformer[25]凭借其处理远距离关系依赖的能力和与卷积神经网络相似的并行能力而受到广泛关注。本文也采用Transformer作为基础的语义解析模型。

Transformer 引入了自注意力机制和多头自注意力结构。和一般的Seq2Seq模型一样,本质上是一个encoder-decoder的结构。encoder 和decoder 都由多个单独的处理单元堆叠而成,单元与单元之间采用层归一化和残差链接。如式(16)所示:

Transformer 由多头自注意力层(multi-head self-attention)和位置前馈网络层(position-wise feed-forward networks)组成,其中多头自注意力模块有多个缩放点乘运算构(scaled dotproduct)。上述多头自注意力层和位置前馈网络层的计算过程如式(17)~(19)所示:

decoder 部分跟encoder 相比,多了个一层用于处理encoder 所输出中间表示的多头注意力层,并且在自身的自注意力层加入了掩码机制。Transformer 还采用三角函数还表示位置编码(position encode),以表明输入节点的位置信息。

2.3 融入句法信息感知的语义解析模型

与文献[7]中的思路相同,为了融入句法信息感知,需要先预训练2.1 节所示的依存关系解析器模型,让依存关系解析器有了初步理解句子依存关系的能力。而后将预训练好的依存关系解析器模型的encoder 部分的输出,也就是式(2)中所示的R,作为所要用来提供句法信息的句法感知表示(syntax-aware representation)。

如式(20)所示,该过程是将得到的句法感知表示R与语义解析模型encoder 端的词嵌入拼接到一起,加上位置编码(position encode),再将其作为Transformer-encoder 的输入,其中e(transformer-word-embed)是encoder 端的词嵌入,e(position-encode)是 位 置编码。

decoder 部分保持与Transformer 的decoder 部分一致。如图4 所示,左侧模型为用来提取依存关系信息的依存关系解析器,右侧模型为Transformer 模型。可以看出,原本的Transformer只需要输入词嵌入+位置编码,采用本文方法改进后,Transformer 的输入是词嵌入与依存关系解析器的中间表示R拼接后的向量+位置编码,这样的改进旨在让带有依存句法信息的中间表示R以嵌入(embedding)的形式,让模型可以通过解析该中间表示R得到句法信息。

图4 融入句法信息感知后的Transformer整体结构Fig.4 Overall structure of Transformer after fusing syntax-aware representation

2.4 转导融合学习

模型融合是提高机器学习任务准确性的一种常见实践。由于语义解析任务的数据集规模小,标注成本昂贵,常规的集成方法仅能对语义解析任务带来微不足道的改进。为了探索更好的模型融合效果,本文将转导融合学习用于语义解析任务。转导融合学习是由文献[29]提出的一种简单有效的模型融合方式,它使用若干个单独的模型将源测试集的输入数据转换到目标语言空间,然后用单模型在转换后的合成数据上进行微调。相较于传统模型融合方式,不需要多个子模型同时在线预测,对于像Seq2Seq 这种推理过程为贪婪搜索或束搜索(beam search)的模型,转导融合学习算法过程简单、高效,但缺点是在融合过程中需要用到待预测的不包含标注的输入信息。转导融合学习可以看为是一种半监督学习方式。

转导融合学习使用若干子模型来对验证集或测试集的输入进行预测。式(21)~(23)表示验证集,测试集和已在训练集上训练得到的K个子模型。采用子模型对验证集和测试集的输入部分进行推理,得到基于子模型的合成数据,如式(24)~(25)所示。选择式(23)中的任意一个子模型,用合成数据集对其进行微调,在微调过程中,用验证集进行验证或采用交叉验证选出合适参数的模型,最终得到融合好的模型。

3 实验和结果分析

3.1 数据集

实验使用ATIS、GEO、JOBS三个语义解析数据集,并采用了文献[15]提供的预处理版本,这些数据集的输入是自然语言描述,而输出则是lambda 演算形式的代码序列。在实验中遵循了这些数据集的标准train-dev-test划分,数据集的统计信息在表1中列出。

表1 数据集统计信息Tab.1 Statistics of datasets

3.2 实验设置和细节

3.2.1 评价指标

对ATIS 和GEO 数据集采用完全匹配(Exact Match)和树型匹配(Tree Match)这两个基于准确率的指标来度量最终模型结果的好坏。Exact Match是只有当模型预测序列的单词及位置均与测试结给定的标注完全一致时,才认为该例的预测结果是正确的。而Tree Match 则遵循文献[16]中的度量标准,文献[16]认为预测结果只需与标注结果含义相同即可认为是正确的预测结果,采用Tree Match 意味着当预测结果序列的树形结构表示与标注结果目标逻辑形式的树形结构相同时即可认为该例的预测结果是正确的。对于JOBS数据集,本实验只采用Exact Match进行最终结果度量。

3.2.2 实验细节参数设置

实验采用Stanford corenlp-4.1.0[30]对数据集的输入部分进行分词(tokenization)、词性标注(part-of-speech tagging)和依存关系解析,将各个数据集的训练集部分输入部分的分词结果和词性标注结果作为2.1 节中的依存关系解析器的输入,将依存关系解析结果作为2.1 节中的依存关系解析器的标注数据,以此来预训练该依存关系解析器。

对于两个模型,实验均采用AdamW 作为优化器,AdamW的 参 数betas 为(0.9,0.999),eps 为1E-8,weight decay coefficient为1E-2,实验采用提前停止(early stop)来防止模型过拟合。对于GEO、JOBS,实验利用交叉验证来寻找合适的模型参数,而对于ATIS 则是在其验证集上验证。实验所使用的依存关系解析器与基于Transformer语义解析模型的各项参数设置如表2~3 所示,表中DR 为丢弃率(Dropout Rate),DI 为维度(DImension)。

表2 依存关系解析器的参数设置Tab.2 Parameter setting of dependency relation parser

表3 语义解析器的参数设置Tab.3 Parameter setting of semantic parser

3.3 实验结果

本文在不同数据集上做了四组实验:

实验1 基于Transformer 的语义解析模型作为实验的基准模型(baseline);

实验2 在实验1的基础上加入了转导融合学习;

实验3 本文所提出的融入依存关系信息感知表示的语义解析模型;

实验4 在实验3的基础上加入了转导融合学习。

融入依存关系信息感知表示的语义解析模型为实验主要模型,同时,采用了转导融合学习来进一步提高各自的效率,以此来对比两个模型各自融合前和融合后的效果差异。在ATIS、GEO 数据集上的实验结果如表4 所示。JOBS 数据集上的实验结果如表5 所示。外延匹配是一种使用了外部知识库来辅助计算准确率的方式。

表4 ATIS、GEO数据集上的准确率 单位:%Tab.4 Accuracy on ATIS and GEO datasets unit:%

表5 JOBS数据集上的准确率 单位:%Tab.5 Accuracy on JOBS dataset unit:%

3.4 实验结果分析

对比实验1 和基于LSTM 的Seq2Seq[15]工作,在三个数据集上,使用基于Transformer 的Seq2Seq 模型均可以达到比基于LSTM 的Seq2Seq 模型更好的效果,可以看出Transformer 确实对于远距离依赖的解析能力较强。对比实验2和实验1(或对比实验4 和实验3)的实验结果,可以看出转导融合学习对于ATIS、GEO、JOBS 这类规模较小但标注复杂的语义解析数据集有较好的提升效果。对比实验3 和实验1 可以看出融入了依存句法信息感知表示的模型比不融入该信息的模型表现更好,说明该本文所提的融入句法信息感知方式是有效的。

对于ATIS 数据集,实验2、实验3 和实验4 在Exact match指标上都超越了之前已有的基于神经网络的工作的最佳结果,而实验4在Tree match 指标上达到了与之前最佳结果相同的水准。对于GEO 数据集,实验4 在Tree match 指标上超越了之前已有基于神经网络的工作的最佳结果,而在Exact match 指标上表现不好,通过分析可看出,是由于模型的解析能力较强,能较灵活地学到语义解析中的结构建模信息,因而在Tree match 指标上表现良好,但在Exact match 指标上却表现一般。对于JOBS,由于现有可对比工作较少,只在Exact match 指标上进行对比,实验4 超越了之前已有工作的最佳结果,而实验3也达到了接近于现有工作最佳水平的结果。

可以看到融入依存句法信息感知表示以及转导融合学习对语义解析模型的有效性。实验结果表明本文提出的融入依存信息感知的句法信息增强模型即使在没有使用转导融合学习的情况下,也能达到与现有工作水平相近甚至在某个指标上可以超越的结果,而加入转导融合学习之后,可以在多个指标数超过其他相关工作。这验证了引入句法依存关系信息的有效性。

4 结语

本文提出了一个融入依存关系信息的端到端句法信息增强语义解析模型,并采用了转导融合学习的方法来融合模型。在ATIS、GEO、JOBS数据集上,该句法增强语义解析方法不仅全面超过了基准水平,还在大部分指标上超越了其他相关工作。且即使在没有经过转导融合学习的情况下,也能达到与现有相关工作水平相近甚至在某些指标上超越相关工作的水平。接下来我们将会进一步在语义解析这个方向上探究如何更好地融入句法信息,或寻找更有效的新方法。

猜你喜欢
句法语义解析
真实场景水下语义分割方法及数据集
三角函数解析式中ω的几种求法
述谓结构与英语句法配置
句法二题
诗词联句句法梳理
睡梦解析仪
复合场中类抛体运动解析
对称巧用解析妙解
“分”的音变构词及其句法语义特征
“吃+NP”的语义生成机制研究