Michael Collins NLP Lecture 5
课程主页:http://www.cs.columbia.edu/~cs4705/
课程网盘地址:
链接:https://pan.baidu.com/s/1KijgO7yjL_MVCC9zKZ7Jdg
提取码:t1i3
这一讲主要介绍了概率上下文无关文法(Probabilistic Context-Free Grammars (PCFGs))。
3.概率上下文无关文法(Probabilistic Context-Free Grammars (PCFGs))
3.1 基本定义
给定上下文无关文法$G$,我们将使用以下定义:
$\mathcal T_G $是语法$G$下所有可能的最左派生(解析树)的集合。当语法$G$在上下文中很清楚时,我们通常将其简写为$\mathcal T $。
对于任何派生$t\in \mathcal T_G $,我们用$\text{yield}(t)$来表示由$t$的产生的字符串$s\in \Sigma’$(即,$\text{yield}(t)$是$t$中的单词序列)。
对于给定的句子$s\in \Sigma’$,我们用$\mathcal T_G(s)$表示集合
也就是说,$\mathcal T_G(s)$是$s$的可能解析树的集合。
如果句子$s$有一个以上的解析树,即$|\mathcal T_G(s)|>1$,则句子$s$是有歧义的。
如果句子$s$至少有一个解析树,即$|\mathcal T_G(s)|>0$,则句子$s$是语法合理的。
概率上下文无关法中的关键思想是扩展我们的定义,以给出可能派生的概率分布。 也就是说,我们将找到一种方法来定义解析树上的分布,$p(t)$,使得对于任何$t\in \mathcal T_G $,
以及满足
乍一看这似乎很难:每个解析树$t$都是一个复杂的结构,而集合$\mathcal T_G $很可能是无限集。 但是,我们将看到对无上下文法有一个非常简单的扩展,它允许我们定义函数$p(t)$。
为什么这是一个有用的问题? 一个关键的想法是,一旦我们有函数$p(t)$,我们就按概率大小顺序对任何句子进行可能的解析。 特别是,给定句子$s$,我们可以返回
作为我们解析器的输出——即这是该模型下$s$最可能的解析树。 因此,如果我们的分布$p(t) $是我们语言中不同解析树概率的良好模型,那么我们将有一种处理歧义的有效方法。
这给我们留下了以下问题:
我们如何定义函数$p(t)$?
我们如何从训练样本中学习模型$p(t)$的参数?
对于给定的句子,我们如何找到最可能的解析树,即
最后一个问题将被称为解码或解析问题。
在下面的部分中,我们通过定义概率上下文无关法(PCFGs)来回答这些问题,这是一种无上下文法的一般推广。
3.2 PCFGs的定义
概率无上下文法(PCFGs)定义如下:
定义1 (PCFGs)
一个PCFG由以下元素组成:
上下文无关法$G=(N,\Sigma,R,S)$
对每个规则$\alpha \to \beta\in R$,定义参数
参数$q(\alpha \to \beta)$可以解释为假设扩展的非终止符是$\alpha$,选择规则$\alpha \to \beta$的条件概率 。 对于任何$X\in N$,我们都有约束条件
另外对任何$\alpha \to \beta\in R$,都有
给出一个包含规则$\alpha_1\to \beta_1,\alpha_2\to \beta_2…\alpha_n\to \beta_n$的解析树$t \in \mathcal T_G$,PCFG下$t$的概率是
图4显示了一个示例PCFG,它具有与图1所示相同的上下文无关法。对原始上下文无关法的唯一补充是每个规则$\alpha \to \beta \in R$的参数$q(\alpha \to \beta)$。这些参数中的每一个都被约束为非负的,此外我们还有约束,对于任何非终止符$X\in N$,
这简单地说明,对于任何非终止符$X$,规则左侧具有该非终止符的所有规则的参数值的总和必须为$1$。 我们可以在图4中验证此属性是否适用于PCFG。例如,我们可以验证此约束适用于$X = \text{VP}$,因为
为了计算任何解析树$t$的概率,我们简单地将它包含的下文无关规则的$q$值相乘。 例如,如果我们的解析树是
那么我们有
直觉上,PCFG假设解析树是根据以下过程随机生成的:
- 定义$s_1= S,i=1$
- 当$s_i$至少包含一个非终止符:
- 在$s_i$中找到最左边的非终止符,称之为$X$。
- 从分布$q(X\to \beta)$选择某个规则$X\to \beta$。
- 通过用$\beta$替换$s_i$中最左边的$X$来创建$s_{i+1}$。
- 令$i=i+1$
因此,我们简单地将概率添加到最左派生的每个步骤中, 整棵树的概率是这些单独选择的概率的乘积。
3.3 从语料库中推导PCFG
定义了PCFG之后,接下来的问题如下:我们如何从语料库中推导出PCFG? 我们将假设一组训练数据,它是一组解析树$t_1,t_2,…,t_m$。 和以前一样,$\text{yield}(t_i)$是语料库中的第$i$个句子。
每个解析树$t_i$是一系列上下文无关规则:我们假设我们语料库中的每个解析树在其根处都有相同的符号$S$。然后我们可以按如下方式定义$\text{PCFG}(N,\Sigma,R,S,q)$:
$N$是解析树$t_1…t_m$中所有非终止符。
$\Sigma$是解析树$t_1…t_m$中所有单词。
起始符为$S$。
规则集$R$包含解析树$t_1…t_m$中所有规则$\alpha \to \beta $。
参数的最大似然估计为
其中$\text{Count}(\alpha \to \beta)$是规则$\alpha \to \beta$在解析树$t_1…t_m$中出现的次数,$\text{Count}(\alpha)$是非终止符$\alpha $在解析树$t_1…t_m$中出现的次数。
例如,如果规则$\text{VP}\to \text{Vt Np}$在我们的语料库中出现$105$次,然后非终止符$\text{VP}$出现$1000$次,那么
3.4 用PCFG解析
一个关键的问题如下:给出一个句子,我们如何为$s$找到最高得分的解析树,或者更明确地说,我们如何找到
本节将描述针对此问题的动态规划算法——CKY算法。
我们提出的CKY算法适用于限制类型的PCFG:采用Chomsky正规形式(CNF)的PCFG。虽然CNF中对语法的限制可能起初似乎是限制性的,但结果并不是一个强有力的假设。可以将任何PCFG转换为CNF中的等效语法:我们将在作业中更多地查看这个问题。
在接下来的部分中,我们首先描述CNF中语法的概念,然后描述CKY算法。
3.4.1 Chomsky正规形式(Chomsky Normal Form)
定义2 (Chomsky Normal Form)
上下文无关法$G=(N,\Sigma,R,S)$是Chomsky正规形式如果每个规则$\alpha \to \beta $采用以下两种形式之一:
- $X\to Y_1 Y_2$,其中$X\in N, Y_1\in N,Y_2 \in N$。
- $X\to Y$,其中$X\in N, Y\in \Sigma$。
因此,语法中的每个规则要么将非终止符$X$重写为两个非终止符$Y_1,Y_2$;要么将非终止符$X$重写一个终止符$Y$。
图5显示了Chomsky正规形式的PCFG的示例:
3.4.2 使用CKY算法进行解析
我们现在描述用于在CNF中使用PCFG进行解析的算法。 该算法的输入是Chomsky正规形式的PCFG,$G=(N,\Sigma,R,S,q)$,并且$s = x_1…x_n$,其中$x_i$是句子中第$i$个单词。 算法的输出是
CKY算法是一个动态规划算法。 算法中的关键定义如下:
对于给定的句子$x_1…x_n$,对于任意$X\in N$以及任意$(i,j), 1\le i \le j \le n$,定义$\mathcal T(i,j ,X) $为短语$x_i…x_j$的解析树,其中非终止符$X$为树的根。
定义
(如果$\mathcal T(i,j ,X) $是空集,定义$\pi(i,j ,X)=0$)
因此,$\pi(i,j ,X)$是代表短语$x_i…x_j$的任何解析树的最高分数,其中这些解析树满足非终止符$X$为树的根。如果树$t$包含规则$\alpha_1\to \beta_1,\alpha_2\to \beta_2…\alpha_m\to \beta_m$,那么
特别的,我们有
CKY算法的关键点点可以递归定义$\pi$,这允许简单的自下而上动态规划算法。 该算法是“自下而上”的,在这种意义上,首先计算$j = i$的情况下的$\pi(i,j ,X)$,然后是$j = i + 1$的情况,依此类推。
递归定义中的基本情况如下:对于所有$i=1…n$以及$X\in N$,
递归定义如下:对于所有$(i,j),1\le i \le j \le n$以及$X\in N$,
本讲义的下一部分将说明此递归定义的理由。
图6显示了基于这些递归定义的最终算法。 该算法自下而上填充$\pi $值:首先使用递归中的基本情况填充$\pi(i,i ,X)$;然后令$j=i+1,j=i+2$,等等。
注意,该算法存储$(i,j,X)$对应的反向指针值$bp(i,j,X)$。 这些值记录得分最高的解析树对应的规则$X\to Y\ Z$以及分界点$s$,利用反向指针就可以恢复句子的最高得分对应的解析树。除此之外,算法的时间复杂度为$O(n^3|N|^3)$
3.4.3 算法的证明
作为如何应用等式1中的递归规则的示例,考虑解析句子
并考虑$π(3,8,\text{VP})$的计算。 这将是具有根VP的任何树的最高分,跨越短语$x_3…x_8=\text{saw the man with the telescope}$。 公式1规定,为了计算这个值,我们要对两个选择取$\max$:首先,选择规则集$R$中一个规则$\text{VP}\to Y\ Z$,注意这里有两个规则,$\text{VP}\to \text{Vt NP}$和$\text{VP}\to \text{VP PP}$。 第二,选择$ s\in \{3,4,…7 \}$。 因此,我们对以下几项取最大值:
我们如何证明这种递归定义? 关键的观察是任何以$X$为根且跨越短语$x_i…x_j $的树$t$,必须包含以下步骤:
在树的顶部选择某个规则$X\to Y\ Z\in R$。
选择$s \in \{i… j -1\}$,我们将其称为规则的“分裂点”。
选择以$Y$为根且跨越短语$x_i…x_s $的树$t_1$。
选择以$Z$为根且跨越短语$x_{s+1}…x_j $的树$t_2$。
我们有
即,树的概率是三项的乘积:树顶部规则的概率,以及子树$t_1$和$t_2 $的概率。
例如,考虑以下树,以VP为根,跨越短语$x_3…x_8$:
在这种情况下,我们树顶部的规则为$\text{VP}\to \text{VP PP}$;分裂点的选择是$s = 5$;以VP为根,代表$x_3…x_s$的树是
以及PP为根,代表$x_{s+1}…x_8$的树是
第二个关键观察如下:
- 如果最高得分树以非终止符$X$为根并且跨越短语$x_i…x_j$,使用规则$X\to Y\ Z$和分裂点$s$,那么它的两个子树必须是:
- 1)以$Y$为根,跨越短语$x_1…x_s$的最高得分树。
- 2)以$Z$为根,跨越短语$x_{s+1}…x_j$的最高得分树。
上述证明是利用反证法。 如果条件(1)或条件(2)不满足,我们总能找到一个更高的得分树,其根为$X$,跨越单词$x_i… x_j$,具体方式为通过选择跨越短语$x_1…x_s$或跨越短语$x_{s+1}…x_j$的更高得分子树。
现在让我们回顾一下我们的递归定义:
我们看到等式右边涉及搜索所有可能的规则$X\to Y\ Z\in R$和可能的分裂点$s$。对于每个选择规则和分裂点,我们计算
这是以$X$为根,跨越词$x_i…x_j$的最高得分树(给定这个规则和分裂点)。 该定义使用值$\pi(i, s, Y)$和$\pi(s+1, j, Z)$,对应于两个最高得分子树。 我们对所有可能的规则和分割点选择取最大值。
3.4.5 树内求和的内部算法(The Inside Algorithm for Summing over Trees)
我们现在描述第二种非常相似的算法,该算法对给定句子的所有解析树的概率求和,从而计算PCFG下句子的概率。 该算法称为内部算法。
算法的输入再次是Chomsky正规形式的PCFG,$G=(N,\Sigma,R,S,q)$,并且句子$s = x_1… x_n$,其中$x_i$是句子中第$i$个单词。 算法的输出是
这里$p(s)$是PCFG生成字符串$s$的概率。
我们定义如下内容:
对于给定的句子$x_1…x_n$,对于任意$X\in N$以及任意$(i,j), 1\le i \le j \le n$,定义$\mathcal T(i,j ,X) $为短语$x_i…x_j$的解析树,其中非终止符$X$为树的根。
定义
(如果$\mathcal T(i,j ,X) $是空集,定义$\pi(i,j ,X)=0$)
该定义和之前相比只是将$\max$更换为$\text{sum}$,特别的,我们有
我们使用和之前非常相似的递归定义。 首先,基本情况如下:对于所有$i=1…n$以及$X\in N$,
递归定义如下:对于所有$(i,j),1\le i \le j \le n$以及$X\in N$,
图7显示了基于这些递归定义的算法。 该算法与CKY算法基本相同,但在递归定义中用sum替换max。 再次“自下而上”计算$\pi$值。
本讲测验题
Coursera部分
1.
利用定义计算即可
2.
作图比较麻烦,简述思路。这里一共有两个解析树,计算的概率分别为$0.00015$和$0.00027$,所以最高概率为$0.00027$
3.
利用公式
此处
所以答案为
4.
显然我们应该有
所以
5.
利用定义即可
6.
利用公式
此处将可能的情形都列出即可
所以
课内部分
1.
不难看出$\pi(i, j, X)$代表短语$x_i…x_j$的解析树的数量,其中这些解析树满足非终止符$X$为树的根,所以应该填写
2.
回顾之前定义的$\pi(i, j ,X)$,在left-branch条件下一定有$i=1$,所以可以得到如下算法:
对$l=1 \ldots(n-1)$
令$j=1+l$
$X\in N $,计算
返回$\pi (1, n, S)$
3.
作图后不难发现所有概率均相同。
4.
(注意上述概率没有归一化。)