课程主页:http://www.cs.columbia.edu/~cs4705/

课程网盘地址:

链接:https://pan.baidu.com/s/1KijgO7yjL_MVCC9zKZ7Jdg
提取码:t1i3

这一讲介绍基于历史的解析的对数线性模型(Log-Linear Models for History-Based Parsing)。

这一讲将应用对数线性模型解决解析问题,现在第一个问题是,我们如何定义$P(T|S)$?其中$T$是一颗解析树,这里

处理该问题的方法为四步:

步骤1:用决策序列$d_1…d_m$表示一棵树

$m$不一定是句子的长度。

步骤2:树的概率为

步骤3:使用对数线性模型估计

步骤4:搜索。

下面分别介绍这几个步骤。

步骤1

步骤1利用了Ratnaparkhi的解析:三层结构:

  1. 词性标签(Part-of-speech tags)
  2. 分块(Chunks)
  3. 剩余的结构(Remaining structure)

Layer 1: Part-of-Speech Tags

第一层进行$n$个标签决策,一个具体例子如下:

Layer 2: Chunks

分块(Chunks)被定义为所有子节点都是词性标签的任何短语,例如上图的$\text{NP}$。

第二层进行分块操作,具体的步骤如下:

Layer 3: Remaining Structure

最后一层使用两类行动:

  • $\text{Join(X)}$或$\text{Start(X)}$,其中$\text{X}$是标签。
  • $\text{Check=YES}$或$\text{Check=NO}$。

这些行动的含义如下:

来看一个具体例子:

第一步给$\text{NP}$打标签:

第二步给$\text{Vt}$打标签:

第三步给$\text{NP} $打标签:

第四步给$\text{IN}$打标签:

第五步给$\text{NP} $打标签:

注意这一步的$\text{Check=YES}$,所以要把从$\text{Start(VP)}$开始到$\text{Join(VP)}$的部分全部合并:

这里同样有$\text{Check=YES}$,所以要把从$\text{Start(S)}$开始到$\text{Join(S)}$的部分全部合并:

全部的决策序列如下:

步骤2

步骤2是非常自然的,这里直接进入步骤3。

步骤3

这一步是使用对数线性模型估计

回顾对数线性模型的形式:

各个符号含义如下:

现在的问题是如何定义$f$,Ratnaparkhi的方法取决于下一个决定是否是:

  • 标记决策。(与之前的POS标记特征相同!)
  • 分块(chunking)决策。
  • 分块后的$\text{start/join}$决策。
  • $\text{check=no/check-yes}$决策。

构造特征的方式如下:

步骤4

因为这里没有使用马尔可夫假设,所以没法使用维特比算法,常用的搜索算法为beam search。

本讲测验题

Coursera部分

1.

START(NP),JOIN(NP),OTHER,START(ADJP)

2.

START(NP)

3.

b