课程主页:https://web.stanford.edu/class/archive/cs/cs224n/cs224n.1194/

视频地址:https://www.bilibili.com/video/av46216519?from=search&seid=13229282510647565239

这里回顾CS224N Lecture 5的课程内容,这一讲介绍了Dependency Parsing。

Dependency Parsing

句子的依赖结构(dependency structure)展示了句子中的单词依赖于其他哪个单词,通常会增加一个根节点ROOT,此外依赖结构还有如下限制:

  • 只有一个单词依赖于ROOT
  • 没有循环

上述条件会使得dependency变成树结构,一个具体的例子如下:

转换成树的形式效果如下:

Greedy Deterministic Transition-Based Parsing

现在讨论如何解析句子的依赖结构,首先介绍Greedy Deterministic Transition-Based Parsing,该方法是使用状态转移的方法进行解析,首先给出状态的基本定义。

状态:

对于任意句子$S=w_{0} w_{1} \dots w_{n}$,状态可以由三元组$c=(\sigma, \beta, A)$描述:

  1. 栈$\sigma$,其存储$S$的单词$w_i$
  2. 缓存$\beta$,其存储$S$的单词$w_i$
  3. 一组形式为$(w_i,r,w_j)$的依赖弧$A$,其中$w_i, w_j$来自$S$,并且$r$描述了依赖关系。

对于任意句子$S=w_{0} w_{1} \dots w_{n}$,

  1. 一个形如$\left(\left[w_{0}\right]_{\sigma},\left[w_{1}, \dots, w_{n}\right]_{\beta}, \varnothing\right)$的初始状态$c_0$(其中$w_0$为ROOT)
  2. 一个终止状态$\left(\sigma,[]_{\beta}, A\right)$

状态转移:

状态间存在三种形式的转移:

  1. $\text{SHIFT}$:移除buffer的第一个单词,然后将其push到stack.(前提条件:buffer非空)
  2. $\mathrm{LEFT}-\mathrm{ARC}_{r}$:添加依赖弧$\left(w_{j}, r, w_{i}\right)$到集合$A$,其中$w_i$为栈中第二个元素,$w_j$为栈顶的元素。从栈中移开$w_i$。(前提条件:栈至少有两个元素并且$w_i$不是ROOT)
  3. $\mathrm{RIGHT}-\mathrm{ARC}_{r}$:添加依赖弧$\left(w_{i}, r, w_{j}\right)$到集合$A$,其中$w_i$为栈中第二个元素,$w_j$为栈顶的元素。从栈中移开$w_j$。(前提条件:栈至少有两个元素并且$w_i$不是ROOT)

概括如下:

来看一个具体例子:

Neural Dependency Parsing

现在介绍如何将神经网络和上述方法结合起来,首先介绍输入:

  1. $S_{\text {word}}$:栈$\sigma$和缓存区$\beta$中某些单词(属于$S$)(及其从属元素)的向量表示。
  2. $S_{\text{tag}}$:$S$中单词的(POS)词性标签:$\mathcal{P}=\{N N, N N P, N N S, D T, J J, \ldots\}$
  3. $S_{\text{label}}$:$S$中某些单词的弧形标签。弧形标签包括一个小的离散集,描述了依赖关系:$\mathcal{L}=\{a m o d, t m o d, n s u b j, c s u b j, d o b j, \dots\}$

每种类型的特征,我们都有对应的嵌入矩阵,分别为$E^{w} \in \mathbb{R}^{d \times N_{w}},E^{t} \in \mathbb{R}^{d \times N_{t}},E^{l} \in \mathbb{R}^{d \times N_{l}}$,选择的数量分别为$n_{\text{word}},n_{\text{tag}},n_{\text{label}}$,输入特征为$\left[x^{w}, x^{t}, x^{l}\right]$,整个网络架构如下: