您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > 自然语言理解-词性标注
词性标注关于标注总体说来,汉语的词性标注和英语的词性标注在方法上没有明显的不同。比较典型的标注算法有:基于规则的方法。国外在70年代初主要采用这种方法,著名的TAGGIT系统,利用3300条上下文规则,对100万词次的Brown语料库标注正确率到77%。关于标注基于统计的方法。80年代初,随着经验主义方法在计算语言学中的重新崛起,统计方法在语料库词性标注中又占据了主导地位。CLAWS标注系统对LOB语料库的标注正确率达到96%左右。混合策略。国内北京大学计算语言学研究所提出了一种先规则、后统计的规则和统计相结合的标注算法,其准确率达到了96.6%。现在也有人用神经网络和遗传算法进行词性标记,这类文献很少。词性标注•自然语言处理的最终目的是要分析并理解语言,但是距离这个目标我们仍然相去甚远。•词性标注是一个中间过程。词性标注给句子中的每一个词赋予一个合适的词性。•POStagging:)|(maxarg,...,1,...,1,...,1nntwtPn词性标注中的信息来源•句法结构信息–考虑在当前词上下文中的词的词性。•词汇信息–当前词本身提供了关于标注的大量信息。词性标注的主要方法•MarkovModelTaggers•HiddenMarkovModelTaggersMarkov模型•Markov过程/链/模型是由AndreiA.Markov最初发展起来的.•它们最初的确就是为了处理语言而设计的:针对俄国文学作品中的字母序列建模。但是,Markov模型之后便作为一个通用的概率工具发展了起来。•为了和隐Markov模型相区别,我们有时也把Markov模型成为显Markov模型(HMM)。Markov假设•一序列(可能按时间排列)的随机变量不是相互独立的,每一个随机变量的值依赖于序列中前一个随机变量。对于许多这样的系统,我们可以合理的假设:我们只需要知道当前的随机变量的值,就可以来预测所有将来的随机变量,我们并不需要知道随机变量序列中所有过去的值。Markov假设•假设X=(X1,……,XT)是随机变量的序列,它从某个有限集S={s1,……,sN}中取值,这个有限集被称作是状态空间。•当X满足Markov性质时,X被称作Markov链。什么是Markov性质呢?Markov性质•有限历史LimitedHorizon:P(Xt+1=sk|X1,……,Xt)=P(Xt+1=sk|Xt)•时间不变Timeinvariant(stationary):P(Xt+1=sk|Xt)=P(X2=sk|X1)这样X是一个Markov链Markov模型中的概率•随机转移矩阵Aaij=P(Xt+1=sj|Xt=si)•初始状态的概率Njijijaiandaji11,0,,)(1iisXPNii11Markov模型和n元文法•N元文法模型是Markov模型2元词模型就是Markov模型:当前的词仅依赖于前一个词,而且这个依赖型不随着词序列而变化。如果n2,n元文法违背了有限历史假设吗?就不是Markov模型了?我们可以简单的将任何n元文法转换成Markov模型,只要将合适数量的历史编码到状态空间中。在一个n元文法模型中,状态是n-1元的。隐Markov模型•HMMs:不清楚模型经过的状态序列,但是知道状态序列的一些概率函数。•HMMs基于VMM。对于观察值来说需要知道符号发射概率。ijkjtittbsXsXkOP),|(1HMMsvsVMMss1s2a12a21a22a11b12kb21kb22kb11kOOOOMarkovModelTaggers•X—标注序列,S—标注集,O—词集(“O”是HMM中的观察值,那我们为什么称它为MMtaggers呢?为什么不是HMMtaggers?后面会有解释)•Markovmodeltaggers:假定一个词的词性只依赖于前一个词的词性(有限历史),而且,这个依赖性不随着时间而变化(时间不变)•如同大多数的概率模型,这两个Markov假设只是对于实际情况一个近似。例如,有限历史假设并不能覆盖长距离依存的问题。VMMTagger原理应用贝叶斯规则)|(maxarg,...,1,...,1,...,1nnwtPnt)()|(maxarg)()()|(maxarg,1,1,1,1,1,1,1,1,1nnntnnnnttPtwPwPtPtwPnnVMMTagger原理nininnntwPtPtwP1,1,1,1,1)|()()|()|(...)|()|(122,111,1ttPttPttPnnnnniiitwP1)|()|(...)|()|(12211ttPttPttPnnnn词的相互独立性一个词的词形只依赖于它自身的词性有限历史niiiiittPtwP11)]|()|([VMMTagger原理•最终,计算一个句子的最优标注序列的公式是:niiiiinntnttPtwPwtPtn11,1,1,1)|()|()|(maxarg,1训练一个VMMtagger•有一个大的带标训练集最大似然估计)(),()|(,,)(),()|(,,jkljlljjkjjkkjtCtwCtwPwordwtagttCttCttPtagttagtC(?)是出现次数平滑•为什么需要平滑呢?数据稀疏!1.收集更多的数据从实用角度这并不是一个通用的解决方法,在训练文本中总会遗漏一些情况。2.平滑估计在训练文本中没有出现情况的出现概率。降低已出现情况的概率,这样留下一些概率“分给”没有出现的情况。平滑•因为一些冷僻词不会在训练语料中出现,所以平滑词生成概率比平滑转移概率更为的重要•加一(简单平滑)jjkljlKtCtwCtwP)(1),()|(高效的标注算法•为了计算下面的式子,是不是需要知道长度为n的句子中所有可能的标注序列t1,n呢?niiiiinntnttPtwPwtPtn11,1,1,1)|()|()|(maxarg,1这样算法的复杂度就是指数阶的。一个高效的算法就是ViterbialgorithmViterbiAlgorithm•动态规划•寻径算法ViterbiAlgorithmtjt1…(j)(j)oTo1otot-1ot+1ViterbiAlgorithm),,...,...(max)(1111...11ttttxxjojxooxxPtt一个状态序列,使得:观察到直到t-1时刻的各观察值,当前状态是状态j以及t时刻的观察值出现的概率最大。x1xt-1joTo1otot-1ot+1ViterbiAlgorithmjj)0(DP递归的开始x1xt-1joTo1otot-1ot+1ViterbiAlgorithm1)(max)1(tjoijiijbatt1)(maxarg)1(tjoijiijbatt下一状态概率x1xt-1xtxt+1jj)0(递归开始下一状态名oTo1otot-1ot+1ViterbiAlgorithm)(maxargˆTXiiT)1(ˆ1^tXtXt)(maxarg)ˆ(TXPii自后向前“读出”最可能的状态序列x1xt-1xtxt+1xTViterbialgorithm(aTrellisalgorithm)•模型μ=(A,B,)KkSjibBSjiaASikkKssSijkijiMN,,},{,},{},{},...,{},...,{11状态集输出初始状态概率状态转移概率符号发射概率Viterbialgorithm定义:)|,...,...(max)(1111...11jXooXXPttttXXjt1.初始化2.递推3.结束Njjj1,)1(NjbatttijoijiNij1,)(max)1(1NjbatttijoijiNij1,)(maxarg)1(1)1()1(maxarg111tXTXtXtiNiT注意•在训练时,我们能够观察到Markov模型的状态,但是在标注时我们只能观察到词。所以我们说在MMTagging时我们使用的实际上是一个混合的方法:•在训练时构造VMMs,但是在标注时把它们当作是HMMs。•但为什么不称它为HMMTagger呢?HMMtagger•标注过程和VMMtagger一样。•区别在于怎样训练这个模型。•如果我们没有足够的训练语料,我们可以使用HMM来学习标注序列(使用Forward-Backward算法)基于转换的错误驱动的词性标注方法•EricBrill(1992,1995)•Transformation-basederror-drivenpartofspeechtagging•基本思想:(1)正确结果是通过不断修正错误得到的(2)修正错误的过程是有迹可循的(3)让计算机学习修正错误的过程,这个过程可以用转换规则(transformation)形式记录下来,然后用学习得到转换规则进行词性标注•下载Brill’stagger:~brill/转换规则的形式•转换规则由两部分组成–改写规则(rewritingrule)–激活环境(triggeringenvironment)•一个例子:转换规则T1–改写规则:将一个词的词性从动词(v)改为名词(n);–激活环境:该词左边第一个紧邻词的词性是量词(q),第二个词的词性是数词(m)S0:他/r做/v了/u一/m个/q报告/v运用T1S1:他/r做/v了/u一/m个/q报告/n转换规则的模板(template)•改写规则:将词性标记x改写为y•激活环境:(1)当前词的前(后)面一个词的词性标记是z;(2)当前词的前(后)面第二个词的词性标记是z;(3)当前词的前(后)面两个词中有一个词的词性标记是z;……其中x,y,z是任意的词性标记代码。根据模板可能学到的转换规则•T1:当前词的前一个词的词性标记是量词(q)时,将当前词的词性标记由动词(v)改为名词(n);•T2:当前词的后一个词的词性标记是动词(v)时,将当前词的词性标记由动词(v)改为名词(n);•T3:当前词的后一个词的词性标记是形容词(a)时,将当前词的词性标记由动词(v)改为名词(n);•T4:当前词的前面两个词中有一个词的词性标记是名词(n)时,将当前词的词性标记由形容词(v)改为数词(m);……转换规则的学习流程•C0表示带有正确标注的语料库•C0_raw表示C0拿掉正确标注后的生语料库转换规则学习器算法描述1)首先用初始标注器对C0_raw进行标注,得到带有词性标记的语料Ci(i=1);2)将Ci跟正确的语料标注结果C0比较,可以得到Ci中总的词性标注错误数;3)依次从候选规则中取出一条规则Tm(m=1,2,…),每用一条规则对Ci中的词性标注结果进行一次修改,就会得到一个新版本的语料库,不妨记做(m=1,2,3,…),将每个跟C0比较,可计算出每个中的词性标注错误数。假定其中错误数最少的那个是(可预期中的错误数一定少于Ci中的错误数),产生它的规则Tj就是这次学习得到的转换规则;此时成为新的待修改语料库,即Ci=。4)重复第3步的操作,得到一系列的标注语料库,…后一个语料库中的标注错误数都少于前一个中的错误数,每一次都学习到一条令错误数降低最多的转换规则。直至运用所有规则后,都不能降低错误数,学习过程结束。这时得到一个有序的转换规则集合{Ta,Tb,Tc,…}转换规则学习示例参考文献黄昌宁,《中文信息处理中的分词问题》语言文字应用,1997(1)揭春雨等,《汉语自动分词实用系统CASS的设计和实现》中文信息学报,1990(4)张国煊等,《快速书面汉语自动分词系统及算法设计》计算机研究与发展,1993(1)何克抗等,《书面汉语自动分词专家系统设计原理》中文信息学报,1991(2)徐辉等,《
本文标题:自然语言理解-词性标注
链接地址:https://www.777doc.com/doc-3184202 .html