NLP-CS224n学习讲义PART 4——Dependency Parsing
1 依存语法和依存结构
NLP中的解析树与编译器中的解析树类似,用于分析句子的句法结构。主要有两个类型的结构——成分结构和依存结构。成分语法结构使用短语结构语法将单词组织成嵌套的成分。而我们主要关注的是依存结构解析。
句子的依存结构主要分析的是哪些词依赖于其他哪些词。这些单词之间的二元非对称关系称为依存关系,并被描述为从首领(或上级)到附属(或修饰词、下级)的指向关系。通常这些依存关系形成一个树结构。它们通常与语法关系的名称(主语、介词宾语、同位语等)一起输入。下图是一个依存树的例子。
Bills on ports and immigration were submitted by Senator Brownback, Republican of Kansas
[港口和移民法案是由堪萨斯州共和党参议员布朗巴克提交的]
1.1 依存关系语法分析
依存关系语法分析是分析给定输入句的语法依赖结构的任务。依存解析器的输出是一个依赖树其中输入句中的单词通过类型化的依存关系连接。形式上,依存分析问题要求创建一个如下的映射:
确切地说,依存解析中有两个子问题:
- Learning:给定一组用依赖关系图注释的句子训练集,归纳出一个解析模型,该模型可用于解析新句子。
- Parsing:给出一个解析模型和一个句子,根据推导出的最优依赖图。
1.2 基于跃迁的依存解析
基于跃迁的依存解析依赖于一种状态机,其通过定义可能的转换来创建从输入语句到依赖项树的映射。
- Learning problem 就是根据状态机的转移历史,归纳出一个可以预测状态机下一次转移的模型。
- Parsing problem 是给定前面归纳的模型,然后为输入语句构造最优的转换序列。
1.3 基于贪心确定性转换的解析
这个转换系统是一个状态机,它由状态和这些状态之间的转换组成。该模型推导出从某一初始状态到几种终态之一的一系列跃迁,
States:
对于任意句子,一个状态可以描述为一个三元组:
- 为单词的一个堆栈,
- 为单词的一个缓冲区,
- 一组形式为的依赖弧,其中来自,而 描述了一种依赖关系。
对于任意句子,
- 一个初始状态的形式(只有root在堆栈,所有其他词都在缓冲区中,并且没有任何依赖关系)
- 一个终止的状态形式为(缓冲区为空)
Transitions:
状态之间有三种类型的转换:
- :删除缓冲区中的第一个单词并将其插入到堆栈的顶部。(先决条件:缓冲区非空)
- :向集合A中增加依赖弧,为在栈顶的第二位的单词,为栈顶的单词。将单词从栈顶删除。(先决条件:堆栈需要包含至少两个单词,不能是根。)
- :向集合A中增加依赖弧,为在栈顶的第二位的单词,为栈顶的单词。将单词从栈顶删除。(先决条件:堆栈需要包含至少两个单词)
1.4 基于神经网络依赖解析
虽然有许多用于依存分析的深度模型,但本节特别关注贪心且基于转换的神经网络依存分析器。与传统的基于特征的依赖解析器相比,这类模型具有相当的性能和显著的效率。与以前的模型的主要区别是在于它依赖于密集而非稀疏的特征表示。
此节描述的模型也将使用第1.3节所示的arc-standard系统进行转换。最后,模型的目标是预测从某个初始配置到一个终止配置的转换序列,其中对依赖解析树进行了编码。由于模型是贪心的,它试图基于从当前配置中提取的特征,来正确地一次预测一个转换。
Feature Selection:
一个句子的特征一般包括:
-
:在堆栈和缓冲区顶部的句子中一些单词(及其依赖项)的向量表示。
-
:在句子中一些单词的词性(POS)标签。词性标签包括一个小的,离散的集合:。
-
:在句子中一些单词的arc-labels由一个小的、离散的集合组成,其描述了依赖关系:。
对于每个特征类型,我们将有一个相应的嵌入矩阵,从特征的一个热编码映射到d维稠密向量表示。完整的嵌入矩阵为,其中为字典中词汇量大小。相应地,POS和label的嵌入矩阵为,其中为POS tags的数量,为arc labels的数量。
最后,让从每组特征中选择的元素个数分别记为
前向神经网络模型
网络包含一个输入层,一个隐藏层和一个最后带有cross-entropy的softmax层。模型如下图所示。