【CS224n】(lecture4)Dependency Parsing 依存句法分析

简介: 句法分析(syntactic parsing)是NLP的关键技术,对input句子进行分析得到对应的句法结构;语义分析通常以句法分析的输出,作为input,以获得更多的指示信息。

零、 句法分析基础

句法分析(syntactic parsing)是NLP的关键技术,对input句子进行分析得到对应的句法结构;语义分析通常以句法分析的输出,作为input,以获得更多的指示信息。


0.0 NLP基础任务

(1)语音、图像和文本

自然语言处理系统的输入源一共有3个,即语音、图像与文本。语音和图像这两种形式一般经过识别后转化为文字,转化后就可以进行后续的NLP任务了。


(2)中文分词、词性标注和命名实体识别

这3个任务都是围绕词语进行的分析,所以统称词法分析。词法分析的主要任务是将文本分隔为有意义的词语(中文分词),确定每个词语的类别和浅层的歧义消除(词性标注),并且识别出一些较长的专有名词(命名实体识别)。对中文而言,词法分析常常是后续高级任务(如句法分析等)的基础。


(3)信息抽取

词法分析之后,文本已经呈现出部分结构化的趋势,根据分析出来的每个单词和附有自己词性及其他标签的数据,抽取出一部分有用的信息,关键词、专业术语等,也可以根据统计学信息抽取出更大颗粒度的文本。


(4)文本分类与文本聚类

将文本拆分为一系列词语之后,就可以对文本进行分类和聚类操作,找出相类似的文本。


(5)句法分析

词法分析只能得到零散的词汇信息,计算机不知道词语之间的关系。在一些问答系统中,需要得到句子的主谓宾结构,这就是句法分析得到的结果,如下图所示:

image.png

不仅是问答系统或搜索引擎,句法分析还经常应用有基于短语的机器翻译,给译文的词语重新排序。


(6)语义分析与篇章分析

相较于句法分析,语义分析侧重语义而非语法。它包括词义消歧(确定一个词在语境中的含义,而不是简单的词性)、语义角色标注(标注句子中的谓语与其他成分的关系)乃至语义依存分析(分析句子中词语之间的语义关系)。


(7)其他高级任务

自动问答、自动摘要、机器翻译


注意,一般认为信息检索(Information Retrieve,IR)是区别于自然语言处理的独立学科,IR的目标是查询信息,而NLP的目标是理解语言。


0.1 句法分析任务分类

根据句法结构的表示形式不同,最常见的句法分析任务可以分为以下三种:


句法结构分析(syntactic structure parsing),又称短语结构分析(phrase structure parsing),也叫成分句法分析(constituent syntactic parsing)。作用是识别出句子中的短语结构以及短语之间的层次句法关系。


依存关系分析,又称依存句法分析(dependency syntactic parsing),简称依存分析,作用是识别句子中词汇与词汇之间的相互依存关系。依存句法分析属于浅层句法分析。


深层文法句法分析,即利用深层文法,例如词汇化树邻接文法(Lexicalized Tree Adjoining Grammar, LTAG)、词汇功能文法(Lexical Functional Grammar, LFG)、组合范畴文法(Combinatory Categorial Grammar, CCG)等,对句子进行深层的句法以及语义分析。


句法分析语料库:

汉语中常用的句法分析语料库有CTB(Chinese Treebank,中文树库),其中一个句子可视化后如下图所示。中文单词上面的英文标签标示词性,而箭头表示有语法联系的两个单词,具体是何种联系由箭头上的标签标示。

image.png


0.2 依存句法分析

依存句法假设:句法结构包含相互之间是双边不对称关系的词典(lexical)元素,这种不对称的关系成为依存(dependency),在图中的表现是单向箭头。

箭头通常还会打上这种语法关系的名字(主语,前置宾语等等)

箭头一边连接中心词head (governor, superior, regent),一边则连接依存词dependent (modifier, inferior, subordinate)。

这种关系表现为树结构

0.3 依存分析方法分类

基于规则的方法: 早期的基于依存语法的句法分析方法主要包括类似CYK的动态规划算法、基于约束满足的方法和确定性分析策略等。


基于统计的方法:统计自然语言处理领域也涌现出了一大批优秀的研究工作,包括生成式依存分析方法、判别式依存分析方法和确定性依存分析方法,这几类方法是数据驱动的统计依存分析中最为代表性的方法。


基于深度学习的方法:近年来,深度学习在句法分析课题上逐渐成为研究热点,主要研究工作集中在特征表示方面。传统方法的特征表示主要采用人工定义原子特征和特征组合,而深度学习则把原子特征(词、词性、类别标签)进行向量化,在利用多层神经元网络提取特征。


一、Syntactic Structure: Consistency and Dependency 语言结构的两种角度

依存分析一般有两个视角:

(1)组成关系(Consistency):Constituency Grammar。使用短语结构语法将单词放入嵌套的组件中。

(2)依赖关系(Dependency):Dependency Parsing。句子的从属结构显示哪些词依赖于(修饰或是)哪些词。这些单词之间的二元非对称关系称为依赖关系,并被描述为从head到dependent。通常这些依赖关系形成一个树结构。经常用语法关系的名称进行分类(主语,介词宾语,同位语等)。有时会将假根节点作为head添加到树中,所以每个单词都依赖于一个节点。


1.1 角度1:Constituency Parsing

语言结构的两种角度:

Constituency = phrase structure grammar = context-free grammars (CFGs)

这里的CFG即无上下文语法,也称为短语结构语法。

PS:不过该句法分析器准确率不高,现在研究较少,现在用角度2的依存句法树比较多。


通过短语结构,可以组织出嵌套的consistent:

image.png

如果标注上对应的词性:


image.png

Det 指的是 Determiner,在语言学中的含义为 限定词

NP 指的是 Noun Phrase ,在语言学中的含义为 名词短语

VP 指的是 Verb Phrase ,在语言学中的含义为 动词短语

P 指的是 Preposition ,在语言学中的含义为 介词

PP 指的是 Prepositional Phrase ,在语言学中的含义为 介词短语


image.png

1.2 角度2:Dependency Parsing

依存语法理论:


认为词与词之间存在主从关系,这是一种二元不等价的关系。

修饰词为从属词( dependent ),被修饰的词语称为支配词(head),两者之间的语法关系称为依存关系( dependency relation)。

比如句子“大梦想”中形容词“大”与名词“梦想"之间的依存关系如下图,被修饰词——>修饰词

image.png


依赖结构显示了哪些单词依赖于(修改、附加或作为参数)哪些其他单词。


image.png

look是整个句子的root,look依赖于crate

in,the,large都是crate的依赖

in,the都是kitchen的依赖

by the door是crate的依赖

小结:理解句子结构才能语言,要知道哪些词是哪些词的修饰词。


(0)基于LTP依存句法分析

利用哈工大的LTP中文工具集。

注意:在依存句法当中,虚节点ROOT占据了0位置,因此节点的下标从1开始。

from ltp import LTP
ltp = LTP()
# 对句子进行分词
# 分词结果用segment访问,hidden用于访问每个词的隐含层向量
seg, hidden = ltp.seg(["他叫汤姆去拿外衣。"])
dep = ltp.dep(hidden)
print(dep)

结果:

# [['他', '叫', '汤姆', '去', '拿', '外衣', '。']]
# [
#     [
#         (1, 2, 'SBV'),
#         (2, 0, 'HED'),    # 叫 --|HED|--> ROOT
#         (3, 2, 'DBL'),
#         (4, 2, 'VOB'),
#         (5, 4, 'COO'),
#         (6, 5, 'VOB'),
#         (7, 2, 'WP')
#     ]
# ]

(1)上面结果的第1、2行为例:(1, 2, 'SBV')(2, 0, 'HED'),依存句法树会有默认的虚拟root节点,其索引为0,分词后的索引是从1开始的:image.png

(2)第二行的(2, 0, 'HED')第二列为0,代表索引为2的结点(叫)的父节点是索引为0的虚拟root节点。

(3)第一行的(1, 2, 'SBV')的SBV是表示两个节点的依存关系是主谓关系,即“叫”和“他”是主谓关系。


利用hanlp工具可以对上面那句话进行语法分析的可视化:

image.png

语义分析的可视化:


image.png

(1)Prepositional phrase attachment ambiguity

介词短语依附歧义。

San Jose cops kill man with knife.


cops用knife kill了那个男子。

cops 是 kill 的 subject (subject 指 主语)

man 是 kill 的 object (object 指 宾语)

knife 是 kill 的 modifier (modifier 指 修饰符)

cops kill了那个有knife的男子

knife 是 man 的 modifier (名词修饰符,简称为 nmod )

Scientists count whales from space.

image.png

from space 这⼀介词短语修饰的是前面的动词 count 还是名词 whales。


PP attachment ambiguities multiply

介词短语依附歧义。

关键的解析决策是我们如何 “依存” 各种成分:介词短语、状语或分词短语、不定式、协调等。

image.png

上述句子中有四个介词短语


board 是 approved 的 主语, acquisition 是 approved 的谓语

by Royal Trustco Ltd. 是修饰 acquisition 的,即董事会批准了这家公司的收购

of Toronto 可以修饰 approved, acquisition, Royal Trustco Ltd. 之⼀,经过分析可以

得知是修饰 Royal Trustco Ltd. 即表示这家公司的位置

for $27 a share 修饰 acquisition

at its monthly meeting 修饰 approved ,即表示批准的时间地点

这样复杂的句子结构,需要考虑指数级个可能结构,即卡特兰数:

C n = ( 2 n ) ! / [ ( n + 1 ) ! n ! ] C_{n}=(2 n) ! /[(n+1) ! n !]

C

n

=(2n)!/[(n+1)!n!]


一个指数增长的序列,出现在许多类似树的情况中。

ex:一个n+2边的多边形可能的三角形数,三角形概率图模型(CS228课程有提)。

(2)Coordination scope ambiguity

协调范围模糊。


例句:Shuttle veteran and longtime NASA executive Fred Gregory appointed to board


一个人:[[Shuttle veteran and longtime NASA executive] Fred Gregory] appointed to board

两个人:[Shuttle veteran] and [longtime NASA executive Fred Gregory] appointed to board


例句:Doctor: No heart, cognitive issues


(3)Adjectival/Adverbial Modifier Ambiguity

形容词修饰语歧义。


例句:Students get first hand job experience


first hand 表示 第一手的,直接的,即学生获得了直接的工作经验

first 是 hand 的形容词修饰语(amod)

first 修饰 experience, hand 修饰 job

(4)Verb Phrase (VP) attachment ambiguity

动词短语(VP)依存歧义。


例句:Mutilated body washes up on Rio beach to be used for Olympic beach volleyball.


to be used for Olympic beach volleyball 是 动词短语 (VP)

修饰的是 body 还是 beach

(5)Dependency paths identify semantic relations

依赖路径识别语义关系。

image.png

通过依赖路径确定语义关系,如可以研究蛋白质之间的交互作用。


二、Dependency Grammar and Treebanks (15 mins)

2.1 Dependency Grammar and Dependency Structure

关联语法假设句法结构包括词汇项之间的关系,通常是二元不对称关系(“箭头”),称为依赖关系

Dependency Structure有两种表现形式


一种是直接在句子上标出依存关系箭头及语法关系

另⼀种是将其做成树状机构(Dependency Tree Graph)

image.png

2.2 Dependency Grammar/Parsing History

依赖结构的概念可以追溯到很久以前

Pāṇini的语法(公元前5世纪)

一千年 阿拉伯语的语法的基本方法

选区/上下文无关文法是⼀个新奇的发明

20世纪发明(R.S.Wells,1947; then Chomsky)

现代依赖工作经常源于 L. Tesnière(1959)

是20世纪“东方”的主导方法(俄罗斯,中国,…)

有利于更自由的语序语言

NLP中最早类型的解析器在美国

David Hays 是美国计算语言学的创始人之一,他很早就构建了依赖解析器(Hays 1962)

2.3 Dependency Grammar and Dependency Structure

大家对箭头指向的方式不⼀致:有些人把箭头朝⼀个方向画;有人是反过来的

ps:Tesnière 从头开始指向依赖,cs224也是用这种方式(即箭头指向依赖者dependent)。

通常添加⼀个伪根指向整个句子的头部,这样每个单词都精确地依赖于另⼀个节点。



在哈工大车万翔老师的《自然语言处理》书里,依存结构句法树(如下图),也是有添加一个虚拟根结点。



2.4 The rise of annotated data: Universal Dependencies treebanks

标记数据集的崛起:Universal Dependencies treebanks 树库

[Universal Dependencies: http://universaldependencies.org/ ; cf. Marcus et al. 1993, The Penn Treebank, Computational Linguistics]



Universal Dependencies:我们想要拥有⼀个统一的、并行的依赖描述,可用于任何人类语言


从前手工编写语法然后训练得到可以解析句子的解析器

用⼀条规则获得所需信息虽然有效,但是随着语法规则符号越来越复杂,这样做并没有共享和重用人类所做的工作

句子结构上的treebanks 支持结构更有效

The rise of annotated data:从一开始,构建 treebank 似乎比构建语法慢得多,也没有那么有用,但是 treebank 给我们提供了许多东西


劳动力的可重用性

许多解析器、词性标记器等可以构建在它之上

语言学的宝贵资源

广泛的覆盖面,而不仅仅是⼀些直觉

频率和分布信息

一种评估系统的方法

2.5 Dependency Conditioning Preferences

依赖项解析的信息来源是什么?


Bilexical affinities (两个单词间的密切关系)

[discussion 和 issues] 是看上去有道理的

Dependency distance 依赖距离

主要是与相邻词

Intervening material 介于中间的物质

依赖很少跨越介于中间的动词或标点符号(即如果中间的词语是动词或者标点,则两边的词语不太可能有依存)

Valency of heads

How many dependents on which side are usual for a head?



2.6 Dependency Parsing

依存关系句法分析。


通过为每个单词选择它所依赖的其他单词(包括根)来解析⼀个句子。


通常有⼀些限制

只有一个单词是依赖于根的

不存在循环

这使得依赖项成为树

最后一个问题是箭头是否可以交叉(非投影的 non-projective);没有交叉的就是non-projectice



2.7 Projectivity

定义:当单词按线性顺序排列时,没有交叉的依赖弧,所有的弧都在单词的上方

与CFG树并行的依赖关系必须是投影的

通过将每个类别的⼀个子类别作为头来形成依赖关系

但是依赖理论通常允许非投射结构来解释移位的成分

如果没有这些非投射依赖关系,就不可能很容易获得某些结构的语义



2.8 Methods of Dependency Parsing

Dynamic programming

Eisner(1996)提出了一个复杂度为O ( n 3 ) O(n^3)O(n

3

)的算法,它生成头部位于末尾而不是中间的解析项

Graph algorithms

为一个句子创建一个最小生成树

McDonald et al.’s (2005) MSTParser 使用ML分类器独立地对依赖项进行评分(他使用MIRA进行在线学习,但它也可以是其他东西)

Constraint Satisfaction

去掉不满足硬约束的边 Karlsson(1990), etc.

“Transition-based parsing” or “deterministic dependency parsing“

良好的机器学习分类器 MaltParser(Nivreet al. 2008) 指导下的依存贪婪选择。已证明非常有效。

三、Methods of Dependency Parsing

Transition-based dependency parsing (15 mins)


3.1 Greedy transition-based parsing

3.2 Basic transition-based dependency parser

利用一个栈和队列:初始时栈为空,队列中存储未处理的词,算法结束后栈中存储依存结构子树序列。


转移算法定义三种转移动作:

SH:将队列中的第一个元素移入栈顶,形成一个仅包含一个节点的依存子树;

RL:将栈顶的两棵依存子树采用左弧合并;

RR:将栈顶的两棵依存子树采用右弧合并;


3.3 Arc-standard transition-based parser

标准弧(Arc-standard)转移算法。



中文句子的栗子:他喜欢下象棋。



图源自 车万翔《基于预训练模型的自然语言处理》

3.4 MaltParser

我们需要解释如何选择下⼀步行动

Answer:机器学习

每个动作都由⼀个有区别分类器(例如softmax classifier)对每个合法的移动进行预测

最多三种无类型的选择,当带有类型时,最多∣ R ∣ × 2 + 1 |R| \times 2+1∣R∣×2+1 种

Features:栈顶单词,POS;buffer中的第⼀个单词,POS;等等

在最简单的形式中是没有搜索的

但是,如果你愿意,你可以有效地执行⼀个 Beam search 束搜索(虽然速度较慢,但效果更好):你可以在每个时间步骤中保留 k个好的解析前缀

该模型的精度略低于依赖解析的最高水平,但它提供了非常快的线性时间解析,性能非常好

3.5 传统的特征表示

Conventional Feature Representation

传统的特征表示使用二元(0和1表示)的稀疏向量,维度为1 0 6 − 1 0 7 10^6- 10^710

6

−10

7

之间。

特征模板:通常由配置中的1 ~ 3个元素组成

Indicator features



3.6 依存分析的评价和表现

Evaluation of Dependency Parsing: (labeled) dependency accuracy:


对每个单词标上序号,列出每个依存关系对应的序号和类型。分为两种正确率的计算:


UAS (unlabeled attachment score) 指 无标记依存正确率 ,不考虑依存关系的类型,只考虑依存关系的对应单词是否正确,如父节点被正确识别的准确率;

LAS (labeled attachment score) 指有标记依存正确率,同时考虑依存关系的对应单词以及依存关系类型,即词的父节点,以及与父节点的句法关系都被正确识别的概率。

3.6 Handling non-projectivity

提出的弧标准算法只构建投影依赖树

头部可能的方向

在非投影弧上宣布失败

只具有投影表示时使用依赖形式

CFG只允许投影结构

使用投影依赖项解析算法的后处理器来识别和解析非投影链接

添加额外的转换,至少可以对大多数非投影结构建模(添加⼀个额外的交换转换,冒泡排序)

转移到不使用或不需要对投射性进行任何约束的解析机制(例如,基于图的MSTParser)

四、Neural dependency parsing

Indicator Features的问题


稀疏

不完整

计算复杂:超过95%的解析时间都用户特征计算


相关文章
|
安全 Java 编译器
JDK21更新内容:字符串模板
JDK21更新内容:字符串模板
|
3月前
|
缓存 JSON Shell
UV 全命令速查手册
本文全面介绍 Python 包管理工具 `uv` 的核心命令,涵盖版本查询、包管理(add/install/remove/update)、虚拟环境操作、项目初始化、锁文件管理、配置设置、缓存清理及高级功能(如 run/check/fix/completions),助力高效 Python 开发。
1059 7
|
2月前
|
自然语言处理 监控 API
告别 A 股盯盘焦虑:OpenClaw阿里云及本地部署,集成股票价格自动监控+自定义预警Skill开发指南
手动盯盘耗时耗力,错过关键涨跌节点更是遗憾——借助OpenClaw的Skill功能,无需复杂编码,仅用自然语言即可创建股票监控技能,实现“5分钟检查一次、涨跌超阈值自动预警、新日重置基准价”的全自动化流程。该技能依托免费的Yahoo Finance API获取实时数据,支持灵活调整监控规则,还能发布到ClawHub共享复用,完美解决股票监控的核心需求。
1581 3
|
8月前
|
自然语言处理 计算机视觉 Python
SoccerNet 2025挑战赛:赛题整理(一)
介绍SoccerNet数据集和SoccerNet 2025挑战赛,并梳理SoccerNet 2025挑战赛中的赛题一
1040 96
|
机器学习/深度学习 缓存 自然语言处理
深入解析Tiktokenizer:大语言模型中核心分词技术的原理与架构
Tiktokenizer 是一款现代分词工具,旨在高效、智能地将文本转换为机器可处理的离散单元(token)。它不仅超越了传统的空格分割和正则表达式匹配方法,还结合了上下文感知能力,适应复杂语言结构。Tiktokenizer 的核心特性包括自适应 token 分割、高效编码能力和出色的可扩展性,使其适用于从聊天机器人到大规模文本分析等多种应用场景。通过模块化设计,Tiktokenizer 确保了代码的可重用性和维护性,并在分词精度、处理效率和灵活性方面表现出色。此外,它支持多语言处理、表情符号识别和领域特定文本处理,能够应对各种复杂的文本输入需求。
1573 6
深入解析Tiktokenizer:大语言模型中核心分词技术的原理与架构
|
机器学习/深度学习
知识蒸馏技术原理详解:从软标签到模型压缩的实现机制
**知识蒸馏**是一种通过性能与模型规模的权衡来实现模型压缩的技术。其核心思想是将较大规模模型(称为教师模型)中的知识迁移到规模较小的模型(称为学生模型)中。本文将深入探讨知识迁移的具体实现机制。
1736 12
知识蒸馏技术原理详解:从软标签到模型压缩的实现机制
|
机器学习/深度学习 资源调度 算法
主动学习(Active Learning)简介综述汇总以及主流技术方案
3.主动学习(Active Learning)简介综述汇总以及主流技术方案
主动学习(Active Learning)简介综述汇总以及主流技术方案
|
SQL 数据管理 关系型数据库
《SQL转换秘籍:Vanna+Qwen双剑合璧,轻松实现私有模型转换》——揭秘如何利用Vanna和Qwen这两款神级工具,让你的SQL数据管理和转换如虎添翼!
【8月更文挑战第17天】Vanna与Qwen是两款优秀的开源数据库管理工具,助力用户高效管理及转换SQL数据。先安装Vanna和Qwen,随后在Vanna中创建并编辑私有模型,定义表结构等。完成模型构建后,导出为SQL文件。接着,在Qwen中导入此文件,并根据目标数据库类型(如MySQL)转换SQL语句。例如,生成创建`users`表的SQL代码。这两款工具显著提升了数据库管理工作流程的便捷性与效率。
868 1
|
机器学习/深度学习 搜索推荐 PyTorch
【机器学习】图神经网络:深度解析图神经网络的基本构成和原理以及关键技术
【机器学习】图神经网络:深度解析图神经网络的基本构成和原理以及关键技术
4168 3
|
安全 Java Linux
企业微信应用结合Cpolar内网穿透实现固定域名验证回调本地接口服务
企业微信应用结合Cpolar内网穿透实现固定域名验证回调本地接口服务