首页 > 编程知识 正文

句法分析PCFGTransitionbased parsing,层次分析法分析句法结构

时间:2023-05-04 07:22:43 阅读:242135 作者:677

       句法分析的基本任务是确定句子的句法结构或者句子中词汇之间的依存关系。 
  句法分析分为句法结构分析(syntactic structure parsing)和依存关系分析(dependency parsing)。以获取整个句子的句法结构或者完全短语结构为目的的句法分析,被称为成分结构分析(constituent structure parsing)或者短语结构分析(phrase structure parsing);另外一种是以获取局部成分为目的的句法分析,被称为依存分析(dependency parsing)。 

句法结构分析

句法结构分析方法可以分为基于规则的分析方法基于统计的分析方法两大类。

基于规则的句法结构分析方法的基本思路是,由人工组织语法规则,建立语法知识库,通过条件约束和检查来实现句法结构歧义的消除。基于规则的语法结构分析可以利用手工编写的规则分析出输入句子所有可能的句法结构。

根据句法分析树形成方向的区别,人们通常将这些方法划分为三种类型:自顶向下的分析方法,自底向上的分析方法和两者相结合的分析方法。自顶向下分析算法实现的是规则推导的过程,分析树从根结点开始不断生长,最后形成分析句子的叶结点。而自底向上分析算法的实现过程恰好相反,它是从句子符号串开始,执行不断规约的过程,最后形成根节点。

基于概率上下文无关文法的短语结构分析方法,可以说是目前最成功的语法驱动的统计句法分析方法,可以认为是规则方法与统计方法的结合。

PCFG(probabilistic context-free grammars)

PCFG结合上下文无关文法(CFG)中最左派生规则(left-most derivations)和不同的rules概率,计算所有可能的树结构概率,取最大值对应的树作为该句子的句法分析结果。对最左派生规则的每一步都添加概率,这样整棵句法分析树的概率就是所有这些“独立”的概率的乘积:

为了方便计算,在PCFG中添加对rules的限制(Chomsky Normal Form):

找概率最大的句法分析树结构:

1. 暴力搜索(Brute-force method) 
  暴力搜索Brute-force method(根据PCFG的rules,暴力计算不同句法结构的概率,选择概率最高的句法分析树作为结论),缺陷在于随着句子的增长,计算量指数增长: 

2. 动态规划(dynamic programming)CKY算法 
  π(i,j,X)π(i,j,X)is the highest score for any parse tree that dominates words , and has non-terminal X as its root. 
  因此整个句子的概率为π(1,n,S)=argmaxTG(s)π(1,n,S)=argmaxTG(s),其中TG(s)TG(s)是句子ss所有可能结构的集合。 

结合上面π(i,j,X)π(i,j,X)的定义: 

举例说明:

因此整个动态规划算法如下:

考虑算法时间复杂度: 
i,j,s的选择都是o(n),对于X、Y和Z 和rules的选择都是o(|N|)。(n是句子中单词的数量,N是非终止符号的数量) 

Lexical PCFG(基于词典的PCFG)


首先考虑PCFG的缺陷: 
  1、在PCFG中,词的选择具有很强的独立性假设,词的选择完全依赖于当前的词性(POS),而条件独立于与其他所有句法树上的结构(More formally, the choice of each word in the string is conditionally independent of the entire tree,once we have conditioned on the POS directly above the word),而这正是很多歧义问题的原因。下例中,’IBM’的选择仅仅与’NP’有关,而与其他树上的结构完全无关。 
 
2、对结构偏好(structure preference)不敏感 
  对于存在歧义的两个句子,具有完全相同的树形结构,但是由于缺乏词汇的信息,进而缺少结构依赖的信息,使得最终不同树形结构计算的概率完全相同。 
  如下例中:同一句话,两个完全不同的句法分析结构,由于采用了相同的rules,因此概率计算最终也会相同。 
 


 
  特别是介词短语(PP)的情况,在训练集中能统计到PP与名词短语(NP)或动词短语(VP)结合时不同的比例,但是PCFG完全忽略了这种偏好(preference)。

Lexicalized Context-Free 
  自下向上(bottom-up)的标记每条规则的head child,并添加到句法分析树上,每条规则的head child采用启发式自动选择。 
 


 
如下图在基于词典的PCFG中,规则概率如下: 


 
基于词典的PCFG的参数估计 
  由于采用lexicalized PCFG之后,添加了词典信息,rules的数量和参数数量增多。因此需要考虑参数估计方法。 
 
  整个概率计算分为两部分,第一部分预测了规则(rules)的概率,第二部分预测了该规则下的词概率,每部分都利用平滑的估计方法进行计算。 
  
 
 
  对于Lexical PCFG,同样存在如何寻找概率最大的句法分析树结构的问题,而答案和PCFG相同,一样是采用动态规划(dynamic programming)的思想。 

依存关系分析

依存语法的本质是一种结构语法,它主要研究以谓词为中心而构句时由深层语义结构映现为表层语法结构的状况及条件,谓词与体词之间的同现关系,并据此划分谓词的词类。

依存句法分析的可用特征:

1. 双单词关联:比如issue->the

2.依存距离:依存词和中心词的距离,大部分是相邻的两个词,倾向于距离近的

3.标点符号两边的成分可能没有相互关系

4.词语配价,对于不同词性依附的词的数量或者依附方向,一个词语最多有几个依赖者

Transition-based parsing(基于贪心决策动作的拼接句法树)

一次分析任务c=(s,b,A)由一个栈s,一个队列b,一系列依存弧A构成。

栈s是用来储存系统已经处理过的句法子树的根节点的,初始状态下S=[ROOT]。另外,定义从栈顶数起的第i个元素为sisi。那么栈顶元素就是s1,s1的下一个元素就是s2。则称s2为左焦点词,s1为右焦点词。接下来的动作都是围绕着这两个焦点词展开的。 

队列 
  初始状态下队列就是整个句子,且顺序不变b=[w1...wn],队列的出口在左边。 
依存弧 
  一条依存弧有两个信息:动作类型+依存关系名称I。l视依存句法语料库中使用了哪些依存关系label而定,在arc-standard系统中,一共有如下三种动作: 
  LEFT-ARC(l):添加一条s1 -> s2的依存边,名称为l,并且将s2从栈中删除。前提条件:|s|≥2。亦即建立右焦点词依存于左焦点词的依存关系,例如: 
   
  RIGHT-ARC(l):添加一条s2 -> s1的依存边,名称为l,并且将s1从栈中删除。前提条件:|s|≥2。亦即建立左焦点词依存于右焦点词的依存关系,例如: 
   
  SHIFT:将b1出队,压入栈。亦即不建立依存关系,只转移句法分析的焦点,即新的左焦点词是原来的右焦点词,依此类推。例如: 

给出例子:

这样就成功建立了依存关系树,那么核心问题就来到如何预测三种操作。 
14年提出了一个非常简单高效的神经网络预测方法,模型如下:

原方法中,输入是栈顶的两个单词和他们的四个子结点单词,加上队列头部的一个单词,以此贪心地预测下一个操作。 
不过,输入中每个单词的并不是单纯以词向量表示,还包括句法标记和已有的依存弧信息,均已向量化:

Graph-based的依存解析方法

解析过程:学习一个打分函数,针对一句话在所有可能的解析结果(解析的依存树)中执行全局的穷举搜索,得到一个打分最高的解析树. 
 优点:目前效果相比transition-based较好 
 挑战:搜索的过程速度很慢

 这个模型是把之前构建树的问题变成距离计算的问题。它本质做的事情是建立一个矩阵,行和列都是这个句子里的token,每两个行列中的一个点表示a修饰b的概率或b修饰a的概率的一个得分,最后要形成树,我们就是在这个距离向量中找一棵最小生成树,生成出来的就是dependency parser。

浅层语法分析(局部语法分析)

浅层语法分析只要求识别句子中的某些结构相对简单的独立成为,例如非递归的名词短语、动词短语等,这些被识别出来的结构通常称为语块(chunk)。

浅层句法分析将句法分析分解为两个主要子任务,一个是语块的识别和分析,另一个是语块之间的依附关系分析。其中,语块的识别和分析是主要任务。

基本名词短语(base NP)是语块中的一个重要类别,它指的是简单的、非嵌套的名词短语,不含有其他子项短语,并且base NP之间结构上是独立的。示例如下:

base NP识别就是从句子中识别出所有的base NP,根据这种理解,一个句子中的成分和简单的分为baseNP和非base NP两类,那么base NP识别就成了一个分类问题。

base NP的表示方法有两种,一种是括号分隔法,一种是IOB标注法。括号分隔法就是将base NP用方括号界定边界,内部的是base NP,外部的不属于base NP。IOB标注法中,字母B表示base NP的开端,I表示当前词语在base NP内,O表示词语位于base NP之外。

https://www.jianshu.com/p/fb408b6a0904

生成性依存分析方法

生成式依存分析方法采用联合概率模型生成一系列依存语法树并赋予其概率分值,然后采用相关算法找到概率打分最高的分析结果作为最后输出。

生成式依存分析模型使用起来比较方便,它的参数训练时只在训练集中寻找相关成分的计数,计算出先验概率。但是,生成式方法采用联合概率模型,再进行概率乘积分解时做了近似性假设和估计,而且,由于采用全局搜索,算法的复杂度较高,因此效率较低,但此类算法在准确率上有一定优势。但是类似于CYK算法的推理方法使得此类模型不易处理非投射性问题。

判别式依存分析方法

判别式依存分析方法采用条件概率模型,避开了联合概率模型所要求的独立性假设(考虑判别模型CRF舍弃了生成模型HMM的独立性假设),训练过程即寻找使目标函数(训练样本生成概率)最大的参数θ(类似Logistic回归和CRF)。

判别式方法不仅在推理时进行穷尽搜索,而且在训练算法上也具有全局最优性,需要在训练实例上重复句法分析过程来迭代参数,训练过程也是推理过程,训练和分析的时间复杂度一致。

确定性依存方法

确定性依存分析方法以特定的方向逐次取一个待分析的词,为每次输入的词产生一个单一的分析结果,直至序列的最后一个词。

这类算法在每一步的分析中都要根据当前分析状态做出决策(如判断其是否与前一个词发生依存关系),因此,这种方法又称决策式分析方法。

通过一个确定的分析动作序列来得到一个唯一的句法表达,即依存图(有时可能会有回溯和修补),这是确定性句法分析方法的基本思想。

基于约束的分析方法

基于约束满足的分析方法建立在约束依存语法之上,将依存句法分析看做可以用约束满足问题来描述的有限构造问题。

约束依存语法用一系列形式化、描述性的约束将不符合约束的依存分析去掉,直到留下一棵合法的依存树。

 

 

 

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。