学习总结

  • 句法分析(Syntactic Parsing),两种典型的句法结构表示:
    (1)短语结构句法:依托上下文无关文法,S代表起始符号,如NP和VP分别表示名词短语和动词短语。
    (2)依存结构句法:依托依存文法,如sub和obj分别表示主语和宾语,root表示虚拟根节点,其指向整个句子的核心谓词。
  • dependency parsing是依存关系语法分析,简称为依存分析。
  • 句法分析就是典型的图结构生成问题;图结构生成算法主要有2类:
    基于图的算法:边带权值,可以用MST最大生成树求解子图的最大分数,对应的子图;
    基于转移的算法:将图结构构建过程,转为一个状态转移序列,通过转移动作(本质是一个分类问题),从旧状态转移到新状态。ex:标准化(Arc-standard)转移算法。

文章目录

零、 句法分析基础

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

0.0 NLP基础任务

(1)语音、图像和文本

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

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

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

(3)信息抽取

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

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

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

(5)句法分析

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

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


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

(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,中文树库),其中一个句子可视化后如下图所示。中文单词上面的英文标签标示词性,而箭头表示有语法联系的两个单词,具体是何种联系由箭头上的标签标示。

【CS224n】(lecture4)Dependency Parsing 依存句法分析_句法结构_02

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:

【CS224n】(lecture4)Dependency Parsing 依存句法分析_依赖关系_03


如果标注上对应的词性:

【CS224n】(lecture4)Dependency Parsing 依存句法分析_句法结构_04

  • Det 指的是 Determiner,在语言学中的含义为 限定词
  • NP 指的是 Noun Phrase ,在语言学中的含义为 名词短语
  • VP 指的是 Verb Phrase ,在语言学中的含义为 动词短语
  • P 指的是 Preposition ,在语言学中的含义为 介词
  • PP 指的是 Prepositional Phrase ,在语言学中的含义为 介词短语

【CS224n】(lecture4)Dependency Parsing 依存句法分析_句法结构_05

1.2 角度2:Dependency Parsing

依存语法理论:

  • 认为词与词之间存在主从关系,这是一种二元不等价的关系。
  • 修饰词为从属词( dependent ),被修饰的词语称为支配词(head),两者之间的语法关系称为依存关系( dependency relation)。
  • 比如句子“大梦想”中形容词“大”与名词“梦想"之间的依存关系如下图,被修饰词——>修饰词

【CS224n】(lecture4)Dependency Parsing 依存句法分析_自然语言处理_06

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

【CS224n】(lecture4)Dependency Parsing 依存句法分析_自然语言处理_07

  • 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开始的:



汤姆



外衣

1

2

3

4

5

6

(2)第二行的​​(2, 0, 'HED')​​​第二列为0,代表索引为2的结点(叫)的父节点是索引为0的虚拟root节点。
(3)第一行的​​​(1, 2, 'SBV')​​​的​​SBV​​是表示两个节点的依存关系是主谓关系,即“叫”和“他”是主谓关系。

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

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


语义分析的可视化:

【CS224n】(lecture4)Dependency Parsing 依存句法分析_自然语言处理_09

(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.

【CS224n】(lecture4)Dependency Parsing 依存句法分析_自然语言处理_10


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

介词短语依附歧义。

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

【CS224n】(lecture4)Dependency Parsing 依存句法分析_句法结构_11


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

  • 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 ,即表示批准的时间地点

这样复杂的句子结构,需要考虑指数级个可能结构,即卡特兰数: 【CS224n】(lecture4)Dependency Parsing 依存句法分析_句法分析_12

  • 一个指数增长的序列,出现在许多类似树的情况中。
  • 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

依赖路径识别语义关系。

【CS224n】(lecture4)Dependency Parsing 依存句法分析_句法结构_13


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

二、Dependency Grammar and Treebanks (15 mins)

2.1 Dependency Grammar and Dependency Structure

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

  • 一种是直接在句子上标出依存关系箭头及语法关系
  • 另⼀种是将其做成树状机构(Dependency Tree Graph)
  • 【CS224n】(lecture4)Dependency Parsing 依存句法分析_句法结构_14

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)。
通常添加⼀个伪根指向整个句子的头部,这样每个单词都精确地依赖于另⼀个节点。

【CS224n】(lecture4)Dependency Parsing 依存句法分析_自然语言处理_15


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

【CS224n】(lecture4)Dependency Parsing 依存句法分析_依赖关系_16

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]

【CS224n】(lecture4)Dependency Parsing 依存句法分析_依赖关系_17


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?

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

2.6 Dependency Parsing

依存关系句法分析。

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

  • 通常有⼀些限制
  • 只有一个单词是依赖于根的
  • 不存在循环
  • 这使得依赖项成为树
  • 最后一个问题是箭头是否可以交叉(非投影的 non-projective);没有交叉的就是non-projectice

【CS224n】(lecture4)Dependency Parsing 依存句法分析_依赖关系_19

2.7 Projectivity

  • 定义:当单词按线性顺序排列时,没有交叉的依赖弧,所有的弧都在单词的上方
  • 与CFG树并行的依赖关系必须是投影的
    通过将每个类别的⼀个子类别作为头来形成依赖关系
  • 但是依赖理论通常允许非投射结构来解释移位的成分
    如果没有这些非投射依赖关系,就不可能很容易获得某些结构的语义

【CS224n】(lecture4)Dependency Parsing 依存句法分析_句法结构_20

2.8 Methods of Dependency Parsing

  • Dynamic programming
    Eisner(1996)提出了一个复杂度为【CS224n】(lecture4)Dependency Parsing 依存句法分析_自然语言处理_21的算法,它生成头部位于末尾而不是中间的解析项
  • 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:将栈顶的两棵依存子树采用右弧合并;

【CS224n】(lecture4)Dependency Parsing 依存句法分析_句法结构_22

3.3 Arc-standard transition-based parser

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

【CS224n】(lecture4)Dependency Parsing 依存句法分析_自然语言处理_23


【CS224n】(lecture4)Dependency Parsing 依存句法分析_句法结构_24


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

【CS224n】(lecture4)Dependency Parsing 依存句法分析_句法结构_25

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

3.4 MaltParser

  • 我们需要解释如何选择下⼀步行动
    Answer:机器学习
  • 每个动作都由⼀个有区别分类器(例如softmax classifier)对每个合法的移动进行预测
  • 最多三种无类型的选择,当带有类型时,最多【CS224n】(lecture4)Dependency Parsing 依存句法分析_句法结构_26
  • Features:栈顶单词,POS;buffer中的第⼀个单词,POS;等等
  • 在最简单的形式中是没有搜索的
  • 但是,如果你愿意,你可以有效地执行⼀个 Beam search 束搜索(虽然速度较慢,但效果更好):你可以在每个时间步骤中保留 k个好的解析前缀
  • 该模型的精度略低于依赖解析的最高水平,但它提供了非常快的线性时间解析,性能非常好

3.5 传统的特征表示

Conventional Feature Representation

传统的特征表示使用二元(0和1表示)的稀疏向量,维度为【CS224n】(lecture4)Dependency Parsing 依存句法分析_依赖关系_27之间。

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

Indicator features

【CS224n】(lecture4)Dependency Parsing 依存句法分析_依赖关系_28

3.6 依存分析的评价和表现

Evaluation of Dependency Parsing: (labeled) dependency accuracy:

【CS224n】(lecture4)Dependency Parsing 依存句法分析_自然语言处理_29


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

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

3.6 Handling non-projectivity

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

四、Neural dependency parsing

Indicator Features的问题

  • 稀疏
  • 不完整
  • 计算复杂:超过95%的解析时间都用户特征计算

Reference

(1)课程ppt:https://web.stanford.edu/class/cs224n/slides/
(2)Speech and Language Processing :https://web.stanford.edu/~jurafsky/slp3/
(3)课程官网:https://see.stanford.edu/Course/CS224N#course-details (4)
(5)​​​【笔记3-5】CS224N课程笔记 - 依存分析​​​ (6)​​自然语言处理:依存句法解析(Dependency Parsing)​​​ (7)​​b站——西湖大学NLP句法分析​​​ (8)​​依存句法分析​​​ (9)基于图卷积神经网络和依存句法分析的网民负面情感分析研究,南京大学
(10)融合依存句法与产品特征库的用户观点识别研究,西北大学
(11)《统计自然语言处理基础》 Manning
(12)http://www.hankcs.com/nlp/cs224n-dependency-parsing.html
(13)​​​HanLP:面向生产环境的自然语言处理工具包​​​ (14)​​哈工大车万翔:自然语言处理中的深度学习模型是否依赖于树结构?​​​ (15)https://universaldependencies.org/
(16)​​​哈工大AAAI 2018录用论文解读:基于转移的语义依存图分析​