【白话NLP】——依存句法分析

1. 依存句法的理论

1.1 依存关系

在依存句法分析中,句子中词与词之间存在一种二元不等价关系主从关系。在句子中,如果一个词修饰另一个词,则称修饰词为从属词(dependent),被修饰词成为支配词(head) ,两者之间的语法关系就是依存关系(dependency relation)

如句子“小目标”中的形容词“小”与名次“梦想”之间的关系如下图所示:
在这里插入图片描述
在图中,箭头的方向由支配词指向从属词。将句子中所有的词语的依存关系以有向边的形式表示出来,就会得到一颗树,该树即是依存句法树(dependency parse tree)

在这里插入图片描述

1.2 依存句法的约束公理

现代依存语法中,语言学家Robinson对依存句法树提出了一下4条约束性公理:

  1. 有且只有一个词语(root,虚拟根节点,简称虚根)不依存于其他词语;
  2. 除此之外所有词语必须依存于其他词语;
  3. 每个词语不能依存于多个词语;
  4. 如果词语A依存于B,那么位置处于A和B之间的词语C只能依存于A、B或AB之间的词语;

这四条公理分别约束了依存句法树的根节点的唯一性连通无环投射性

2. 基于转移的依存句法分析

依存句法分析是一种中高级NLP任务,用来分析句子的依存语法。通常根据句子的词语词性,生成一颗依存句法树

目前常用的依存句法分析方法是:基于转移的依存句法分析。基于转移的依存句法分析属于监督学习的范畴,其涉及许多组件。我们先定义一台虚拟的机器,这台机器会根据自身的状态和输入的词语预测下一步要执行的转移动作,然后根据转移动作拼装句法树。该类算法中比较经典的是:Arc-Eager

2.1 Arc-Eager转移系统

一个转移系统(Transition System)S由4个部件构成: S = ( C , T , c s , C t ) S = (C,T,c_{s},C_{t}) S=(C,T,cs,Ct)
其中:

  • C是系统状态集合;
  • T是所有可执行的转移动作的集合,每个转移动作可视作为输入输出都为系统状态的函数;
  • c_s是一个初始化函数,将句子转换为一个初始的系统状态;
  • C_t是C的一个子集,表示一系列终止状态,系统进入这些状态之后即可停止,并输出最终的动作序列。

系统状态由3元组组成:c = (s, b, A),其中:

  • s是一个栈,用来存储单词,这些单词可视作子树的根节点;
  • b是一个队列,用来存储单词,初始状态是整个句子;
  • A是一个集合,表示已经确定的依存弧。

Arc-Eager转移系统的转移动作集合和响应的执行条件如下表所示:

动作名称动作条件备注
Shift(s, i|b,A) => (s|i, b, A)队列b非空将队首单词i压栈
LeftArc(s|i, j|b, A) => (b, j|b, AU{(i <-- j)})栈顶单词i没有支配词将栈顶单词i的支配词设置为队首单词j,即i作为j的子节点;
RightArc(s|i, j|b, A) => (s|i|j, b, AU{(i–>j)} )队首单词就没有支配词将队首单词j的支配词设置为栈顶单词i,集j作为i的子节点;
Reduce(s|i, b, A) => (s, b, A)栈顶单词i已有支配词将栈顶单词i出栈;

备注:转移系统的终止状态为:栈为空,且队列仅剩下虚根(root)时的状态。

Demo

以“我爱自然语言处理”为例,使用Arc-Eager转移系统进行依存分析时系统状态如下:

编号转移动作sbA
0init[][我,爱,自然语言处理,root]{}
1Shift[我][爱,自然语言处理,root]{}
2LeftArc(主谓)[][爱,自然语言处理,root]{我 <-- 爱}
3shift[爱][自然语言处理,root]{我 <-- 爱}
4RightArc(动宾)[爱,自然语言处理][root]{我 <-- 爱, 爱 --> 自然语言处理}
5Reduce[爱][root]{我 <-- 爱, 爱 --> 自然语言处理}
6LeftArc(核心)[][root]{我 <-- 爱, 爱 --> 自然语言处理, 爱 <-- root}

在这里插入图片描述

3. 依存句法分析的工具

常用的依存句法分析工具如下:

  1. HanLP
  2. LTP
  • 8
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值