哥伦比亚大学 NLP 第三章(第二部分)

哥伦比亚大学 NLP 第三章(第二部分)

目录

  • 概率上下文无关
  • C K Y CKY CKY 算法

本部分关于上下文无关相关符号的约定均基于第一部分,本部分将继续沿用不再定义
第三章第一部分传送门:https://blog.csdn.net/scanf_yourname/article/details/86777756

概率上下文无关文法 ( P C F G s ) (PCFGs) (PCFGs)

为什么引入概率上下文无关文法?

  • 我们之前讲过与上下文无关文法,它的问题是会因为生成的分析树结构不同,也就是句式结构的不同引起歧义。
  • 我们现在考虑一种方法解决这个问题,就是概率与上下文无关文法。在现实生活中,我们在面对一个歧义句的时候能够分辨那个是正确的语意,在很多情况下是因为有的句式结构下产生的句子是不符合逻辑的。所以,概率与上下文无关文法的目的就是为每一种可行的句式加上一个概率以判断什么是合理的句式结构。

定义概率上下文无关文法

  • 概率上下文无关文法继承了上下文无关文法的四元组,在此基础之上 P C F G PCFG PCFG R R R中的每一个映射关系定义一个条件概率 q ( β j ∣ α i ) q(\beta_{j}|\alpha_{i}) q(βjαi),其中 α i ϵ V \alpha_{i}\epsilon V αiϵV β j ϵ ∑ \beta_{j}\epsilon \sum βjϵ α i → β j ϵ R \alpha_{i}\rightarrow\beta_{j}\epsilon R αiβjϵR
    意味映射关系 α i → β j \alpha_{i}\rightarrow\beta_{j} αiβj出现的概率为 q ( β j ∣ α i ) q(\beta_{j}|\alpha_{i}) q(βjαi)
    规定: ∑ j = 0 m a x q ( β j ∣ α i ) = 1 \sum_{j=0}^{max} q(\beta_{j}|\alpha_{i})=1 j=0maxq(βjαi)=1
  • 由于之前规定的左侧优先原则,我们便可根据上面的条件概率计算出每一种结构对应的概率,从而估计最可能结构。
    假设 t t t是一种可能存在的分析树结构,根据左侧优先原则,那么它的每一步映射都是确定的:
    α 1 → β 1 \alpha_{1}\rightarrow\beta_{1} α1β1, α 1 → β 1 . . . . . . \alpha_{1}\rightarrow\beta_{1}...... α1β1...... α n → β n \alpha_{n}\rightarrow\beta_{n} αnβn
    则这颗分析树对应的概率 P ( t ) = ∏ i = 1 n q ( β i ∣ α i ) P(t)=\prod_{i=1}^{n}q(\beta_{i}|\alpha_{i}) P(t)=i=1nq(βiαi)
    假设我们要列举所以可能的分析树比较他们的概率,这个所有生成树构成的集合是 τ ( s ) \tau(s) τ(s), T ϵ τ ( s ) T\epsilon\tau(s) Tϵτ(s)
    最终我们要求的就是所有可能分析树概率最大者:
    a r g m a x t ϵ τ ( s ) p ( t ) arg max_{t\epsilon \tau(s) p(t)} argmaxtϵτ(s)p(t)
    哥伦比亚大学 NLP 第三章(第二部分)_第1张图片
    上图给出了求解右侧分析树概率的方法,按照树的先序遍历首先是 S → V P S\rightarrow VP SVP,再依次是 V P → V e r b VP\rightarrow Verb VPVerb, V e r b → B o o k . . . . . Verb\rightarrow Book..... VerbBook....., N o u n → f i g h t Noun\rightarrow fight Nounfight。我们就按照这个顺序将所有的概率乘到一起得到最后的概率。

如何通过数据学习一个 P C F G PCFG PCFG模型

  • 数据来源: T r e e b a n k Treebank Treebank,分析树的数据,数据规模是 50000 50000 50000,数据是手工标记的分析树。 40000 40000 40000数据作为训练集, 2400 2400 2400作为测试集,其他可能做交叉验证集了。
  • 确定集合 R R R: R R R是所有训练集数据中涉及到的映射 ( α → β ) (\alpha \rightarrow \beta ) (αβ)的集合。
  • 确定 q ( β ∣ α ) : q(\beta|\alpha): q(βα):这里采用似然估计用样本概率估计总体概率,公式如下:
    q M L ( β ∣ α ) = C o u n t ( α → β ) C o u n t ( α ) q_{ML}(\beta|\alpha)=\frac{Count(\alpha \rightarrow \beta )}{Count(\alpha )} qML(βα)=Count(α)Count(αβ)

C K Y CKY CKY 算法

C K Y CKY CKY 算法是做什么的?

  • 我们之前只是定义了一个分析树的概率大小,但是分析树的构建实际上是多种多样的,但是我们自然希望能够找到概率最大的那颗分析树,我们可以通过 C K Y CKY CKY算法实现这一目的。

C K Y CKY CKY 算法的思想

  • C K Y CKY CKY是一个动态规划的算法,最终目标是求解 m a x t ϵ τ ( s ) p ( t ) max_{t\epsilon \tau(s)}p(t) maxtϵτ(s)p(t)
  • 首先是定义一些符号:
    n = n= n=句子中单词的个数
    ω i = \omega_{i}= ωi=句子中的第 i i i个单词
    V = V= V=句中非终结符的集合
    S = S= S=句子/分析树的开始符
    π [ i , j , X ] \pi[i,j,X] π[i,j,X]这是一个动态规划表,这个表中记录的是从单词 ω i \omega_{i} ωi到单词 ω j \omega_{j} ωj之间包含非终结符 X X X的概率最大值,其中 i ϵ [ 1 , n ] , j ϵ [ 1 , n ] , i ≤ j i\epsilon[1,n],j\epsilon[1,n],i\leq j iϵ[1,n],jϵ[1,n],ij X ϵ [ ω i , ω j ] , X ϵ V X\epsilon[\omega_{i},\omega_{j}],X\epsilon V Xϵ[ωi,ωj]XϵV
    比如: π ( 2 , 5 , N P ) \pi(2,5,NP) π(2,5,NP)代表的意思就是从第二个单词到第五个单词间包含非终结符 N P NP NP的最大概率。
    所有有了上述定义我们就把问题归结为求解 π ( 1 , n , S ) \pi(1,n,S) π(1,n,S)
  • 初始条件:
    π ( i , i , X ) = q ( X → ω i ) \pi(i,i,X)=q(X\rightarrow \omega_{i}) π(i,i,X)=q(Xωi) 其中 ( i ϵ [ i , n ] , X ϵ N ) (i\epsilon[i,n],X\epsilon N) (iϵ[i,n],XϵN)
    如果没有存在从 X X X直接或间接生成 ω i \omega_{i} ωi的文法那么 q ( X → ω i ) = 0 q(X\rightarrow \omega_{i})=0 q(Xωi)=0
  • 状态转移方程:
    π ( i , j , X ) = m a x X → Y Z ϵ R , s ϵ [ i . . . ( j − 1 ) ] ( q ( X → Y Z ) ∗ π ( i , s , Y ) ∗ π ( s + 1 , j , Z ) ) \pi(i,j,X)=max_{X\rightarrow Y Z \epsilon R,s\epsilon[i...(j-1)]}(q(X\rightarrow YZ)*\pi(i,s,Y)*\pi(s+1,j,Z)) π(i,j,X)=maxXYZϵR,sϵ[i...(j1)](q(XYZ)π(i,s,Y)π(s+1,j,Z))
    这个区间 d p dp dp感觉那状态转移方程描述好苍白啊,我觉得特别像最短路的迪杰斯特拉算法,同样是跑三层的循环,其中两层负责控制区间的两个端点 i , j i,j i,j,第三层负责在区间中间扫一遍,看看加入 X X X这个非终结符后,是否存在一个新的解析方法概率更大。
    哥伦比亚大学 NLP 第三章(第二部分)_第2张图片
    上图是课件中的一个例子,我们现在要计算 π ( 3 , 8 , V P ) \pi(3,8,VP) π(3,8,VP),如右侧所示 V P VP VP具有两种映射方式,我们依次对每一种映射方式重复下面的过程:对于一种映射关系,我们用变量 s s s遍历端点 i , j i,j i,j的每一种情况,如上图的前三行所示,实际上一共涉及五种情况。这样这两种映射关系实际上就一共有十种情况。这十种情况都是能够计算出一个具体的概率值的,而 π ( 3 , 8 , V P ) \pi(3,8,VP) π(3,8,VP)取他们中最大值

C K Y CKY CKY算法的具体实现

  • 输入:一个句子 s = x 1 . . . x n s=x_{1}...x_{n} s=x1...xn和一个概率上下文无关模型(包括那五元组)
  • 初始化:
    π ( i , i , X ) = q ( X → ω i ) \pi(i,i,X)=q(X\rightarrow \omega_{i}) π(i,i,X)=q(Xωi) i f if if X → ω i ϵ R X\rightarrow \omega_{i}\epsilon R XωiϵR
    π ( i , i , X ) = 0 \pi(i,i,X)=0 π(i,i,X)=0 o t h e r w i s e otherwise otherwise
  • 算法实现过程
    哥伦比亚大学 NLP 第三章(第二部分)_第3张图片
    循环的最外层是区间的长度由 1 1 1 n − 1 n-1 n1,在长度确定的条件下不断更改区间的端点并通过状态转移方程更新 π \pi π的值。这里需要注意的是在更新 π \pi π值的同时不要忘了更新它对应的分析树,因为最后我们要得到的不是最大值,而是其对用的分析树结构。

你可能感兴趣的:(notes,NLP)