成语大全网 - 汉语词典 - 关于PCFG的总结【Statistic constituency parsing】[14.4]

关于PCFG的总结【Statistic constituency parsing】[14.4]

14.4

基于概率的PCFG用于解决parsing过程中的ambiguity问题,但是,由于基本的PCFG在获取non-terminal expansion概率的时候,没有考虑non-terminal在整个句子中的位置等上下文信息,同时也没有考虑到单词本身对parsing的影响,因此导致得到的概率不准确,因此需要对原有的PCFG进行增强。原文中是这样描述的:

Poor independence assumptions: CFG rules impose an independence assumption on probabilities that leads to poor modeling of structural dependencies across the parse tree.

Lack of lexical conditioning: CFG rules don’t model syntactic facts about specific words, leading to problems with subcategorization ambiguities, preposition attachment, and coordinate structure ambiguities.

更具体的细节参考原文

14.5

本节讲到了两种增强基本PCFG的方法,一种是把non-terminal的parant节点考虑进去,一种是把对pre-terminal(part of speech node)的parant节点考虑进去,这种方式增加了整个模型的参数,使既有的训练集变小,容易发生过拟合,因此,文中提到可以通过选择一定的程度的split和merge的方法,找到使得训练集的概率最大的annotated nodes。提一下,文中提到,这种方法已经可以获得很好的parsing精度,但是还有另外一类parsing模型,即14.6节后的内容。

14.6

从开始提到了另外一类模型,这类模型的思路与上面的模型不同,上面的模型是通过考虑parant node把non-terminal split成为更细的node,而此处考虑如何将lexical词汇信息考虑进去,文中有一句化很好的描述了如何思考这一方法:

A natural way to think of a lexicalized grammar is as a parent annotation, that is, as a simple context-free grammar with many copies of each rule, one copy for each possible headword/head tag for each constituent.

意思是把每个contex-free 的node进行增强,添加上head word和head word对应的part-of-speech信息,见下图:

但是这种方法带来了一个问题,由于基本的non-terminal node和pre-terminal node被基于词汇分成了很细的node,这造成了feature急剧增加,现有的语料下,利用下面最大似然估计公式统计出的词汇频率几乎都等于0,过于稀疏。

因此需要对该公式做一定的假设,这就是Collins method。

14.6.1 Colllins method的第一个假设如下:

The first intuition of the Collins parser is to think of the right-hand side of every (internal) CFG rule as consisting of a head non-terminal, together with the non-terminals to the left of the head and the non-terminals to the right of the head. In the abstract, we think about these rules as follows:

即把每个rule的右侧都假定又一个head non-terminal, 这里根据head的计算规则,一定是有一个non-terminal带有和parant一样的head word和对应part of speech,这个non-terminal就被作为右侧的head non-terminal,然后把整个rule的出现分裂成为几个独立的事件,即给定head non-terminal时,左侧non-terminal和右侧non-terminal分别出现的概率,由于假定这些事件独立,所以可以连乘(另外边缘位置加上stop)。

例如上图中14.25中VBD(dumped,VBD)即为右侧的head non-terminal,14.26中先计算他自己的概率即 (VBD|VP,dumped)的概率,在分别求基于head non-terminal的左右两侧的non-terminal的概率。

一句话总结Colllins method的精髓即为,通过假设14.25式对应的事件是由几个独立事件构成,把14.25式写成这几个独立事件的乘积形式即14.26,然后再分别求乘积项对应的概率。由于乘积项的稀疏性大大降低,因此可以很方便的求出整体概率。

14.7 ?另外还有一种方法即为基于概率的CCG

CCG的方法由于存在大量的category和对应的规则和lexicon,对同一个句子,会产生多种不同的parsing,文中列举了一个例子,下面这计划可以有多种parsing,

文中提到由于CCG的规则对应的只有一元和二元操作,因此可以使用PCYK算法,但是存在一个问题,由于ccg本身的特点(大量的category和lexicon),有太多的constituent存在,文中提到了explosion? of constituent一词,为了应对这个问题,采用了一种叫supertagging的方法,可以准确的评估并找到最有可能的constituent。

14.7.3 介绍了使用MEMM的方法来创建supertagging的方法,最终supertagging需要得到类似下图的一张表,表中列出了句子(United serves Denver)中每一个单词出现的可能性,按照从大到小的顺序排序。注意,我们在使用MEMM的时候,需要用到前面单词的tag信息,而每一步MEMM计算出的结果是一系列带概率的tags,那么在一步一步,从左往右的计算中选择哪个tag序列的概率是最大的呢?这个结果可以通过viterbi算法实现,但是viterbi算法最终只能求得一个最佳的tag序列,而我们需要得到下表的每一个单词对应所有tag以及概率。因此文中提到了,可以使用forwad-backward算法来计算,回忆一下forward算法,实际是计算每一步中每一个tag对应前一步所有tag情况出现情况下的概率,即前面单词出现后当前单词是当下tag的概率,此处我们考虑的是这个句子发生后,当前单词出现当前tag的概率,因此,需要把backward计算得到的当前单词的当前tag的概率考虑进去,最终得到两概率相乘,结果几位下表。

14.7.4,

supertagger这张表得到后,使用A*算法获取解析结果。文中提到的图14.11给出的算法清单,看了不是很明白,但是图14.12较好的描述了整个A*的计算过程,可以参考。后面把A*算法回顾一下,再回来研究算法14.11。