依存句法分析|Dependency Parsing

bolin
发布于 2026-01-10 / 2 阅读
0
0

依存句法分析|Dependency Parsing

第一节:句式结构的两种视野

在自然语言处理中,理解一个句子不仅仅是识别每个词的意思,更重要的是理解这些词是如何组合在一起表达完整语义的。目前主流的句法分析主要有两种视角:成分句法分析依存句法分析

1. 成分句法分析 (Constituency Parsing)

成分句法分析又被称为短语结构语法(Phrase Structure Grammar),它深受乔姆斯基(Noam Chomsky)上下文无关语法(CFGs)的影响。其核心思想是将词组织成嵌套的组成部分(Nested Constituents)。

  • 基本单位:从单个词(如 the, cat, door)开始。

  • 组合过程:词与词组合成短语(Phrases),例如 "the cuddly cat" 形成名词短语(NP),"by the door" 形成介词短语(PP)。

  • 层级结构:短语可以进一步组合成更大的短语,直到构成完整的句子。

DE47F15B-76C8-4FC7-8E8B-D8E39544EAF3.png

为了规范这种组合,我们会定义一系列语法规则,例如:

  • NP -> Det + N(名词短语由限定词和名词组成)

  • PP -> P + NP(介词短语由介词和名词短语组成)

B575F5D9-EE34-486E-94A3-F38CC9BAB024.png


2. 依存句法分析 (Dependency Structure)

与成分句法关注“如何打包”不同,依存句法直接关注词与词之间的二元关系。它展示了哪些词依赖于(修饰、附属于或作为论元)哪些词。

  • 核心词 (Head):被修饰或被支配的中心词(也叫 Governor, Superior)。

  • 依附词 (Dependent):修饰或补充核心词的词(也叫 Modifier, Subordinate)。

  • 二元不对称关系:这种关系通常用“箭头”表示,从 Head 指向 Dependent。

CB8FC2FC-DA60-4F93-9EA1-849BEE70D930.png

3. 依存句法的形式化定义与约束

在实际算法处理中,依存句法通常被形式化为一个有向图。为了保证句子能被唯一且正确地解析,它通常满足以下三个性质:

  1. 连通性 (Connected):所有词都通过某种关系连接在一起。

  2. 无环性 (Acyclic):不存在循环依赖关系。

  3. 单父节点 (Single-root):除了根节点,每个词都精确地依赖于另一个节点。

为了实现这一点,我们通常会引入一个虚构的 ROOT 节点,让句子的核心动词指向它,从而确保所有词都属于同一棵树。

0A8F7262-0B96-4B47-B138-ADA230917802.png


4. 为什么要标注关系类型?

现代依存分析不仅仅是画箭头,还会给箭头贴上“标签”(Typed Dependencies),用来描述具体的语法关系。例如:

  • nsubj:名词性主语(nominal subject)。

  • obj:直接宾语(object)。

  • nmod:名词修饰语(nominal modifier)。

通过这种方式,我们能一眼看出谁是句子的发起者,谁是动作的承受者。

7EE05AF3-495F-4825-925D-4F8EFC2DC10F.png


第二节:句法歧义的化解与语义提取的实战

语言是充满艺术性的,但对于计算机来说,这种艺术性往往意味着“歧义”。依存句法分析的一大功劳,就是通过明确的词汇关联来消除这些歧义。

1. 介词短语附件歧义 (PP Attachment Ambiguity)

这是句法分析中最经典的难题。一个介词短语(PP)到底是在修饰动词,还是在修饰它前面的名词?

  • 示例句子"Scientists count whales from space."

  • 解析 Afrom space 依附于动词 count。这意味着科学家们站在外太空进行观测(这是符合逻辑的)。

  • 解析 Bfrom space 依附于名词 whales。这意味着这些鲸鱼是来自外太空的(这显然变成了科幻片)。

11000BAD-0A71-4C6B-ABB0-09F6C35F7B79.png

2. 协调范围歧义 (Coordination Scope Ambiguity)

当句中出现连词(如 and)时,它连接的边界在哪里?这直接影响了我们对身份或实体的理解。

  • 案例分析"Shuttle veteran and longtime NASA executive Fred Gregory..."

  • 这里 and 是连接了“穿梭机老兵”和“NASA高管”这两个身份并指向同一个人(Fred Gregory),还是指两个人?

7057138B-6E55-4C6C-936E-F97A9370D7AF.png

3. 从句法树到语义:依存路径提取

掌握了依存结构后,我们就可以利用依存路径(Dependency Paths)来完成高级任务,比如信息抽取。

在生物信息学或医学文本处理中,我们经常需要提取“谁作用于谁”。

  • 实战案例:提取蛋白质相互作用(Protein-Protein Interaction)。

  • 即使句子非常长且复杂(如:"The results demonstrated that KaiC interacts rythmically with SasA..."),只要我们顺着依存路径寻找:

    1. 找到核心动词 interacts

    2. 顺着 nsubj(名性主语)找到 KaiC

    3. 顺着 nmod:with(介词修饰)找到 SasA

这样,无论句子加了多少修饰成分,我们都能精准提取出核心语义关系。

981E4EA9-C39A-4801-BDD1-09BB68ED4D5D.png


4. 迈向国际化:通用依存(Universal Dependencies)

为了让不同语言的句法分析有统一的标准,学术界推出了 Universal Dependencies (UD) 项目。它定义了一套通用的标注框架,使得我们处理英文、中文甚至稀有语言时,可以使用同一套逻辑。

  • 标注演进:从早期的 Penn Treebank 到如今的 UD 树库。

  • 特点:强调词汇间的依赖,支持跨语言的研究和模型迁移。

759DA5E4-7CFE-4EC4-B274-0DB256C903A8.png


第三节:算法实现——从状态转移到神经网络

构建依存树的挑战在于,一个句子可能的组合方式随着字数增加呈指数级增长。基于转移的方法(由 Nivre 在 2003 年提出)通过一种类似“贪心搜索”的策略,将解析过程看作一系列确定性的动作组合。

1. 核心机制:栈与缓存的博弈

基于转移的解析器就像一个精密运行的自动化机器,它维护着三个核心数据结构:

  • Stack (栈):存储正在处理的词。

  • Buffer (缓冲区):存储待处理的句子剩余词汇。

  • Dependency Arcs (关系集):已经确定的依存关系。

602CB65A-3B07-4B48-93D3-C8A3EDAD548D.png

2. Arc-Standard 系统的三大动作

解析器通过不断执行以下三个动作,直到缓冲区变空且栈中只剩下 ROOT:

  1. SHIFT (进栈):将 Buffer 的第一个词移入 Stack。

  2. LEFT-ARC (左弧):认定 S1 -> S2(栈顶第二个词依赖于栈顶词),建立关系并从栈中弹出 S2

  3. RIGHT-ARC (右弧):认定 $S2 -> S1(栈顶词依赖于栈顶第二个词),建立关系并从栈中弹出 S1

890762E2-0CF2-47A5-BDE6-A1DF72EECFD9.png


3. 投射性 (Projectivity) 的约束

在算法处理中,有一个重要的概念叫投射性

  • 投射性解析:意味着所有的依存弧在画出来时都不会发生交叉。

  • 现实挑战:虽然大多数英语句子是投射性的,但在自由语序语言(如德语、荷兰语)或中文的某些倒装结构中,会出现非投射性(Non-projective)现象,这需要更复杂的算法来处理。

C9C1A929-E400-4C29-A6A4-9711DA55B769.png

4. 进化:从特征工程到深度学习

传统的基于转移的解析器依赖人工设计的特征模板(如:栈顶词的词性 + 缓冲区第一个词的词根)。这种方式面临三个痛点:

  1. 稀疏性 (Sparse):特征组合太多,很多组合在训练集里从未出现。

  2. 不完整性:人工难以穷举所有有用的特征。

  3. 效率瓶颈:特征计算占据了解析时间的 90% 以上。

2014 年,Chen & Manning 推出了首个神经网络依存解析器

  • 它们不再使用 0/1 的特征向量,而是将词、词性、标签转换为低维稠密向量 (Embedding)

  • 通过一个简单的多层感知机(MLP),解析速度提升了数倍,准确率也大幅飞跃。

4C187179-A4CC-4EA8-9740-E19633887F9C.png

06A2F5CF-F3AD-4B25-A65E-37A112C1DBAE.png


5. 评价指标:如何衡量解析器的优劣?

最后,我们用两个核心指标来给解析器打分:

  • UAS (Unlabeled Attachment Score):不考虑标签,只看词与词之间的箭头指对了吗?

  • LAS (Labeled Attachment Score):不仅要指对,箭头的标签(如 nsubj)也要完全匹配。

0B023A48-66A4-4AEA-BF84-8421BF30D325.png



评论