一种文本依存句法分析方法

文档序号:25022857发布日期:2021-05-11 16:47阅读:179来源:国知局
一种文本依存句法分析方法

本发明属于依存句法分析技术领域,具体涉及一种文本依存句法分析方法。



背景技术:

一般来说,基于规则的分析方法、基于统计的分析方法以及规则与统计相结合的句法分析的方法构成了依存句法分析的主流。基于规则的分析方法需要大量的人工操作,比如构建语法知识库和编写语法规则,为了实现句法分析中的结构消歧,还需要借助条件约束的方法。原本人们打算将句法分析方法寄希望于规则,他们认为规则可以包含所有的句法结构,但通过实践表明,这种基于规则的方法适应能力差,完全不适合数据量高速增长的环境。由于其过于死板,准确率也难以有进一步的提高,因此现在已经不再常用。后来随着大规模语料库的构建,依存句法分析的主流方法逐渐向统计分析方向靠拢。依存句法分析利用统计学的原理,从语料库中获取依存分析的过程中所需的各种信息。

在基于统计的分析方法基础上,学者们进一步设计了许多依存分析树的构建算法,经过长时间的摸索与实践,逐渐形成了两种主流的依存分析方法,即基于转移的依存分析方法和基于图的依存分析方法。

基于转移的依存分析方法的起源是由yamada等人提出的基于移进规约算法的决策式分析模型,该方法由一个待处理队列,一个分析栈和一个决策层组成,句子的词语序列存放在待处理队列中,分析过程中生成的依存子树存放在分析栈中,根据分析栈和待处理队列的当前状态进行决策的工作由决策层负责,也就是向左规约,向右规约,还是将待处理队列中的元素移入分析栈,因此依存句法分析问题就被转换成了分类问题,作者利用支持向量机进行动作分类,进而实现了依存句法分析。该模型通过任务的转化,成功的将依存句法分析问题简化成了机器学习算法可以解决的分类问题,为依存句法分析的后续工作开辟了新思路。

在随后的2006年conll国际会议上,nivre等人提出了基于转移的依存句法分析器(maltparser),该模型继承了yamada所提出的模型,并且通过栈来对转移过程中所产生的不断变化的信息进行存储,转移动作也由三个改为了四个,使的分析精度得到了提高,适应复杂句子的能力也有所增强,与稍早期提出的基于图的依存句法分析器进行句法分析相比虽然精度接近,但是凭借其更加简单的算法,大大的缩减了句法分析所需的时间。

中国学者在这些方面也展开了研究,在深度学习还未普及时,就有多位学者提出了多种依存句法分析方法,2006年,刘挺马金山等人就提出了基于词汇支配度的汉语依存分析模型。后来在2007年,段湘煜提出了基于动作的依存分析方法,这篇文章提出了两种基于动作进行依存分析的模型,第一种为动作链模型,该模型不像传统的基于动作的句法分析模型一样专注于每一个转移动作,而是把整个句子所有的转移动作看成一个马尔科夫链,然后计算使用该转移序列产生的依存分析结果的概率,选择概率最大的一个动作序列作为分析结果。第二种方法是n阶段法,在依存分析的过程中,我们发现错误产生的高发在v-v,v-p,v-n位置上,所以作者提出在遇到以上三种情况时均使用shift操作将其暂时搁置,等其他的关系处理完毕后,根据更多的上下文特征,再对其进行处理。这种方式避免了在错误高发位置轻易采用贪婪算法导致错误的发生。10年,鉴萍,宗成庆提出了基于序列标注模型的分层式依存句法分析方法。作者认为现有的基于图的分析方法和基于转移的规约方法存在过于极端的问题,基于图的方法太注重全局特征,而基于转移的方法太专注于词语对,所以该文提出了基于层的依存分析方法,使用条件随机场首先判断相邻词之间的依存关系,之后对其进行规约,将规约后剩下的部分继续按之前的方法进行句法分析和规约操作。这种方法在精度上虽然提高不明显,但是在速度上比单纯的基于图的依存分析方法高出数十倍。后来,随着深度学习与神经网络的崛起,相关技术也逐渐被应用到依存句法分析中。2016年周青宇对基于深度学习的依存句法分析展开研究,将前馈神经网络作为特征提取器,再将提取得到的信息输入到长短期记忆网络,通过长短期记忆网络的每一步输出对动作进行预测,该分类器利用了当前的格局特征进行分类,使分析状态历史等更丰富的信息得到了有效的利用。在2017年,罗特等人发现,在分词,词性标注等过程中产生的误差,会在模型运行过程中持续增加,所以,他们提出三项任务联合模型,取得了比原来模型准确率提高0.33%的成绩。刘明童,张玉洁,徐金安,等人研究了基于多特征融合编码的神经网络依存句法分析模型,该方法对历史转移信息的利用方法进行了改进,从之前的对当前状态下的中心词编码,改进成了利用转移过程中产生的依存子树进行编码,并且提出引入历史决策动作信息作为特征辅助当前决策。2019年,沈阳工业大学的刘施翌等人提出了使用词性标注与深度图相结合的方法来解决依存句法分析问题,较大程度上减少在提取特征时因为词性标注所带来的错误蔓延并解决多层次特征无法获取的问题。综上所述依存句法分析中的几大难点为分词和词性标注的误差蔓延,依存子树的特征在转移决策时没有被完全利用,以及决策时没有考虑到历史决策信息。



技术实现要素:

本发明的目的在于提供一种文本依存句法分析方法。

本发明的目的通过如下技术方案来实现:包括以下步骤:

步骤1:获取待分析的文本;根据待分析文本所属领域,预训练encoder部分和decoder部分的gru神经网络;对文本进行分句处理,得到句子集合;对句子集合中每一个句子进行分词处理,得到每一个句子对应的词语序列x={x1,x2,x3,...,xn};

步骤2:将句子集合中每一个句子对应的词语序列x={x1,x2,x3,...,xn}输入至encoder部分的n个gru神经网络中进行编码,最后一个gru神经元的输出的编码结果即为每一个句子对应的特征向量d;d=sn,si=f(si-1,xi);

步骤3:从句子集合中选择一个句子,将该句子的词语序列x={x1,x2,x3,...,xn}和特征向量d输入至decoder部分,得到句子中每一个词语的依存词及其依存标签;

步骤3.1:初始化a=1;

步骤3.2:初始化分析栈,将词语xa压入分析栈顶;此时分析栈中只有一个词,没有任何依存子树的结构,即词语xa在treelstm部分的编码为词语xa本身,将词语xa与treelstm部分的编码拼接,得到状态特征向量ga=concat(xa,xa);将状态特征向量ga和词语序列x={x1,x2,x3,...,xn}的特征向量d输入至decoder部分的gru神经元中,得到输出ha=f(ga,d);

步骤3.3:计算词语xa与词语序列x={x1,x2,x3,...,xn}中任意词语xi的依存关系分值取分值最高对应的词语xm作为词语xa的依存词;若对应分值最高的词语为词语xa自身,则判定词语xa无依存词,将词语xa移出分析栈,令a=a+1,返回步骤3.2;

其中,w、u、v为设定的参数矩阵;b为设定的偏置值;i={1,2,...,n};

步骤3.4:根据依存标签打分函数,获取词语xa与其依存词xm的依存标签

其中,x为设定的参数矩阵;

步骤3.5:将词语xa的依存词xm压入分析栈顶;初始化t=1,令vhead=xa,vt=xm;

步骤3.6:令vdep=vt;将核心词vhead及其依存词vdep使用treelstm进行编码,得到编码后的词语vt;

vt=ot*tanh(ct)

ct=fhead*chead+fdep+cdep

fdep=σ(wdep[vhead,vdep]+bdep)

fhead=σ(whead[vhead,vdep]+bhead)

其中,ot为输出门权重;chead为核心词节点的状态信息;cdep为依存词节点的状态信息;σ为激活函数;whead为核心词节点的参数矩阵;wdep为依存词节点的参数矩阵;bhead为核心词节点的偏置值;bdep为依存词节点的偏置值;

步骤3.7:将词语vt与treelstm部分的编码vt拼接,得到状态特征向量gt=concat(vt,vt);

步骤3.8:将状态特征向量gt和上一次decoder部分gru神经元的输出ht-1输入至decoder部分的gru神经元中,得到当前输出ht=f(gt,ht-1);h0=ha;

步骤3.9:计算词语vt与词语序列x={x1,x2,x3,...,xn}中任意词语xi的依存关系分值取分值最高对应的词语xm作为词语vt的依存词,返回步骤3.4;若对应分值最高的词语为词语vt自身,则判定词语vt无依存词,将词语vt移出分析栈,选择vhead的其他依存词xn,令t=t+1,vt=xn,返回步骤3.6;

步骤3.10:根据依存标签打分函数,获取词语vt与其依存词xm的依存标签

步骤3.11:若t≤n,则令vhead=vt,令t=t+1、vt=xm,返回步骤3.6;

步骤4:重复步骤3,直至完成待分析的文本的所有句子中词语的句法分析。

本发明的有益效果在于:

本发明提出了基于pointer-net与treelstm相结合的神经网络模型的一种文本依存句法分析方法,该方法可以在依存分析的过程中兼顾上下文的语义特征,在每一步的决策过程中都会考虑到已生成的依存子树,进而提高依存句法分析的精度。

附图说明

图1为本发明中pointer-net与treelstm相结合的神经网络模型结构图。

图2为本发明的整体流程图。

图3为本发明中encoder部分工作过程示例图。

图4为本发明中分析栈的工作流程示例图。

图5为本发明中treelstm的工作流程示例图。

图6为本发明中双仿射注意力机制流程示例图。

图7为本发明中打分过程流程示例图。

图8为词语之间依存关系示例表。

图9为超参数设置示例表。

图10为中心词编码与treelstm编码对比结果表。

图11为两种不同的字向量编码方式对比结果表。

图12为两个基线模型与本发明的pointer-net与treelstm相结合的依存句法分析模型对比结果表。

具体实施方式

下面结合附图对本发明做进一步描述。

依存句法树是关系提取工作所需的重要依据,构建依存句法树的方法称为依存句法分析。依存句法分析的准确性直接影响着关系提取等上层工作的精度,为了提高依存句法分析的准确性,本发明提出基于pointer-net与treelstm相结合的依存句法分析方法,该方法可以在依存分析的过程中兼顾上下文的语义特征,在每一步的决策过程中都会考虑到已生成的依存子树。进而提高依存句法分析的精度。

一种文本依存句法分析方法,包括以下步骤:

步骤1:获取待分析的文本;根据待分析文本所属领域,预训练encoder部分和decoder部分的gru神经网络;对文本进行分句处理,得到句子集合;对句子集合中每一个句子进行分词处理,得到每一个句子对应的词语序列x={x1,x2,x3,...,xn};

步骤2:将句子集合中每一个句子对应的词语序列x={x1,x2,x3,...,xn}输入至encoder部分的n个gru神经网络中进行编码,最后一个gru神经元的输出的编码结果即为每一个句子对应的特征向量d;d=sn,si=f(si-1,xi);

步骤3:从句子集合中选择一个句子,将该句子的词语序列x={x1,x2,x3,...,xn}和特征向量d输入至decoder部分,得到句子中每一个词语的依存词及其依存标签;

步骤3.1:初始化a=1;

步骤3.2:初始化分析栈,将词语xa压入分析栈顶;此时分析栈中只有一个词,没有任何依存子树的结构,即词语xa在treelstm部分的编码为词语xa本身,将词语xa与treelstm部分的编码拼接,得到状态特征向量ga=concat(xa,xa);将状态特征向量ga和词语序列x={x1,x2,x3,...,xn}的特征向量d输入至decoder部分的gru神经元中,得到输出ha=f(ga,d);

步骤3.3:计算词语xa与词语序列x={x1,x2,x3,...,xn}中任意词语xi的依存关系分值取分值最高对应的词语xm作为词语xa的依存词;若对应分值最高的词语为词语xa自身,则判定词语xa无依存词,将词语xa移出分析栈,令a=a+1,返回步骤3.2;

其中,w、u、v为设定的参数矩阵;b为设定的偏置值;i={1,2,...,n};

步骤3.4:根据依存标签打分函数,获取词语xa与其依存词xm的依存标签

其中,x为设定的参数矩阵;

步骤3.5:将词语xa的依存词xm压入分析栈顶;初始化t=1,令vhead=xa,vt=xm;

步骤3.6:令vdep=vt;将核心词vhead及其依存词vdep使用treelstm进行编码,得到编码后的词语vt;

vt=ot*tanh(ct)

ct=fhead*chead+fdep+cdep

fdep=σ(wdep[vhead,vdep]+bdep)

fhead=σ(whead[vhead,vdep]+bhead)

其中,ot为输出门权重;chead为核心词节点的状态信息;cdep为依存词节点的状态信息;σ为激活函数;whead为核心词节点的参数矩阵;wdep为依存词节点的参数矩阵;bhead为核心词节点的偏置值;bdep为依存词节点的偏置值;

步骤3.7:将词语vt与treelstm部分的编码vt拼接,得到状态特征向量gt=concat(vt,vt);

步骤3.8:将状态特征向量gt和上一次decoder部分gru神经元的输出ht-1输入至decoder部分的gru神经元中,得到当前输出ht=f(gt,ht-1);h0=ha;

步骤3.9:计算词语vt与词语序列x={x1,x2,x3,...,xn}中任意词语xi的依存关系分值取分值最高对应的词语xm作为词语vt的依存词,返回步骤3.4;若对应分值最高的词语为词语vt自身,则判定词语vt无依存词,将词语vt移出分析栈,选择vhead的其他依存词xn,令t=t+1,vt=xn,返回步骤3.6;

步骤3.10:根据依存标签打分函数,获取词语vt与其依存词xm的依存标签

步骤3.11:若t≤n,则令vhead=vt,令t=t+1、vt=xm,返回步骤3.6;

步骤4:重复步骤3,直至完成待分析的文本的所有句子中词语的句法分析。

实施例1:

本发明是为了支持构建四险一金领域知识图谱所必须的关系提取等操作,提出了一种新型的神经网络模型,来帮助依存句法树的构建。本发明目的是对四险一金领域的政策法规文本进行依存句法分析。知识图谱的构建工作需要进行命名实体识别和关系抽取等操作,这些操作要想高效的完成,需要将待分析的句子以依存关系树的形式输入。本发明就是为这些工作提供依存关系树。

1)使用爬虫技术从四险一金领域相关网站爬取有关部门发布的四险一金领域政策法规作为训练、测试、验证所需的数据集。

2)搭建实验所需的环境。

3)构造pointer-net与treelstm相结合的依存句法分析模型。

4)通过实验计算该模型的准确率。

所述的使用爬虫技术从四险一金领域相关网站爬取有关部门发布的四险一金领域政策法规作为训练、测试、验证所需的数据集,具体情况如下:

1)共爬取四险一金领域政策法规共25554条,其中养老保险7704篇,失业保险1357篇,工伤保险1946篇,生育医疗保险8754篇,住房公积金2969篇;

2)将这些数据通过penn2malt0.2工具转化后得到指定的词语之间的依存关系的格式

3)将数据集按8:1:1的比例分为训练集、测试集和验证集。

所述的搭建实验所需的环境,具体操作如下:

1)实验所用的计算机配置:英特尔i7cpu,geforcertx2070max-q显卡

2)实验环境:python3.6,pytorch>=1.3.1,gensim>=0.12.0

所述的构造pointer-net与treelstm相结合的依存句法分析模型具体如下:

1)pointer-net是注意力机制的一个变体,它的特点是输入句子的长度就是指针网络输出类别的个数,由于输入句子长度不同,所以类别个数也不同,并且随着输入句子的不同,类别个数也在变化。pointer-net的目的就是根据任务的需求在输入句子中指出输出所指向的下标位置。

2)普通的lstm网络结构可以有效获取序列化文本的上下文信息,但是简单的按顺序对句子中的词语进行分析,并不能完全表达句子的语义信息,因为句子中的词语存在许多句法结构,这些句法结构对整个句子的语义起着至关重要的作用。treelstm通过其特有的树形结构,解决了普通lstm对句子语义信息表达不够完整的缺陷。

所述的通过实验计算该模型的准确率具体描述如下:

1)计算超参数;首先为每个超参数设置多个参数值,在训练集上分别以这些超参数值对模型进行训练,然后在验证集上验证使用这些参数得到的模型性能,最后得出一组使模型精度最高的超参数组合。

2)评测方法:依存句法分析的评测指标有以下五种,无标记依存正确率(uas),带标记依存正确率(las),依存正确率(da),根正确率(ra),完全匹配率(cm)。本发明主要使用其中最常用的无标记依存正确率和带标记依存正确率以及带标签的完全匹配率(lcm)进行评估。

本发明的主要技术特征体现在:

1)pointer-net与treelstm:依存句法树中词语之间的依存关系通过对句子中核心词与其依存词之间进行有向边标记来表示。该方法结合了部分基于图的依存分析方法,逐步改进而来的。所谓基于转移的依存分析方法是由yamada等人最先提出的,模型由以下三个部分组成:分析栈、缓冲区和依存弧。已完成的依存子树存放在分析栈中。待分析句子的单词序列存放在缓冲区中,已生成的依存关系存放在依存弧中。于是依存句法分析的过程转换成了建立依存关系所需转移动作的决策问题。后来通过改进,提出了基于lstm的转移动作序列的表示方法,lstm对时序信息有记忆功能,可以更加有效的进行数据传递,通过它对已经产生的转移动作序列进行记忆,可以在决策时考虑到历史转移动作的信息。随后又出现了利用encoder-decoder模型和注意力机制的转移动作判断方法,进一步提高了性能。本模型使用pointernet网络模型替换了传统的基于转移的依存句法分析模型,传统基于转移的依存句法模型相较于基于图的依存句法分析方法准确度稍差,但是基于图的依存句法分析方法的时间复杂度较高为o(n3),基于转移的依存句法分析方法在对长度为n的句子构建依存句法树的时间复杂度为o(n),每一步判断过程中使用注意力机制的时间复杂度为o(n),总时间复杂度为o(n2)。我们使用pointernet网络与biaffine注意力机制相结合的结构,去掉了转移决策中的转移动作判断过程,结合了一部分基于图的决策算法,直接判断输入所对应的依存词。这样既提升了依存句法分析的精度,又可以将时间复杂度控制在o(n2)内。

2)treelstm:treelstm是一颗依存树的抽象表示,普通的lstm网络结构可以有效获取序列化文本的上下文信息,但是简单的按顺序对句子中的词语进行分析,并不能完全表达句子的语义信息,因为句子中的词语存在许多句法结构,这些句法结构对整个句子的语义起着至关重要的作用。treelstm通过树形结构,更好的拟合了依存句法分析树的特点,使得对句子特征的抽取更加完整。

pointer-net与treelstm相结合的依存句法分析模型在结构上类似于序列到序列任务(seq2seq)中的encoder-decoder模型。

encoder部分的主要目的是将一个序列通过处理得到一个固定长度的特征向量d,特征向量d中包含着输入序列中的所有信息,并作为decoder部分的初始化输入,具体来看对于一个输入序列,x={x1,x2,x3,...,xn}encoder部分通过gru神经网络模型对每个位置的输入进行编码。编码的顺序按照句子的顺序从前到后进行,每一个位置的gru神经元上该向量的计算结果是通过前一个位置的输出s和当前gru神经元的输入xi共同决定的,计算公式如下所示。

si=f(si-1,xi)(3.2)

在各个位置的输出相继得到之后,输出的信息需要进行整合,整合后的输出即为encoder部分的输出向量d。计算公式如下所示,公式中的q代表整合的操作,整合的操作可以为拼接,相加或使用神经网络进行处理。在encoder模型中,输出向量通常为gru神经网络模型中最后一个gru神经元的输出sn。

d=q(s1,s2,s3,...,sn)=sn(3.3)

在本次实验的模型中,句子分词后的词语序列作为encoder部分的输入,encoder由上文中介绍过的使用字串进行编码得到的词向量,和gru神经网络层组成,使用字串进行编码的词向量预训练方法在专业术语众多的四险一金政策法规领域中,使众多在分词过程中被标记为集外词的四险一金领域政策法规术语得到各自的编码。随后将编码后的词语依次输入一个双向gru神经网络中,最后一个gru神经元的输出的编码结果即为encoder部分输出的特征向量d。encoder部分的输入以及工作过程如图3所示。

decoder部分的输入是encoder的编码结果d,每一时刻的输出是当前词所对应的依存词,整个decoder部分由以下几部分构成,第一部分是分析栈,分析栈中的起始状态为一个$,随着模型的运行,我们将句子中的词语依次放入分析栈中,首先将句子中的第一个词输入分析栈中,模型根据后续的算法从输入的句子中寻找到这个词的依存词,随后将这个词压入分析栈,再通过后续算法寻找这个词的依存词,如果在后续算法中,得到的依存词是目前分析栈栈顶的词语,则将栈顶的词语直接出栈,这种现象的发生说明此时这个栈顶元素的所有依存词都已经被检索完毕,如图4所示.

图4中分析栈的初始化状态栈中只有一个元素$,随后句子中的第一个词的词向量v1入栈,经过判断的都v1的依存词v2,于是将v2压入分析栈,这是v2经过判断后没有发现它的依存词,则将v2弹出栈,模型将继续寻找v1的依存词,如果v1也没有其他的依存词,将v1弹出分析栈,此时栈中只剩$,此时如果句子已经没有待输入的词,则依存句法分析完毕。如果有则继续输入,并重复以上的步骤。此处可以加入一个伪代码如果遇到在输入的句子中有多个词语都符合作为此时栈顶元素的依存词的条件,则选择距离该元素最近的一个词。

在一个词语进入分析栈后,模型的目的就是从输入的句子中,寻找到这个词的依存词。在将这个词输入到解码部分的gru神经元之前,我们不能仅仅依赖分析栈栈顶词所提供的词向量信息作为判断其依存词的依据,因为在依存句法分析的过程中,每一步的输出都会改变依存子树的状态,为了能够使当前时刻的依存词的判断考虑到历史信息的影响,需要对当前已经产生的依存子树信息进行提取,在这里我们使用treelstm神经网络结构进行该操作,treelstm神经网络在本模型中的工作方式如图5所示。

当依存句法分析尚未开始,模型处于初始化阶段,分析栈中仅有一个$,第一步先将待处理队列中的第一个元素v1压入分析栈中。此时分析栈中只有一个词,没有任何依存子树的结构,这时我们在treelstm部分的编码也为v1的向量本身。将v1和它对应的treelstm部分的编码拼接后,输入到decoder部分的gru神经元中,通过计算得到了v1的依存词v2,此时将v2压入栈中,这时分析栈中包含两个元素,栈顶元素v2,和栈顶第二个元素v1,他们之间的的依存关系是栈顶元素v2依赖于栈顶第二个元素v1。这时v2与v1形成了一棵依存子树,在进行下一步即寻找v2的依存词之前,我们将v1和v2形成的依存子树通过treelstm进行编码,得到当前状态下依存子树信息。接下来会有两种可能的情况发生,一种是v2没有其他依存词,这种情况下直接将v2弹出栈,寻找v1的其他依存词,得到依存词v3,然后将v1和v3按上述方法使用treelstm进行编码。另一种情况是寻找到了v2的依存词v3,这种情况直接将v3压入分析栈顶,并将v2与v3形成的依存子树通过treelstm进行编码。treelstm的计算方法如下。首先,treelstm神经元的输入为核心词节点和依存词节点,核心词节点的忘记门权重设为fhead,依存词节点的忘记门权重设为fdep,他们的计算方法如下所示

fdep=σ(wdep[vhead,vdep]+bdep)(3.4)

fhead=σ(whead[vhead,vdep]+bhead)(3.5)

若vhead与vdep中,存在节点为已经生成的依存子树,则该节点直接使用依存子树根节点的输出编码,否则使用对应词语的词向量。

此时treelstm中的神经元初始状态设为ct,依存词节点的状态信息为cdep,核心词节点的状态信息为chead。更新treelstm神经元状态ct的公式如下

ct=fhead*chead+fdep+cdep(3.6)

得到了treelstm神经元更新后的状态ct后,经过输出门权重ot的计算后,得到该treelstm神经元的输出vt,也就是此时依存子树的编码信息。

vt=ot*tanh(ct)(3.7)

得到依存子树的编码信息之后,将其与当前时刻的分析栈的栈顶元素进行合并,合并方法我们采用向量拼接的方式进行公式如下。

gt=concat(vt,vi)(3.8)

其中,gt为最终输入到gru神经网路神经元中的输入向量,vi为此时栈顶元素的编码。

拼接后我们得到的向量中,包含了历史上的判断结果产生的依存句法分析子树的信息和当前待分析的栈顶元素的编码信息。这样可以使得在后续的依存词判断过程中,每一步判断都可以考虑到历史上依存词判断的结果,有助于提高依存词判断的精度。

在了解了decoder部分的分析栈和treelstm的工作原理之后,我们得到了解码部分gru神经元的输入,gru神经网络的输入有两个部分,第一部分是历史状态信息(前一时刻gru神经元的输出)ht-1,第二部分是treelstm部分得到的依存子树编码与分析栈顶的词向量拼接得到的当前状态特征向量vt。将vt输入gru神经元之后,通过神经元计算得到了输出ht,该神经元的输出信息包括了从模型开始运行到当前节点过程中产生的所有依存词的判断结果和依存子树信息。该信息将作为判断当前时刻依存词的重要依据,另一方面可以作为下一时刻的历史转移信息。

在得到了gru神经元的输出ht后,我们需要使用打分函数来判断当前时刻输入的词语所对应的依存词。在这个阶段我们采用双仿射注意力机制的部分方法来实现。我们首先简单介绍以下双仿射注意力机制:双仿射注意力机制主要是使用在基于图的依存句法分析过程中,计算过程如图6所示:

基于图的依存句法分析在判断哪两个词具有依存关系时,模型将循环神经网络的每个输出再进行编码,编码后的结果有两种,一种为该词作为依存词时的编码di,另一种为该词作为核心词时的编码hi。将所有词按依存词编码得到的向量组成矩阵d,将所有词按中心词编码得到的向量组成矩阵h。通过初始化得到一个中间矩阵u,通过中间矩阵u的仿射变换,可以使每个按依存词编码得到的向量和按中心词编码得到的向量进行点积运算,得到的结果为一个矩阵s,矩阵的横坐标和纵坐标都是这些词语按顺序的排列,每个交点处的值为这两个词之间存在依存关系的概率。计算过程如下所示。

本发明对这种方法略作修改,首先得到某一时刻gru神经元的输出ht,将它使用一个前馈神经网络进行降维得到输出yt,目标维度为encoder部分gru神经元的输出si的维度。然后将它分别与encoder部分的每一个gru神经元的输出进行打分运算,打分过程在模型中的工作方式如图7所示。

在encoder的所有词语中,打分结果e最高的词即为当前时刻decoder中输入词语的依存词,分数e的计算公式如下:

公式中ht代表在decoder部分gru神经元在t时刻的输出经过一个前馈神经网络降维后的输出,si代表encoder部分第i个词的gru神经元的输出。w,u,v为参数矩阵。

在依存关系标签的判断过程中,我们同样使用这个方法,将已经判定好的ht和它对应的依存词si输入判断标签的打分函数公式中,公式如下:

设依存句法分析的依存标签有m种,gru神经元的输出维度大小为d,则打分函数的中间矩阵x维度为m*d*d,经过矩阵计算后得到的了一个大小文m*1*1的矩阵,通过矩阵中数值大小的比较可以得到此时依存词与核心词的之间的依存标签。

由于以往的基于图的依存句法分析中,对句子的分析方法是直接寻找全局最优的依存句法树,所以对句法分析过程中已生成的依存关系标签没有加以利用。在本模型中,由于该方法是根据基于转移的依存句法分析方法改进而来,判断的过程是针对每个词语逐步进行的,所以我们可以利用这个特点,将每一步依存词判断得到的词语之间的依存关系通过one-hot编码的方式与这一步判断得到的依存词的向量进行拼接,将拼接后得到的向量作为新的词向量参与treelstm中的依存子树编码操作,并替换分析栈中的词语使用的词向量。对于第一个输入的单词,我们使用0将其进行填充,使它向量维度与后续的结合了依存关系的词向量对齐。将这种结合了依存关系的词向量在decoder部分使用可以将每一步判断得到的依存关系标签信息加以利用,使得在每一步的分析过程中和treelstm的依存子树构建过程中,都可以考虑到历史标签的信息,提升了特征提取的丰富度,进而提升依存句法分析的精度。

综上所述,模型的工作方式总结如下,首先通过encoder部分的gru神经网络对输入的句子进行编码,得到输入句子的特征向量,该特征向量作为decoder部分的gru神经网络的初始化输入,在decoder部分输入之前,我们将treelstm的编码结果和把依存关系考虑在内的词向量进行合并,得到了既包含依存子树信息,又包含历史判断过程中产生的依存关系的特征向量,将这个向量输入gru神经网络的神经元中,得到的隐藏层的输出并对其进行降维,降维后的向量作为打分函数的输入,除此之外,打分函数还有另一个输入,即encoder部分的gru神经网络的隐藏层输出,打分函数将当前时刻decoder部分的输入与所有的encoder部分的输入进行打分计算,选出encoder部分打分最高的输入向量,这个向量对应的词语即为当前时刻decoder部分分析栈栈顶词语的依存词。将这两个词作为输入经过一个判断依存关系标签的打分函数得到这两个词语的依存关系标签。如此循环,直到分析栈中为空,此时句子中所有词语的依存词和依存关系标签判断结束,得到该句子的依存句法分析结果。

由于四险一金领域没有公开的数据集,所以本发明使用爬虫技术从四险一金领域相关网站爬取了有关部门发布的四险一金领域政策法规共25554条,其中养老保险7704篇,失业保险1357篇,工伤保险1946篇,生育/医疗保险8745篇,住房公积金2969篇,将这些数据通过penn2malt0.2工具转化后得到词语之间的依存关系,如图8词语之间依存关系示例表所示。

图8中第一列是我们所要分析的句子,将这个句子分词后的结果依次放入该列。第二列是这些词所对应的词性,第三列是这些词所依存的核心词在表中的位置,第四列为依存关系的标签我们按8:1:1的比例划分数据集。训练集用于训练依存句法分析模型,验证集用于最优参数的选择,测试集用于评测模型的效果。

在字向量和词向量编码方面,我们以四险一金领域政策法规为语料,首先用jieba分词工具对语料进行分词。字向量和词向量的获取以及对句子编码部分我们采用blstm-cnns的方法进行,我们对每个词使用cnn进行字符级别向量的表示,之后将这个字符级别的向量与词语级别的词向量进行拼接,得到的向量作为bilstm的输入,bilstm输出句子的编码结果。

在设置超参数的过程中,我们首先为每个超参数设置多个参数值,在训练集上分别以这些超参数值对模型进行训练,然后在验证机上验证使用这些参数得到的模型性能,最后得出一组使模型精度最高的超参数组合如图9所示。

基线模型使用的是一个基于图的深度双仿射注意力机制依存句法分析模型(dozatt,manningcd.deepbiaffineattentionforneuraldependencyparsing[j].2016.)和一个基于转移的分词,词性标注和依存句法分析三项任务并行的的联合模型,以下简称联合模型。

本发明使用的是pointer-net和treelstm相结合的依存句法分析模型。它的特点是使用pointer-net和biaffine注意力机制的结合,省略了基于转移的依存句法分析中判断转移动作和根据转移动作判断依存关系的步骤,直接通过指针从输入序列中选择依存词,在decoder阶段采用treelstm对每一个分析步骤生成的依存子树进行了编码,将编码结果作为decoder部分的输入,这种方法可以提高对依存子树特征提取的丰富度,有利于提高依存句法分析精度。第二,在向量的编码过程中,使用了基于bilstm-cnn的字向量和词向量相结合的编码方法,对编码阶段信息提取的丰富度有所提升。

下面针对这两方面的改进分别通过实验验证其效果:

首先采用传统的以中心词编码作为转移决策依据的方式进行依存句法分析,再用treelstm编码替换中心词编码。分析结果如图10所示。通过图10可以看出,treelstm编码对依存分析精度有着比较明显的提高,这是因为treelstm可以捕捉到更多的在每一步依存关系判断后形成的依存子树的信息。通过对比可以发现使用了treelstm句法分析可以捕捉到更加广泛的句子特征,从而提高了依存句法分析的精度。

下面来验证基于blstm-cnn的字向量和词向量相结合方法对依存分析结果的影响,我们首先使用只考虑词向量的方法直接训练依存句法分析器,再用基于bilstm-cnn的字向量和词向量相结合方法得到的向量替换原来的词向量再进行依存句法分析,其结果如图11所示。通过图11可以看出使用基于bilstm-cnn的字向量和词向量相结合方法的结果中,依存分析的准确率得到了明显提升。如图12所示为两个基线模型与本发明提出的模型在四险一金领域政策法规语料库上进行比较。从实验结果可以看出本发明采用的pointer-net与treelstm相结合的依存句法分析模型对依存分析的结果有一定程度的提升。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1