根据上述文法,『He met Jenny with flowers』有两种可能的语法结构:
而且我们可以通过将树中的所有概率相乘,得到两棵子树的整体概率,从中选择概率更大的子树作为最佳结构。
与HMM类似,PCFG也有三个基本问题:
- 给定一个句子W=
w1w2…wn
和文法G,如何快速计算概率P(W|G) - 给定一个句子W=
w1w2…wn
和文法G,如何选择该句子的最佳结构?即选择句法结构树t使其具有最大概率 - 给定PCFG G和句子W=
w1w2…wn
,如何调节G的概率参数,使句子的概率最大
首先是第一个问题,HMM中我们用的是前向算法和后向算法来计算观察序列O概率,相似的,这里我们用的是内向算法和外向算法来计算P(W|G) 。
首先我们定义内向变量αij(A)
,与前向变量相似但又有不同,αij(A)
即非终结符A推导出W中字串wiw(i+1)…wj
的概率。那P(W|G)自然就等于α1n(S)
了,S是起始符号,计算的就是由起始符号S推导出整个句子W=w1w2…wn
的概率。
所以只要有αij(A)
的递归公式就能计算出P(W|G),递归公式如下:
根据定义,αii(A)
自然就等同于符号A输出wi
的概率;而αij(A)
的计算思路是,这个子串wiw(i+1)…wj
可以被切成两部分处理,前一部分wiw(i+1)…wk
由非终结符号B生成,后一部分wkw(k+1)…wj
由非终结符号C生成,而BC由A生成。这样将概率依次相乘,即可将一个大问题划分为两个小问题处理,两个小问题又可以进一步划分直到不能划分为止,然后递归回来得到结果。
这里给一张内向变量计算方法示意图:
这个问题也可以用外向算法来解决。
首先定义外向变量,βij(A)
是,初始符号S在推导出语句W=w1w2…wn
的过程中,产生符号串w1w2…w(i-1)
Aw(j+1)…wn
的概率(隐含着A会生成wiw(i+1)…wj
)。也就是说βij(A)
是S推导出除了以A节点为根节点的子树以外的其他部分的概率。