3.11-3.13 PCFG的基本介绍
继上一节我们介绍完PCFG的基本组成之后,我们来讨论一下如何得到文法计算所需的概率:
Penn WSJ Treebank 基本是最早的句法树的统计数据了,但到今天为止,已经有很多很多关于此的统计数据了。
那么如何从一个Treebank得出一个PCFG呢:
首先我们需要学习两种变量:第一个是规则,比如从S->NP VP;
第二个是概率,比如。
然后是概率估计方法:
比如你想计算VP->VT NP的概率,那么公式如下:
这里关于的数据来自Treebank。
下面我们来讨论一下PCFG可以适用的条件:
- 首先第一个条件就是:相同的原状态的概率之和为1,举例:
- (???)第二个条件是有可能在有限步骤之内得到的可能概率为1,而这是不符合实际情况的,下面有个小小的例子:
假设我们的规则是这样的:
那么我们的可能存在的句法树分别的概率是——0,0,0……
我jio得大概可能的意思是:当语料中没有出现, 而在我们的测试样本中却出现了少见的单词时, PCFG 会对所有的语法树都给出概率为0的估计, 这对 PCFG 的模型是一个致命的问题。
3.14-16 CKY算法
我们上节课讲了应用PCFG的方法得到语法树的过程:
我们得到一个特定的句子,然后从这个句子开始,它会有很多的句法树的可能,我们需要做的就是计算可能的句法树的概率,排序得出最大的输出即可。
但这么做有个很大的问题,特定句子的句法树可能结果是非常庞大的,而且还会随着句子长度的增加飞速增长。如何快速计算就是一个重要的问题。
很庆幸我们已经有了一个非常好的算法CKY算法,这个算法在计算过程中要求必须符合Chomsky Normal Form,即:
R满足的条件-X -> Y1 Y2 , 其中 Y1和 Y2属于 N ;X -> Y , 其中 Y 属于 sigma
CNF是具有Chomsky范式的CFG,上面两个条件表明,如果一个上下文无关文法的每个输出式形式为X -> Y1 Y2或者X -> Y,即规则的右部或者是两个非终结符或者是一个终结符。而且任何一个CFG都可以转化成一个弱等价的CNF。
CKY本质上是一个DP算法:
CKY 是一种 DP 算法, 其要求PCFG 中的R 必须符合 Chromsky Normal Form, 即:
X -> Y1 Y2 , 其中 Y1和 Y2属于 N
X -> Y , 其中 Y 属于 sigma
满足了这种形式后, 可以定义CKY的最优子结构为 , 其表示以 X 为根部非终端词, 涵盖句子中第 i 个到第 j 个单词的语法树的概率. 在这样的定义下, 我们的目标就是寻找到一棵语法树 t, 使得 Pi(1, n, S)最大.
DP 算法的一个特点是问题的解是贪婪的, 一个较大问题的解必然依赖于一个较小问题的解, DP 算法按照 bottom-up 的方式, 从解决较小规模的问题开始, 逐渐构建对于目标问题的解. CKY 所定义的递归式如下:
,
其中括号中的项为在所有的 X 的规则, 以及一切可能的分裂点 s的情况下得到的最大值.
下面是完整的算法:
这样的话,对于句法树概率的计算就可以简化成多项式级:
????