Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

E.6 概率词汇化 CFG

上一节说明,如果通过自动拆分和合并重新设计语法规则符号,那么使用简单概率 CKY 算法分析原始 PCFG 也能达到很高的句法分析准确率。

本节讨论另一类模型:它不修改语法规则集合,而是修改分析器的概率模型,使其能够使用词汇化规则。由此得到的一族词汇化分析器包括 Collins 分析器(Collins, 1999)和 Charniak 分析器(Charniak, 1997)。

前文已经看到,句法成分可与一个词汇中心语关联;我们还定义了词汇化语法,用其词汇中心语标注树中的每个非终结符。例如规则 VPVBD NP PPVP\to VBD\ NP\ PP 可扩展为:

VP(dumped)VBD(dumped) NP(sacks) PP(into)(E.20)VP(dumped)\to VBD(dumped)\ NP(sacks)\ PP(into)\tag{E.20}

标准词汇化语法实际上还要进一步扩充:把中心语标记(即中心词的词性标记)也与非终结符关联。于是,每条规则中的每个成分都同时用中心词和中心语标记进行词汇化,格式如下:

VP(dumped,VBD)VBD(dumped,VBD) NP(sacks,NNS) PP(into,P)(E.21)VP(dumped,VBD)\to VBD(dumped,VBD)\ NP(sacks,NNS)\ PP(into,P)\tag{E.21}

图 E.10 展示一棵包含中心语标记的词汇化分析树。

图 E.10 一句 WSJ 语句的词汇化分析树,其中包括中心语标记;改编自 Collins(1999)。图下方给出该树所需的 PCFG 规则:左侧为内部规则,右侧为词汇规则。

为生成这样的词汇化树,每条 PCFG 规则都必须指定右部的一个成分为中心语子节点。一个节点的中心词继承自其中心语子节点的中心词,中心语标记则设为该中心词的词性标记。前文已经给出一组人工规则,用于识别特定成分的中心语。

理解词汇化语法的一种自然方式是把它看成父节点标注:它仍是简单的上下文无关文法,只是每条规则有许多副本,对每个成分可能的中心词/中心语标记组合各有一个副本。以这种方式理解概率词汇化 CFG,就会得到图 E.10 树下方所示的一组简单 PCFG 规则。

注意,图 E.10 中有两类规则:词汇规则表示预终结符展开为一个词;内部规则表示其他规则展开。在词汇化语法中必须区分两者,因为它们对应完全不同的概率。词汇规则是确定性的,概率为 1.0,因为像 NN(bin,NN)NN(bin,NN) 这样的词汇化预终结符只能展开为词 bin;内部规则的概率则需要估计。

假设把概率词汇化 CFG 当作一个规模极大的普通 CFG,只不过它拥有许多复杂的非终结符,并用最大似然估计每条规则的概率。根据式(E.17),规则

VP(dumped,VBD)VBD(dumped,VBD) NP(sacks,NNS) PP(into,P)VP(dumped,VBD)\to VBD(dumped,VBD)\ NP(sacks,NNS)\ PP(into,P)

的最大似然概率估计为:

Count(VP(dumped,VBD)VBD(dumped,VBD) NP(sacks,NNS) PP(into,P))Count(VP(dumped,VBD))(E.22)\frac{\operatorname{Count}(VP(dumped,VBD)\to VBD(dumped,VBD)\ NP(sacks,NNS)\ PP(into,P))}{\operatorname{Count}(VP(dumped,VBD))}\tag{E.22}

然而,这样的计数过于具体,根本无法得到良好估计:训练数据中不大可能出现许多(甚至任何)这样的句子——其动词短语以 dumped 为中心,带有一个以 sacks 为中心的 NP 论元和一个以 into 为中心的 PP 论元。换言之,完全词汇化 PCFG 规则的计数极其稀疏,大多数规则概率都会成为 0。

词汇化句法分析的思路是再作一些独立性假设,把每条规则分解,从而把

P(VP(dumped,VBD)VBD(dumped,VBD) NP(sacks,NNS) PP(into,P))P(VP(dumped,VBD)\to VBD(dumped,VBD)\ NP(sacks,NNS)\ PP(into,P))

估计为若干较小、彼此独立的概率估计之积;对这些较小事件,可以获得合理计数。下一节概述其中一种方法——Collins 句法分析方法。

E.6.1 Collins 分析器

统计句法分析器的差别正在于它们作出哪些独立性假设。下面考察 Collins 分析器简化版本的假设。第一个直觉是把每条(内部)CFG 规则的右部看成一个中心语非终结符、中心语左侧的若干非终结符以及中心语右侧的若干非终结符。抽象地写成:

LHSLnLn1L1 H R1Rn1Rn(E.23)LHS\to L_nL_{n-1}\ldots L_1\ H\ R_1\ldots R_{n-1}R_n\tag{E.23}

由于这是词汇化语法,L1L_1R3R_3HHLHSLHS 等每个符号实际上都是表示范畴、中心词和中心语标记的复合符号,如 VP(dumped,VBD)VP(dumped,VBD)NP(sacks,NNS)NP(sacks,NNS)

我们不再为整条规则计算单个最大似然概率,而是通过一个巧妙的生成故事来分解规则;这里采用 Collins Model 1 的略微简化版本。新的生成故事是:给定左部后,先生成规则的中心语,再从内到外逐个生成中心语的依存成分。每一步都有自己的概率。

还要在规则左右边缘各增加一个特殊的 STOP 非终结符,使模型知道何时停止在某一侧生成依存成分。不断生成中心语左侧的依存成分,直到在左侧生成 STOP;随后转到中心语右侧并开始生成右依存成分,直到生成 STOP。就像在生成下面这条扩充规则:

VP(dumped,VBD)STOP VBD(dumped,VBD) NP(sacks,NNS) PP(into,P) STOP(E.24)VP(dumped,VBD)\to STOP\ VBD(dumped,VBD)\ NP(sacks,NNS)\ PP(into,P)\ STOP\tag{E.24}

这一扩充规则的生成故事使用三类概率:生成中心语的 PHP_H、生成左依存成分的 PLP_L 和生成右依存成分的 PRP_R

图 E.11 Collins 模型生成词汇化规则的步骤:先生成中心语,再从中心语向外生成左右依存成分及 STOP。

总之,规则

P(VP(dumped,VBD)VBD(dumped,VBD) NP(sacks,NNS) PP(into,P))(E.25)P\bigl(VP(dumped,VBD)\to VBD(dumped,VBD)\ NP(sacks,NNS)\ PP(into,P)\bigr)\tag{E.25}

的概率估计为(相对上面的步骤略微简化记号):

PH(VBDVP,dumped)×PL(STOPVP,VBD,dumped)×PR(NP(sacks,NNS)VP,VBD,dumped)×PR(PP(into,P)VP,VBD,dumped)×PR(STOPVP,VBD,dumped)(E.26)\begin{aligned} &P_H(VBD\mid VP,dumped)\\ &\quad\times P_L(STOP\mid VP,VBD,dumped)\\ &\quad\times P_R(NP(sacks,NNS)\mid VP,VBD,dumped)\\ &\quad\times P_R(PP(into,P)\mid VP,VBD,dumped)\\ &\quad\times P_R(STOP\mid VP,VBD,dumped) \end{aligned}\tag{E.26}

这些概率分别所需的数据量比式(E.25)的完整概率小得多。例如,分量概率 P(NP(sacks,NNS)VP,VBD,dumped)P(NP(sacks,NNS)\mid VP,VBD,dumped) 的最大似然估计为:

Count(VP(dumped,VBD) 在右侧某处含有子节点 NP(sacks,NNS))Count(VP(dumped,VBD))(E.27)\frac{\operatorname{Count}(VP(dumped,VBD)\text{ 在右侧某处含有子节点 }NP(sacks,NNS))}{\operatorname{Count}(VP(dumped,VBD))}\tag{E.27}

这些计数遭受稀疏问题的程度远低于式(E.25)那样的复杂计数。

更一般地,设 HH 是中心语,中心词为 hwhw、中心语标记为 hthtlw/ltlw/ltrw/rtrw/rt 分别是左、右侧成分的词/标记;PP 是父节点。则整条规则的概率可按以下步骤表示。

  1. 以如下概率生成短语的中心语 H(hw,ht)H(hw,ht)

PH(H(hw,ht)P,hw,ht)P_H(H(hw,ht)\mid P,hw,ht)
  1. 以如下总概率生成中心语左侧的修饰语:

i=1n+1PL(Li(lwi,lti)P,H,hw,ht)\prod_{i=1}^{n+1}P_L(L_i(lw_i,lt_i)\mid P,H,hw,ht)

其中 Ln+1(lwn+1,ltn+1)=STOPL_{n+1}(lw_{n+1},lt_{n+1})=STOP;生成 STOP 词元后停止。

  1. 以如下总概率生成中心语右侧的修饰语:

i=1n+1PR(Ri(rwi,rti)P,H,hw,ht)\prod_{i=1}^{n+1}P_R(R_i(rw_i,rt_i)\mid P,H,hw,ht)

其中 Rn+1(rwn+1,rtn+1)=STOPR_{n+1}(rw_{n+1},rt_{n+1})=STOP;生成 STOP 词元后停止。

Collins 模型的句法分析算法是概率 CKY 的扩展。如何扩充 CKY 算法以处理基本词汇化概率,留作练习 E.5 和 E.6。