CS224N笔记——依存句法分析

博客介绍了描述语法的两种主流观点,探讨了句法树表达歧义及依附歧义问题。讲述了标注数据集Universal Dependencies treebanks的崛起,分析了依存句法分析可用特征、方法及效果评估指标。还指出传统句法分析存在的问题,说明了需要神经网络句法分析器的原因。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 语言学的两种观点

如何描述语法,有两种主流观点,其中一种是短语结构文法(上下文无关文法),英文术语是:Constituency = phrase structure grammar = context-free grammars (CFGs)。

这种短语语法用固定数量的rule分解句子为短语和单词、分解短语为更短的短语或单词。一个取自WSJ语料库的短语结构树示例:

另一种是依存结构,用单词之间的依存关系来表达语法。如果一个单词修饰另一个单词,则称该单词依赖于另一个单词。

歧义

通过句法树可以表达歧义,一个确定的句法树对应句子的一个确定解读,比如对介词短语依附(attachment of prepositional phrases (PPs)):

from space这个介词短语到底依附谁?不同的答案导致对句子不同的理解。

依附歧义

很难确定如何把一个短语(介词短语、状语短语、分词短语、不定式)依附到其他成分上去,比如下列句子:

每个括号中都是一个短语,它们依附的对象各不相同。对于n个短语来讲,组成的树形结构有C_{n}=\frac{(2n)!}{(n+1)!n!}。这是Catalan数,指数级增长,常用于树形结构的计数问题。

标注数据集的崛起:Universal Dependencies treebanks

虽然上下文无关文法中的语法集很容易写,无非是有限数量的规则而已,但人工费时费力标注的树库却茁壮成长了起来。在1993年首次面世的Universal Dependencies treebanks如今在Google的赞助下发布了2.0,其授权大多是署名-相同方式共享,覆盖了全世界绝大多数语言(不包括简体中文)。

其官网是:http://universaldependencies.org/

GitHub主页是:https://github.com/UniversalDependencies

树库示例:

人们偏好树库多于规则的原因是显而易见的,树库虽然标注难度高,但每一份劳动都可被复用(可以用于词性标注命名实体识别等等任务);而每个人编写的规则都不同,并且死板又丑陋。树库的多用性还是得其作为评测的标杆数据,得到了越来越多的引用。

  • 依存文法与依存结构

这节课以及练习用的都是依存句法树,而不是短语结构树。这并不是随机选择,而是由于前者的优势。90年代的句法分析论文99%都是短语结构树,但后来人们发现依存句法树标注简单,parser准确率高,所以后来(特别是最近十年)基本上就是依存句法树的天下了(至少80%)。

不标注依存弧label的依存句法树就是短语结构树的一种:

一旦标上了,两者就彻底不同了:

这里箭头的尾部是head(被修饰的主题),箭头指向的是dependent(修饰语)。

依存句法分析可用的特征

  • 双词汇亲和(Bilexical affinities),比如discussion与issues

  • 词语间距,因为一般相邻的词语才具有依存关系

  • 中间词语,如果中间词语是动词或标点,则两边的词语不太可能有依存

  • 词语配价,一个词语最多有几个依赖者

依存句法分析

有几个约束条件:

  • ROOT只能被一个词依赖

  • 无环

英语中大部分句子是projective的,少数是non-projective的:

文献中的依存句法分析方法有:

  • Dynamic programming,动态规划
  • Graph algorithms,最小生成树
  • Constraint Satisfaction,约束满足
  • “Transition-based parsing” or “deterministic dependency parsing”,主流方法,基于贪心决策动作拼装句法树

Greedy transition-based parsing

动作体系的formal描述如下:

Arc-standard transition

MaltParser

无搜索,贪婪地下转移决策,线性复杂度,只损失了一点效果。加个beam search会上升一点。

传统特征表示

栈和队列中单词、词性、依存标签的组合的特征函数,一个超长的稀疏01向量。

效果评估

评测指标是UAS(不考虑标签只考虑弧)或LAS(同时考虑标签和弧):

hankcs.com 2017-06-16 下午9.11.38.png

为什么需要神经网络句法分析器

传统特征表示稀疏、不完全、计算代价大(SVM之类的线性分类器本身是很快的,而传统parser的95%时间都花在拼装查询特征上了)。

传统方法拼接单词、词性、依存标签,新方法拼接它们的向量表示:

模型是一个三层神经网络:

事实上,在“深度学习”“神经网络”的喧嚣中冷静下来回顾一下,相较于传统的graph-based方法,花了这么多功夫得到的只是0.1%的LAS提升:

参考:http://www.hankcs.com/nlp/cs224n-dependency-parsing.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值