王旭阳 朱鹏飞
(兰州理工大学计算机与通信学院 甘肃 兰州 730050)
语义角色标注是浅层语义分析的常见实现方式,已广泛应用于机器翻译等领域。语义角色标注是分析句子中每个词与对应谓词的语义关系,并作相应的语义标记,如施事、受事、工具或附加语等。传统的语义角色标注任务使用基于统计和基于规则的方法,文献[1-3]研究了基于分词、词性和短语结构的自动语义标注;Wang[4]提出一种基于Bi-RNN的汉语语义角色标注方法,规避了传统方法的缺点(如工作量大),同时利用序列中长距离的信息在CPB语料上进行了实验,得到77.09%的F值;Roth等[5]提出了一种利用神经序列建模技术进行语义角色标注的新模型;Sha[6]在论元关系识别过程中引入依存信息,在CPB上取得了77.69%的F值;Guo等[7]在充分利用了句法路径信息的基础上使用Bi-LSTM进行建模;Marcheggiani[8]等利用双向LSTM在标准的外域测试集上实现了最好的标注结果;王瑞波等[9]将汉语词语、词性等特征进行有效融合后利用神经网络构建了语义角色标注模型,并使用了Dropout技术改善模型的训练过程,使得模型的F值有了接近9%的提升;袁里驰等[10]利用配价结构体现语义与句法结构的关系,并将谓词的配价信息融入语义角色标注模型,在动词性谓词标注模型和名词性谓词标注模型中分别取得了93.69%和79.23%的F值;张苗苗等[11]采用基于句法特征的统计机器学习算法,引入了Gate机制对词向量进行调整,最后F值达到了79.53%。传统的语义角色标注任务使用基于统计和基于规则的方法,具有以下缺点:(1) 过于依赖句法分析的结果;(2) 特征的提取和选择十分困难,并且投入较大;(3) 领域适应性差。
总结上述内容,本文提出一种基于模糊机制和语义密度聚类的汉语自动语义角色标注系统,主要工作如下:
(1) 引入语义密度聚类算法,利用密度的概念对语料中的谓词进行全局的聚类,将稀疏谓词替换为其所属聚类集合中的常见谓词。
(2) 引入模糊机制,利用距离的概念减小原始词向量的语义性并提升与谓词词向量的相关性。
(3) 利用Bi-LSTM网络实现端到端的SRL模型,对文本的历史信息和未来信息能得到充分的利用。在训练阶段引入了Dropout正则化,避免神经网络过拟合问题的出现。最后使用CRF对标签概率进行全局的归一化处理后,完成最优的序列标注。
BRNN解决了传统RNN网络无法利用句子未来信息的缺陷,但是两者都无法对长距离信息进行很好的建模,而且很容易出现梯度消失以及梯度爆炸的问题,随着LSTM单元的引入能很好地解决这些问题。
所有的RNN网络都有隐藏状态,也就是“记忆模块”,用于结合当前输入与前一个状态,除此以外,LSTM还添加了一个单元状态(cell state),用于记录随时间传递的信息。在传递过程中,通过当前输入、上一时刻隐藏层状态、上一时刻细胞状态以及门结构来增加或删除细胞状态中的信息。门结构用来控制增加或删除信息的程度。LSTM单元的原理图如图1所示。
图1 LSTM单元示意图
LSTM利用三个门结构来用于信息的更新和利用,即输入门、遗忘门和输出门。设h为LSTM单元输出,c为LSTM记忆单元的值,x为输入数据。所有门的计算除了受当前输入数据xt和前一时刻的LSTM单元输出ht-1的影响外,还受前一时刻单元值ct-1的影响。
(1)
it=σ(wxi×xt+whi×ht-1+wci×ct-1+bi)
(2)
(2) 遗忘门:利用值域为(0,1)的ft函数控制前一时刻ct-1的细胞状态传递到当前时刻ct中的信息量。
ft=σ(wxf×xt+whf×ht-1+wcf×ct-1+bf)
(3)
式中:w代表权重。
由上可得当前时刻细胞状态值:
(4)
(3) 输出门:用于控制LSTM记忆单元状态值的输出。
ot=σ(wxo×xt+who×ht-1+wco×ct-1+bo)
(5)
最后可以得出LSTM单元的输出:
ht=ot⊙tanh(ct)
(6)
RNN-BLSTM使用LSTM单元在Bi-RNN的基础上进行了改进,在同一层使用两套连接权重矩阵分别对正向和反向的信息进行建模。Bi-LSTM结构如图2所示。
图2 Bi-LSTM网络示意图
梯度下降算法是最常用的神经网络模型训练优化算法。梯度下降算法的原理:目标函数J(θ)关于参数θ的梯度就是目标函数上升最快的方向。对于最小优化问题,只需在梯度相反的方向上将参数前进一个步长,就能够实现目标函数的下降,其中步长又称为学习率。参数θ的更新公式如下:
θ←θ-η·▽θJ(θ)
(7)
式中:▽θJ(θ)是参数的梯度。
小批量梯度下降算法的核心思想是每次更新的时候从训练集中随机选择n个样本进行学习,更新公式如下:
θ=θ-η·▽θJ(θ;xi:i+m;yi:i+m)
(8)
小批量梯度下降算法具有随机梯度下降算法和批量梯度下降算法的优点,实现了更新速度和更新次数之间的平衡。与随机梯度下降算法相比,小批量梯度下降算法减小了训练过程中参数的变化幅度,能够更稳定地收敛;相对于批量梯度下降算法,小批量梯度下降算法利用高度优化提高了梯度计算的效率,加快了每次学习的速度,而且规避了内存不足的现象。
Dropout正则化是Hinton[12]在2014年提出的一种防止神经网络过拟合的正则化约束技术。通过在反向传播误差更新权值的时候随机选择一部分权值不更新,相当于随机删除一部分的Dropout隐藏节点,随着节点数目的减少,就能防止神经网络的过度训练,也就是防止参数过拟合问题的出现。但这种删除实质上只是暂时的忽略这些节点,而不是真正意义上的完全抛弃。
在训练过程中,被“丢弃”的隐藏节点是随机的,也就是说在每一次的训练过程中,使用的网络都是不一样的。由于每次用于训练的隐藏节点是随机的,所以并不是每一个节点都能同时出现在每一次的训练过程中,这样就可以保证权值的更新不依赖于有固定关系隐藏节点的共同作用,很大程度上保证了特征的有效性和随机性;在模型用于预测的时候,又会用到所有的隐藏节点,相当于将所有的训练的模型进行了有效的组合,得到了一个更完美的模型。
我们采用信息检索中常用的精确度、召回率和 F 值来评估模型的性能。
(1) 精确度:反映了模型标记的正确率。公式如下:
P=fn×100%/fa
(9)
(2) 召回率:衡量了模型标记的正确覆盖率。公式如下:
R=fn×100%/n
(10)
(3) F值:对精确度和召回率进行调和平均。公式如下:
F=2×P×R/(P+R)
(11)
式中:fn表示模型能够正确标记的语义角色个数,fa表示模型标记出的语义角色个数,n表示测试集中包含的所有语义角色的个数。
本文构建并训练了一个LSTM网络层,以获得词性特征的表达,并利用词性标签对数据进行训练。
(12)
式中:nin表示网络层输入节点数,nout表示网络层输出节点数。
在中文的语义角色标注中,存在明显的谓词标注不均匀问题,常见谓词和稀疏谓词的标注实例呈现两种极端的状况,稀疏谓词由于标注的次数很少,所以在模型训练过程中缺乏足够的样本实例,导致模型很难学习到该类谓词的有效参数,使得训练后的模型对稀疏谓词不能进行很好的语义分析。本文将出现15次以下的谓词表示为稀疏谓词,超过15次的表示为常见谓语,并引入了语义密度聚类算法对稀疏谓词进行聚类以后替换为语义最相近的常见谓词,提升语义角色标注模型对于稀疏谓词标注的适用性。
我们采用wordvec提供的Skip-Gram模型训练维基百科中文数据得到的词向量对语料中谓词进行初始化,然后使用语义密度聚类算法进行聚类,其步骤描述如下:
(1) 计算每个谓词词向量与其他谓词词向量的欧式几何距离。
(2) 计算每个谓词词向量的K距离,升序排列后得到E′。
(3) 根据E′绘制曲线,急剧变化位置所对应的K距离作为Eps。
(4) 根据Eps计算得到所有核心向量,建立核心向量到Eps范围内的映射。
(5) 根据核心点集合以及Eps计算可以连通的核心向量,得到噪声向量。
(6) 将能连通的每一组核心向量以及核心距离小于Eps的向量归为一个聚类集合。
完成语义密度聚类以后,我们可以得到多个基于密度的词向量集合。在数据输入阶段,当一个谓词输入进入语义角色标注系统的时候,会先判断其是否为稀疏谓词,如果是稀疏谓词,我们将其替换为其所在聚类集合中的常见谓词,如果聚类集合中存在多个核心谓词,则选择距离最近的常见谓词;如果是噪声向量即没有所属聚类集合的谓词,以及常见谓词,我们不做任何替换。
语义角色标注任务的目的是获取文本中词语与谓词的语义关联,因此语义角色标注模型实际上学习的是每个词语与谓词之间的关系,每个词语具有独立的语义。在训练之前,词向量之间不能体现相互间的关系,所以在模型训练可以说是从零开始的。为此我们引入了词向量“模糊”机制,利用距离的概念减小原始词向量的语义表示性并提升与谓词词向量的相关性。
本文在数据输入阶段,对输入句子的所有词语进行词向量初始化,然后利用下列公式分别计算非谓词与谓词之间的距离di和距离总和d。
(13)
d=∑di
(14)
词向量模糊机制由非谓词词向量以及谓词词向量和乘积相加操作组成,如式(15)所示,经过这样处理的词向量在一定程度上减小了其原始语义信息的表示程度并提升了与谓词词向量的相关性。wd表示非谓词词向量,wp表示谓词词向量。
(15)
基于Bi-LSTM神经网络模型,提出了一个基于模糊机制和语义密度聚类的汉语自动语义角色标注模型。
作为SRL模型的一部分输入,我们将“模糊化”后的词向量与词性向量融合为一种的新的特征向量组合,所以在模型构建阶段,SRL模型网络层的输入向量可以定义为:
在模型的训练阶段,对于整个模型的网络层来说,输入应该是融合向量与输入数据对应的语义角色标签,所以我们定义模型的输入为:
数据完成预处理以后,就发送到网络层开始训练。随着神经网络深度的增加,容易出现过拟合现象,并且泛化能力会有所下降,所以本文构建了4层B-LSTM网络来用于我们的语义角色标注任务,图3是一个只有两层网络的模型整体框架。
图3 基于B-LSTM的汉语自动语义角色标注模型
在模型训练阶段,我们使用小批量梯度下降法(MBGD)作为整体的训练技术,实现目标函数的优化。输入特征向量通过网络层的特征学习后,将网络层输出送入CRF层使用维特比算法进行序列标记任务。
在本文的方法中,我们将语义角色标注模型转换为单词序列标注问题,因此在我们计算出神经网络中输入序列的每个单词的标签概率之后,将标签概率送入CRF层,并且对所有表现序列归一化处理以完成最优的序列标注。我们使用了维特比算法来进行最优标签序列的推断。维特比伪算法如算法1所示。
算法1维特比伪算法
输入:标签概率x=(x1,x2,…,xn)、特征向量F(y,x)和权值向量w。
(1) forj= 1 tom
(2)δ1(j)=w·F1(y0=start,y1=j,x);
(3) end for;
(4) fori=2 ton
(5) forl=1 tom
(6)δi(j)=max{δi-1(j)+w·Fi(yi-1=j,yi=l,x)};
(7)ψi(l)=argmax{δi-1(j)+w·Fi(yi-1=j,yi=l,x)};
(8) end for;
(9) max(w·F(y,x))=maxδn(j);
(11) end for;
本文利用Google开源工具wordvec提供的Skip-Gram模型来训练维基百科中文数据得到词向量,并用于对实验语料进行词向量初始化。实验语料选取的是Chinese Proposition Bank(CPB),它是宾州大学人工标注语料库,标注标注方法和English PropBank类似。CPB仅标注核心动词及其相关语义角色,共定义了谓语动词、6类核心语义角色和13类附加语义角色,如Pred、Arg0-Arg5等。在本文的实验中,我们选取CPB第81分块至第364分块(chtb_081.fid~ chtb_364.fid)的文本数据作为训练数据,选取第1分块至第17分块(chtb_001.fid~ chtb_017.fid)作为测试集,第41分块至第59分块(chtb_041.fid~ chtb_059.fid)作为开发集。
我们将语义角色的识别和分类任务同时进行,目的是为一个词给出相应的Arg0-Arg5或者ArgM的标签。在实际标注过程中,一个语义角色不仅包含一个词,也有可能由几个词组成,简单地使用像Arg0这样的标签并不能真正识别语义角色的边界或者非语义角色的词。所以我们采用了IOBES标注策略,使用I-ArgX表示语义角色的中间词,B-ArgX表示语义角色的开始词,E-ArgX表示语义角色的结束词,S-ArgX表示单一词构成的语义角色,增加标记O为非语义角色的标签,共计形成77个标签。
本文将实验模型分为四类,分别为:(1) 原始词向量融合词性特征向量作为输入的模型;(2) 对非谓语词向量进行“模糊”化并融合词性特征向量作为输入的模型;(3) 对谓语进行语义密度聚类并将原始词向量融合词性特征向量作为输入的模型;(4) 对谓语进行语义密度聚类并将“模糊”化后的非谓语词向量融合词性特征向量作为输入的模型。为了方便描述,本文将这四类模型分别依次标记为模型一、模型二、模型三和模型四。首先我们语义角色标注模型的角度即dropout概率参数、学习率、向量维度三个影响因子对本文提出的模型四进行性能评估。
默认超参数设置:词性向量维度为32,训练次数为150, 隐藏节点数为128。
3.2.1Dropout概率参数实验对比
我们在表1中对比了不同Dropout概率参数下模型的性能,该实验的超参数设置:学习率为0.003,词向量维度为200。具体实验结果如表1所示。
表1 Dropout概率参数对比实验
从表1中可以看出,不加入Dropout正则化技术的时候模型的F值仅为73.84%,随着连接的丢弃概率的逐渐升高,在概率为0.6时模型的F值较概率为0时提高了约5%,达到了78.96%;但是概率参数达到0.7时,模型的F值会下降。从精确度和召回率角度分析,Dropout正则化技术的引入大幅度地提高了精确度,然而,对召回率的影响很小,这说明,Dropout正则化有效地解决了模型过度拟合的问题。
3.2.2学习率实验对比
我们在表2中对比了不同学习率下模型的性能,该实验的超参数设置:Dropout概率参数为0.6,词向量维度为200。具体实验结果如表2所示。
表2 学习率对比实验
从表2可以看出,学习率从0.1减小到0.003,模型的F值有了约8%的提升。说明随着学习率的减小,可以使梯度下降法得到更好的性能,从而提高模型的训练效率。但是由于本文使用到的数据量不是十分的巨大,所以当学习率降到0.001时,模型的性能反而比不过学习率为0.003时的模型性能。
3.2.3词向量维度实验对比
我们在表3中对比了不同词向量维度下模型的性能,该实验的超参数设置:Dropout概率参数为0.6,学习率为0.003。具体实验结果如表3所示。
表3 词向量维度对比实验
从表3可以看出,随着词向量维度的增加,模型的各个评价指标值都有所增加,说明词向量维度的增加可以提高特征的区别度,提高模型对特征的捕捉能力;从另一角度来看,三个评价指标的增长幅度都不大,说明word2eVec可以将字词转化为稠密向量用于表征词,能很好地获取词义信息。
3.2.4语义密度聚类与模糊机制实验对比
通过上述三个实验可以得出结论:当Dropout概率参数为0.6,学习率为0.003,词向量维度为300,本文模型的性能达到最佳。利用该参数下的模型,我们在表4中对比了加入语义密度聚类和模糊机制模型的性能,具体实验结果如表4所示。
表4 语义密度聚类与模糊机制对比实验
从表4中我们可以看出,模糊机制与语义密度聚类对于提升模型的各项指标都有较为明显的促进作用,说明模糊机制能一定程度上提升非谓词词向量与谓词词向量的相关性并减小其原始的语义表达能力;语义密度聚类能减小模型对稀疏谓词训练不足的缺陷,基本上能让每个“谓词-论元”组合都有足够数量的训练样本用于模型的训练,较大程度地提升模型的性能。
3.2.5不同方法组合的Loss图
在对四个模型训练的过程中,我们统计了各个模型的Loss变化曲线,并整合为如图4所示的曲线图,以便于观察比较。
图4 不同模型的Loss变化曲线图
从图4可以看出,在训练了大概1 400个epoch之后,模型一开始趋于稳定;在训练了大概1 700个epoch之后,模型2开始趋于稳定;在训练了大概1 200个epoch之后,模型三开始趋于稳定;在训练了大概1 300个epoch之后,模型四开始趋于稳定。在将 “模糊”机制应用于SRL模型以后,模型需要更多的数据训练才能趋于稳定,说明“模糊”机制使得词向量变得更无规律性,减小了词向量的原始语义表达能力。但是随着训练的进行,训练后期的Loss值变化相较于其他模型显得平滑许多,说明“模糊”机制使得非谓语词向量增大了与谓语词向量的相关性,在两者差异性缩小以后,模型的适用性会得到提高。将语义密度聚类应用于SRL模型以后,训练模型趋于平稳所需要的数据量有了一定程度的缩小,说明语义密度聚类减小了稀疏谓语对于模型训练不均衡的影响,使得“谓语-论元”的数据变得更加具有代表性。
3.2.6与其他模型实验对比
通过上述三个实验可以得出结论:当Dropout概率参数为0.6,学习率为0.003,词向量维度为300,本文模型的性能达到最佳。我们将用该参数下的模型与其他模型进行性能对比。具体对比结果如表5所示。
表5 与已有标注模型的结果对比
从表5可以看出,本文提出的方法相比较于依赖句法分析和人工特征的传统方法,F值有了很大幅度的提升,说明基于深度学习的语义角色标注模型能更好地学习字词特征之间细微差别,对于特征的学习效率更高。本文引入了“模糊”机制和语义密度聚类算法,能提升模型对于数据训练的密集程度,减小稀疏谓语对于模型训练不均衡的影响,并提升非谓语词向量与谓语词向量的相关性,提升模型的训练准确度。
为了弥补传统语义角色标注方法和现有基于神经网络模型方法的局限性,本文提出了一种基于“模糊”机制和语义密度聚类的汉语语义角色标注模型,并在CPB上进行验证。实验表明:本文提出的方法较传统语义角色标注方法性能有了很明显的改进,较已有的基于深度学习的语义角色标注模型也有了小幅度的进步。本文对不同的实验超参数以及不同模型的组合进行了对比实验,并且在模型训练过程中使用了Dropout正则化方法来缓解模型过拟合的现象,最终本文提出的模型最好的F值达到了81.24%。虽然本文提出的方法相较于以前的大部分方法,性能上有了一定的改进,但还有很多的不足。例如在语义密度聚类的时候,没有考虑特征的选择,而是直接利用距离来判断谓词之间语义的相关性进行直接的替换,而且在模型的调优方面没有做到尽善尽美。后续工作将从词向量的语义表达形式以及如何将领域信息融入SRL模型进行深入的研究。