前一周讲的Pure PCFG是完全和语义没有关系的,但是很多的“歧义问题”放在一个特定的语境中,就不会产生歧义的,所以这个语义还是很重要的。第四周就讲了如何把这种语义放进Pure PCFG中去。
1. Pure PCFG的缺点
看下面这个例子:
这棵Parsing Tree由7条规则组成,看其中的第5条规则“NNP → IBM”,这条规则的确定与句子中其他的单词无关,与整棵树的其余部分也无关,只与 P(NNP→IBM) 的大小有关。而实际上,IBM这个单词的词性究竟是不是NNP,与句子中其余单词是有关系的。
再比如说下面这个例子中:
唯一不一样的地方就是选择” VP→VP PP ”还是” NP→NP PP ”,在pure PCFG中,会选择概率大的那条规则。但是实际上,选择哪一条规则可以直接从其他单词中看出,” VP→VP PP ”才是正确的选择。
总结:lexical information(语义信息)是重要的,我们大家需要它!
2. Lexical PCFG理论
Lexical PCFG通过向规则中加入“head”来添加语义信息。
“head”的意思就是这个词组中最重要的部分,如果只有一个单词,那就是这个单词本身,比如说:
DT→the 中的词组就是”the”,则“head”就是“the”,于是标记为 DT(the)→the
NN→witness 中词组就是”witness”,则“head”就是“witness”,于是标记为 NN(witness)→witness
NP→DT(the) NN(witness) 中的词组是“the witness”,那么“head”就是“witness”,于是标记成 NP(witness)→DT(the) NN⎯⎯⎯⎯⎯⎯(witness) ;选择哪个孩子作为head,就在它的上面标个横线。
就这样,由下至上,反向传播上去,直到root处结束。
于是就有了下面这个Pure PCFG 和 Lexical PCFG的对比图:
2.1 模型搭建
于是,我们的模型搭建如下:
比如在上面的这棵树中,有8条rules和一个root: S(questioned)
于是整棵树的概率计算如下:
2.2 参数估计
于是,这个模型的唯一参数就是 q(ri) ,因为加入了lexical information,这里的参数估计与Pure PCFG也不同了。
令
X
为规则左边的部分,
于是有:
于是这个参数转变成了两个小参数 q(R|X,H) 和 q(M|R,X,H)
然后, q(R|X,H) 如下计算:
其中,
q(M|R,X,H) 如下计算:
其中,
可以看到,这里参数估计的时候,融合了non-lexical部分( q(R|X) 和 q(M|R) )和lexical部分( q(R|X,H) 和 q(M|R,H) ),并且通过 λ1 和 λ2 来权衡这两部分。
3. Lexical PCFG实现
这里依旧是使用“动态规划”来实现,唯一不通的就是,参数的计算,除此之外,整个算法没有什么不同。