NLP-CS224n学习讲义PART 4——Dependency Parsing

1 依存语法和依存结构

NLP中的解析树与编译器中的解析树类似,用于分析句子的句法结构。主要有两个类型的结构——成分结构和依存结构。成分语法结构使用短语结构语法将单词组织成嵌套的成分。而我们主要关注的是依存结构解析

句子的依存结构主要分析的是哪些词依赖于其他哪些词。这些单词之间的二元非对称关系称为依存关系,并被描述为从首领(或上级)到附属(或修饰词、下级)的指向关系。通常这些依存关系形成一个树结构。它们通常与语法关系的名称(主语、介词宾语、同位语等)一起输入。下图是一个依存树的例子。

Bills on ports and immigration were submitted by Senator Brownback, Republican of Kansas

[港口和移民法案是由堪萨斯州共和党参议员布朗巴克提交的]

NLP-CS224n学习讲义PART 4——Dependency Parsing

1.1 依存关系语法分析

依存关系语法分析是分析给定输入句SS的语法依赖结构的任务。依存解析器的输出是一个依赖树GG其中输入句中的单词通过类型化的依存关系连接。形式上,依存分析问题要求创建一个如下的映射:

(S=W0W1...Wn)G(S = W_0W_1...W_n) \rightarrow G

确切地说,依存解析中有两个子问题:

  1. Learning:给定一组用依赖关系图注释的句子训练集DD,归纳出一个解析模型MM,该模型可用于解析新句子。
  2. Parsing:给出一个解析模型MM和一个句子SS,根据MM推导出SS的最优依赖图DD

1.2 基于跃迁的依存解析

基于跃迁的依存解析依赖于一种状态机,其通过定义可能的转换来创建从输入语句到依赖项树的映射。

  • Learning problem 就是根据状态机的转移历史,归纳出一个可以预测状态机下一次转移的模型。
  • Parsing problem 是给定前面归纳的模型,然后为输入语句构造最优的转换序列。

1.3 基于贪心确定性转换的解析

这个转换系统是一个状态机,它由状态和这些状态之间的转换组成。该模型推导出从某一初始状态到几种终态之一的一系列跃迁,

States:

对于任意句子S=w0w1...wnS = w_0w_1...w_n,一个状态可以描述为一个三元组c=(σ,β,A)c = (\sigma, \beta, A)

  1. σ\sigma为单词wiw_i的一个堆栈,
  2. β\beta为单词wiw_i的一个缓冲区,
  3. 一组形式为(wi,r,wj)(w_i, r,w_j)的依赖弧AA,其中wi,wjw_i,w_j来自SS,而 rr描述了一种依赖关系。

对于任意句子S=w0w1...wnS = w_0w_1...w_n

  1. 一个初始状态c0c_0的形式([w0]σ,[w1,,wn]β,)([w_0]_\sigma,[w_1,…, w_n]_\beta,\emptyset)(只有root在堆栈σ\sigma,所有其他词都在缓冲区β\beta中,并且没有任何依赖关系)
  2. 一个终止的状态形式为(σ,[ ]β,A)(\sigma, [ \ ]_\beta, A)(缓冲区为空)

Transitions:

状态之间有三种类型的转换:

  1. ShiftShift:删除缓冲区中的第一个单词并将其插入到堆栈的顶部。(先决条件:缓冲区非空)
  2. LeftArcrLeft-Arc_r:向集合A中增加依赖弧(wj,r,wi)(w_j, r, w_i)wiw_i为在栈顶的第二位的单词,wjw_j为栈顶的单词。将单词wiw_i从栈顶删除。(先决条件:堆栈需要包含至少两个单词,wiw_i不能是根。)
  3. RightArcrRight-Arc_r:向集合A中增加依赖弧(wi,r,wj)(w_i, r, w_j)wiw_i为在栈顶的第二位的单词,wjw_j为栈顶的单词。将单词wjw_j从栈顶删除。(先决条件:堆栈需要包含至少两个单词)

1.4 基于神经网络依赖解析

虽然有许多用于依存分析的深度模型,但本节特别关注贪心且基于转换的神经网络依存分析器。与传统的基于特征的依赖解析器相比,这类模型具有相当的性能和显著的效率。与以前的模型的主要区别是在于它依赖于密集而非稀疏的特征表示。

此节描述的模型也将使用第1.3节所示的arc-standard系统进行转换。最后,模型的目标是预测从某个初始配置cc到一个终止配置的转换序列,其中对依赖解析树进行了编码。由于模型是贪心的,它试图基于从当前配置中提取的特征c=(σ,β,A)c = (\sigma, \beta, A),来正确地一次预测一个转换T{Shift,LeftArcr,RightArcr}T \in \{Shift, Left-Arc_r, Right-Arc_r\}

Feature Selection:

一个句子的特征一般包括:

  1. SwordS_{word}:在堆栈σ\sigma和缓冲区β\beta顶部的句子SS中一些单词(及其依赖项)的向量表示。

  2. StagS_{tag}:在句子SS中一些单词的词性(POS)标签。词性标签包括一个小的,离散的集合:P={NN,NNP,NNS,DT,JJ...}P = \{NN, NNP, NNS, DT, JJ,...\}

  3. SlabelS_{label}:在句子SS中一些单词的arc-labels由一个小的、离散的集合组成,其描述了依赖关系:L={amod,tmod,nsubj,csubjdobj,...}L = \{amod, tmod, nsubj, csubj dobj,...\}

对于每个特征类型,我们将有一个相应的嵌入矩阵,从特征的一个热编码映射到d维稠密向量表示。SwordS_{word}完整的嵌入矩阵为EwRd×NwE^w \in R^{d\times N_w},其中NwN_w为字典中词汇量大小。相应地,POS和label的嵌入矩阵为EtRd×NtElRd×NlE^t \in R^{d \times N_t} 和 E^l \in R^{d\times N_l},其中NtN_t为POS tags的数量,NlN_l为arc labels的数量。

最后,让从每组特征中选择的元素个数分别记为nwordntag nlabeln_{word}、n_{tag}和\ n_{label}

前向神经网络模型

网络包含一个输入层[xw,xt,xl][x^w, x^t, x^l],一个隐藏层和一个最后带有cross-entropy的softmax层。模型如下图所示。

NLP-CS224n学习讲义PART 4——Dependency Parsing