斯坦福NLP课程 | 第5讲 - 句法分析与依存解析

本文涉及的产品
NLP自然语言处理_高级版,每接口累计50万次
NLP自然语言处理_基础版,每接口每天50万次
NLP 自学习平台,3个模型定制额度 1个月
简介: NLP课程第5讲内容覆盖:句法结构(成分与依赖),依赖语法与树库,基于转换的依存分析模型,神经网络依存分析器等。

ShowMeAI研究中心

作者:韩信子@ShowMeAI,路遥@ShowMeAI,奇异果@ShowMeAI
教程地址http://www.showmeai.tech/tutorials/36
本文地址http://www.showmeai.tech/article-detail/238
声明:版权所有,转载请联系平台与作者并注明出处

收藏ShowMeAI查看更多精彩内容


句法分析与依存解析
ShowMeAI斯坦福CS224n《自然语言处理与深度学习(Natural Language Processing with Deep Learning)》课程的全部课件,做了中文翻译和注释,并制作成了GIF动图!

句法分析与依存解析
本讲内容的深度总结教程可以在这里 查看。视频和课件等资料的获取方式见文末


引言

句法依存分析

授课计划

授课计划

1.句法结构:成分与依赖

1.1 语言结构的两种观点:无上下文语法

语言结构的两种观点:无上下文语法

  • 句子是使用逐步嵌套的单元构建的
  • 短语结构将单词组织成嵌套的成分
  • 起步单元:单词被赋予一个类别

    • part of speech = pos 词性
  • 单词组合成不同类别的短语
  • 短语可以递归地组合成更大的短语
  • Det 指的是 Determiner,在语言学中的含义为 限定词
  • NP 指的是 Noun Phrase,在语言学中的含义为 名词短语
  • VP 指的是 Verb Phrase,在语言学中的含义为 动词短语
  • P 指的是 Preposition,在语言学中的含义为 介词
  • PP 指的是 Prepositional Phrase,在语言学中的含义为 介词短语

1.2 语言结构的两种观点:无上下文语法

语言结构的两种观点:无上下文语法

1.3 语言结构的两种观点:依赖结构

语言结构的两种观点:依赖结构

  • 不是使用各种类型的短语,而是直接通过单词与其他的单词关系表示句子的结构,显示哪些单词依赖于(修饰或是其参数)哪些其他单词

补充讲解

  • look 是整个句子的根源,look 依赖于 crate (或者说 cratelook 的依赖)

    • inthelarge 都是 crate 的依赖
    • in the kitchencrate 的修饰
    • inthe 都是 kitchen 的依赖
    • by the doorcrate 的依赖

1.4 为什么我们需要句子结构?

为什么我们需要句子结构?

  • 为了能够正确地解释语言,我们需要理解句子结构
  • 人类通过将单词组合成更大的单元来传达复杂的意思,从而交流复杂的思想
  • 我们需要知道什么与什么相关联

    • 除非我们知道哪些词是其他词的参数或修饰词,否则我们无法弄清楚句子是什么意思

1.5 介词短语依附歧义

介词短语依附歧义

San Jose cops kill man with knife

  • 警察用刀杀了那个男子

    • copskillsubject (subject 指 主语)
    • mankillobject (object 指 宾语)
    • knifekillmodifier (modifier 指 修饰符)
  • 警察杀了那个有刀的男子

    • knifemanmodifier (名词修饰符,简称为 nmod)

1.6 介词短语依附歧义

介词短语依附歧义

补充讲解

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

    • 这就是人类语言和编程语言中不同的地方

1.7 介词短语附加歧义成倍增加

介词短语附加歧义成倍增加

  • 关键的解析决策是我们如何“依存”各种成分

    • 介词短语、状语或分词短语、不定式、协调等。

补充讲解
上述句子中有四个介词短语

  • boardapproved 的主语,acquisitionapproved 的谓语
  • by Royal Trustco Ltd. 是修饰 acquisition 的,即董事会批准了这家公司的收购
  • of Toronto 可以修饰 approvedacquisitionRoyal Trustco Ltd. 之一,经过分析可以得知是修饰 Royal Trustco Ltd.,即表示这家公司的位置
  • for 27 a share 修饰 acquisition
  • at its monthly meeting 修饰 approved,即表示批准的时间地点

补充讲解
面对这样复杂的句子结构,我们需要考虑 指数级 的可能结构,这个序列被称为 卡特兰数/Catalan numbers

Catalan numbers

%5B%28n%2B1%29%20%21%20n%20%21%5D

1.8 协调范围模糊

协调范围模糊

补充讲解

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

1.9 协调范围模糊

协调范围模糊

  • 例句:Doctor: No heart,cognitive issues

1.10 形容词修饰语歧义

形容词修饰语歧义

补充讲解
Students get first hand job experience

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

    • firsthand 的形容词修饰语(amod)
  • first 修饰 experiencehand 修饰 job

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

动词短语(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

2.依赖语法与树库

2.1 #论文解读# 依赖路径识别语义关系

#论文解读# 依赖路径识别语义关系

2.2 依存文法和依存结构

依存文法和依存结构

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

Dependency Structure有两种表现形式

  1. 一种是直接在句子上标出依存关系箭头及语法关系
  2. 另一种是将其做成树状机构(Dependency Tree Graph)
  • 箭头通常标记(type)为语法关系的名称(主题、介词对象、apposition等)
  • 箭头连接头部(head)(调速器,上级,regent)和一个依赖(修饰词,下级,下属)

    • equation?tex=A%20%5Cto 的事情
  • 通常,依赖关系形成一棵树(单头,无环,连接图)

2.3 依存语法/解析历史

依存语法/解析历史

2.4 依存语法/解析历史

依存语法/解析历史

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

    • Paṇini的语法(公元前5世纪)
    • 一千年,阿拉伯语的语法的基本方法
  • 选区/上下文无关文法是一个新奇的发明

    • 20世纪发明(R.S.Wells,1947; then Chomsky)
  • 现代依赖工作经常源于 L. Tesnière(1959)

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

      • 有利于更自由的语序语言
  • NLP中最早类型的解析器在美国

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

2.5 依存语法和依赖结构

依存语法和依赖结构

  • 人们对箭头指向的方式不一致:有些人把箭头朝一个方向画;有人是反过来的

    • Tesnière 从头开始指向依赖,本课使用此种方式
  • 通常添加一个伪根指向整个句子的头部,这样每个单词都精确地依赖于另一个节点

2.6 带注释数据的兴起:通用依存句法树库

带注释数据的兴起:通用依存句法树库

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

  • 从前手工编写语法然后训练得到可以解析句子的解析器
  • 用一条规则捕捉很多东西真的很有效率,但是事实证明这在实践中不是一个好主意

    • 语法规则符号越来越复杂,并且没有共享和重用人类所做的工作
  • 句子结构上的 treebanks 支持结构更有效

2.7 带注释数据的兴起

带注释数据的兴起

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

    • 可重用性

      • 许多解析器、词性标记器等可以构建在它之上
      • 语言学的宝贵资源
    • 广泛的覆盖面,而不仅仅是一些直觉
    • 频率和分布信息
    • 一种评估系统的方法

2.8 依赖条件首选项

依赖条件首选项

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

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

  • [discussion → issues] 是看上去有道理的
  1. Dependency distance 依赖距离
  • 主要是与相邻词
  1. Intervening material 介于中间的物质
  • 依赖很少跨越介于中间的动词或标点符号
  1. Valency of heads
  • How many dependents on which side are usual for a head?

2.9 依赖关系分析

依赖关系分析

  • 通过为每个单词选择它所依赖的其他单词(包括根)来解析一个句子
  • 通常有一些限制

    • 只有一个单词是依赖于根的
    • 不存在循环 A→B,B→A
  • 这使得依赖项成为树
  • 最后一个问题是箭头是否可以交叉(非投影的 non-projective)

    • 没有交叉的就是non-projectice

2.10 射影性

射影性

  • 定义:当单词按线性顺序排列时,没有交叉的依赖弧,所有的弧都在单词的上方
  • 与CFG树并行的依赖关系必须是投影的

    • 通过将每个类别的一个子类别作为头来形成依赖关系
  • 但是依赖理论通常允许非投射结构来解释移位的成分

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

2.11 依存分析方法

依存分析方法

  1. Dynamic programming
  • Eisner(1996)提出了一种复杂度为 O(n3) 的聪明算法,它生成头部位于末尾而不是中间的解析项
  1. Graph algorithms
  • 为一个句子创建一个最小生成树
  • McDonald et al.’s (2005) MSTParser 使用ML分类器独立地对依赖项进行评分(他使用MIRA进行在线学习,但它也可以是其他东西)
  1. Constraint Satisfaction
  • 去掉不满足硬约束的边 Karlsson(1990), etc.
  1. "Transition-based parsing" or "deterministic dependency parsing"
  • 良好的机器学习分类器 MaltParser(Nivreet al. 2008) 指导下的依存贪婪选择。已证明非常有效。

3.基于转换的依存分析模型

3.1 #论文解读# Greedy transition-based parsing [Nivre 2003]

  • 贪婪判别依赖解析器一种简单形式
  • 解析器执行一系列自底向上的操作

    • 大致类似于shift-reduce解析器中的“shift”或“reduce”,但“reduce”操作专门用于创建头在左或右的依赖项
  • 解析器如下

    • equation?tex=%5Csigma 以 ROOT 符号开始,由若干 equation?tex=w_i 组成
    • 缓存 equation?tex=%5Cbeta 以输入序列开始,由若干 equation?tex=w_i 组成
    • 一个依存弧的集合 equation?tex=A ,一开始为空。每条边的形式是 equation?tex=%28w_i%2Cr%2Cw_j%29,其中 equation?tex=r 描述了节点的依存关系
    • 一组操作

3.2 基本的基于转换的依存关系解析器

基本的基于转换的依存关系解析器

  • 最终目标是 equation?tex=%5Csigma%20%3D%20%5BROOT%5Dequation?tex=%5Cbeta%20%3D%20%5Cphiequation?tex=A 包含了所有的依存弧

补充讲解
state之间的transition有三类

  1. SHIFT:将buffer中的第一个词移出并放到stack上。
  2. LEFT-ARC:将 equation?tex=%28w_j%2Cr%2Cw_i%29 加入边的集合equation?tex=A,其中 equation?tex=w_i 是stack上的次顶层的词, equation?tex=w_j 是stack上的最顶层的词。
  3. RIGHT-ARC:将 equation?tex=%28w_i%2Cr%2Cw_j%29 加入边的集合 equation?tex=A,其中 equation?tex=w_i 是stack上的次顶层的词, equation?tex=w_j 是stack上的最顶层的词。

我们不断的进行上述三类操作,直到从初始态达到最终态。

  • 在每个状态下如何选择哪种操作呢
  • 当我们考虑到 LEFT-ARC 与 RIGHT-ARC 各有 equation?tex=%5Cleft%7CR%5Cright%7C(equation?tex=%5Cleft%7CR%5Cright%7Cequation?tex=r 的类的个数)种类,我们可以将其看做是class数为 equation?tex=2%5Cleft%7CR%5Cright%7C%2B1 的分类问题,可以用SVM等传统机器学习方法解决。

3.3 基于Arc标准转换的解析器

基于Arc标准转换的解析器

  • 还有其他的 transition 方案
  • Analysis of I ate fish

3.4 #论文解读# MaltParser [Nivre and Hall 2005]

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

    • Answer:机器学习
  • 每个动作都由一个有区别分类器(例如softmax classifier)对每个合法的移动进行预测
  • 最多三种无类型的选择,当带有类型时,最多 equation?tex=%5Cleft%7CR%5Cright%7C%C3%972%2B1
  • Features:栈顶单词,POS;buffer中的第一个单词,POS;等等
  • 在最简单的形式中是没有搜索的

    • 但是,如果你愿意,你可以有效地执行一个 Beam search 束搜索(虽然速度较慢,但效果更好):你可以在每个时间步骤中保留 equation?tex=k 个好的解析前缀
  • 该模型的精度略低于依赖解析的最高水平,但它提供了非常快的线性时间解析,性能非常好

3.5 传统特征表示

传统特征表示

  • 传统的特征表示使用二元的稀疏向量equation?tex=10%5E6%20%5Csim%2010%5E7
  • 特征模板:通常由配置中的equation?tex=1%20%5Csim%203个元素组成
  • Indicator features

3.6 依赖分析的评估:(标记)依赖准确性

依赖分析的评估:(标记)依赖准确性

  • UAS (unlabeled attachment score) 指无标记依存正确率
  • LAS (labeled attachment score) 指有标记依存正确率

3.7 处理非投影性

处理非投影性

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

头部可能的方向:

  1. 在非投影弧上宣布失败
  2. 只具有投影表示时使用依赖形式[CFG只允许投影结构]
  3. 使用投影依赖项解析算法的后处理器来识别和解析非投影链接
  4. 添加额外的转换,至少可以对大多数非投影结构建模(添加一个额外的交换转换,冒泡排序)
  5. 转移到不使用或不需要对投射性进行任何约束的解析机制(例如,基于图的MSTParser)

3.8 为什么要训练神经依赖解析器?重新审视指标特征

为什么要训练神经依赖解析器?重新审视指标特征

  • Indicator Features的问题

    • 问题1:稀疏
    • 问题2:不完整
    • 问题3:计算复杂
  • 超过95%的解析时间都用于特征计算

4.神经网络依存分析器

4.1 #论文解读# A neural dependency parser [Chen and Manning 2014]

  • 斯坦福依存关系的英语解析

    • Unlabeled attachment score (UAS) = head
    • Labeled attachment score (LAS) = head and label
  • 效果好,速度快

4.2 分布式表示

分布式表示

  • 我们将每个单词表示为一个d维稠密向量(如词向量)

    • 相似的单词应该有相近的向量
  • 同时,part-of-speech tags 词性标签(POS)和 dependency labels 依赖标签也表示为d维向量

    • 较小的离散集也表现出许多语义上的相似性。
  • NNS(复数名词)应该接近NN(单数名词)

    • num(数值修饰语)应该接近amod(形容词修饰语)

4.3 从配置中提取令牌和向量表示

从配置中提取令牌和向量表示

补充讲解

  • 对于Neural Dependency Parser,其输入特征通常包含三种

    • stack和buffer中的单词及其dependent word
    • 单词的part-of-speech tag
    • 描述语法关系的arc label

4.4 模型体系结构

模型体系结构

4.5 句子结构的依存分析

句子结构的依存分析

  • 神经网络可以准确地确定句子的结构,支持解释
  • Chen and Manning(2014)是第一个简单,成功的神经依赖解析器
  • 密集的表示使得它在精度和速度上都优于其他贪婪的解析器

4.6 基于转换的神经依存分析的新进展

基于转换的神经依存分析的新进展

  • 这项工作由其他人进一步开发和改进,特别是在谷歌

    • 更大、更深的网络中,具有更好调优的超参数
    • Beam Search 更多的探索动作序列的可能性,而不是只考虑当前的最优
    • 全局、条件随机场(CRF)的推理出决策序列
  • 这就引出了SyntaxNet和Parsey McParseFace模型

4.7 基于图形的依存关系分析器

基于图形的依存关系分析器

4.8 #论文解读# A Neural graph-based dependency parser [Dozat and Manning 2017; Dozat, Qi, and Manning 2017]

  • 为每条边的每一个可能的依赖关系计算一个分数
  • 为每条边的每一个可能的依赖关系计算一个分数

    • 然后将每个单词的边缘添加到其得分最高的候选头部
    • 并对每个单词重复相同的操作
  • 在神经模型中为基于图的依赖分析注入活力

    • 为神经依赖分析设计一个双仿射评分模型
    • 也使用神经序列模型,我们将在下周讨论
  • 非常棒的结果

    • 但是比简单的基于神经传递的解析器要慢
    • 在一个长度为 equation?tex=n 的句子中可能有 equation?tex=n%5E2 个依赖项

5.视频教程

可以点击 B站 查看视频的【双语字幕】版本

6.参考资料

ShowMeAI 系列教程推荐

自然语言处理(NLP)系列教程

斯坦福 CS224n 课程带学详解

ShowMeAI用知识加速每一次技术成长

目录
相关文章
|
2月前
|
机器学习/深度学习 数据采集 存储
时间序列预测新突破:深入解析循环神经网络(RNN)在金融数据分析中的应用
【10月更文挑战第7天】时间序列预测是数据科学领域的一个重要课题,特别是在金融行业中。准确的时间序列预测能够帮助投资者做出更明智的决策,比如股票价格预测、汇率变动预测等。近年来,随着深度学习技术的发展,尤其是循环神经网络(Recurrent Neural Networks, RNNs)及其变体如长短期记忆网络(LSTM)和门控循环单元(GRU),在处理时间序列数据方面展现出了巨大的潜力。本文将探讨RNN的基本概念,并通过具体的代码示例展示如何使用这些模型来进行金融数据分析。
398 2
|
1月前
|
数据采集 自然语言处理 搜索推荐
基于qwen2.5的长文本解析、数据预测与趋势分析、代码生成能力赋能esg报告分析
Qwen2.5是一款强大的生成式预训练语言模型,擅长自然语言理解和生成,支持长文本解析、数据预测、代码生成等复杂任务。Qwen-Long作为其变体,专为长上下文场景优化,适用于大型文档处理、知识图谱构建等。Qwen2.5在ESG报告解析、多Agent协作、数学模型生成等方面表现出色,提供灵活且高效的解决方案。
160 49
|
26天前
|
测试技术 开发者 Python
使用Python解析和分析源代码
本文介绍了如何使用Python的`ast`模块解析和分析Python源代码,包括安装准备、解析源代码、分析抽象语法树(AST)等步骤,展示了通过自定义`NodeVisitor`类遍历AST并提取信息的方法,为代码质量提升和自动化工具开发提供基础。
42 8
|
24天前
|
调度 开发者
核心概念解析:进程与线程的对比分析
在操作系统和计算机编程领域,进程和线程是两个基本而核心的概念。它们是程序执行和资源管理的基础,但它们之间存在显著的差异。本文将深入探讨进程与线程的区别,并分析它们在现代软件开发中的应用和重要性。
43 4
|
29天前
|
机器学习/深度学习 人工智能 自然语言处理
探索深度学习与自然语言处理的前沿技术:Transformer模型的深度解析
探索深度学习与自然语言处理的前沿技术:Transformer模型的深度解析
87 0
|
1月前
|
数据采集 存储 自然语言处理
基于Qwen2.5的大规模ESG数据解析与趋势分析多Agent系统设计
2022年中国上市企业ESG报告数据集,涵盖制造、能源、金融、科技等行业,通过Qwen2.5大模型实现报告自动收集、解析、清洗及可视化生成,支持单/多Agent场景,大幅提升ESG数据分析效率与自动化水平。
108 0
|
2月前
|
存储 SQL 分布式计算
湖仓一体架构深度解析:构建企业级数据管理与分析的新基石
【10月更文挑战第7天】湖仓一体架构深度解析:构建企业级数据管理与分析的新基石
150 1
|
3月前
|
存储 缓存 自然语言处理
深度解析ElasticSearch:构建高效搜索与分析的基石
【9月更文挑战第8天】在数据爆炸的时代,如何快速、准确地从海量数据中检索出有价值的信息成为了企业面临的重要挑战。ElasticSearch,作为一款基于Lucene的开源分布式搜索和分析引擎,凭借其强大的实时搜索、分析和扩展能力,成为了众多企业的首选。本文将深入解析ElasticSearch的核心原理、架构设计及优化实践,帮助读者全面理解这一强大的工具。
268 7
|
4月前
|
机器学习/深度学习 存储 自然语言处理
自然语言处理中的情感分析技术:深入解析与应用前景
【8月更文挑战第4天】情感分析技术作为自然语言处理领域的重要分支,具有广泛的应用前景和重要的研究价值。通过不断的技术创新和应用实践,我们可以期待情感分析在未来发挥更大的作用,为我们的生活和工作带来更多便利和效益。
215 10
|
5月前
|
Java Spring 容器
Spring Boot 启动源码解析结合Spring Bean生命周期分析
Spring Boot 启动源码解析结合Spring Bean生命周期分析
117 11

推荐镜像

更多