利用事先制定好的规则对具备多个词性的词进行消歧,最后保留一个正确的词性。算法
①对词性歧义创建单独的标注规则库数据结构
②标注时,查词典,若是某个词具备多个词性,则查找规则库,对具备相同模式的歧义进行排歧,不然保留。ide
③程序和规则库是独立的两部分。spa
TAGGIT系统blog
先对部分进行手工标注,而后对新的语料使用统计方法进行自动标注。it
一个句子s = w1w2……wn的信息量量能够用熵来表示:H = - ∑p(w1,w2,…,wn) log p(w1,w2,…,wn),几率p(s)的大小反映了这个词串在该语言中的使用状况。class
①一元语法,wi的出现独立于历史效率
p(w1,w2,…,wn) = p(w1)*p(w2)*p(w3)…p(wn)原理
②二元语法,wi的出现决定于wi-1遍历
p(w1,w2,…,wn) = p(w1)*p(w2|w1)*p(w3|w2)…p(wn|wn-1)
③三元语法,wi的出现决定于wi-1,wi-2
p(w1,w2,…,wn) =p(w1)*p(w2|w1)*p(w3|w2,w1)…p(wn|wn-1,wn-2)
①另W=w1w2….wn是由n个词组成的词串,T=t1t2…tn是词串W对应的标注串,其中tk是wk的词性标注。
②根据HMM模型,计算使得条件几率p(T|W)值最大的那个T’= argmaxp(T|W)
③根据贝叶斯公式:p(T|W) = P(T)*P(W|T)/P(W)。因为词串不变,p(W)不影响总的几率值,所以继续简化为:
p(T|W) = P(T)*P(W|T),其中p(T) = p(t1|t0)*p(t2|t1,t0)…p(ti|ti-1),
根据一阶HMM独立性假设,可得:p(T) = p(t1|t0)*p(t2|t1)…p(ti|ti-1),
即P(ti|ti-1) = 训练语料中ti出如今ti-1以后的次数/训练语料中ti-1出现的总次数。
③根据贝叶斯公式:p(W|T) = p(w1|t1)*p(w2|t2,t1)…p(wi|ti,ti-1,…,t1)。根据一阶HMM独立性假设,可得p(W|T) = p(w1|t1)*p(w2|t2)…p(wi|ti)。因此
将已标注好词性的训练语料集整理出:①每一个词在不一样词性下出现的次数;②每一个词性在语料集中出现的总次数。
早在60年代,国外学者就开始研究英语文本的自动词类标注问题,提出了一些消除兼类词歧义的方法,创建了一些自动词性标注系统。1983年,里奇(G. Leech)和加塞德(R. Garside)等人创建了CLAWS系统,用几率统计的方法来进行自动词性标注,他们使用了133×133的词类共现几率矩阵,经过统计模型来消除兼类词歧义,自动标注的正确率达到了96%.
先从待标注的LOB语料库中选出来部分语料,叫作“训练集”(Training Set), 对训练集中的语料逐词进行词性的人工标注, 而后利用计算机对训练集中的任意两个相邻标记的同现几率进行统计,造成一个相邻标记的同现几率矩阵。
进行自动标注时,系统从输入文本中顺序地截取一个有限长度的词串,这个词串的首词和尾词的词性应该是惟一的,这样的词串叫作跨段(span),记为W0,W1,W2,…,Wn,Wn+1。其中, W0和Wn+1 都是非兼类词, W1,W2,…,Wn 是n个兼类词。
利用同现几率矩阵提供的数据来计算这个跨段中由各个单词产生的每一个可能标记的几率积,并选择几率积最大的标记串做为选择路径(path),以这个路径做为最佳结果输出。
①一个句子首先用全分割法或Viterbi算法分割成N个词;
②这N个词,首先查词典,标上全部可能的词类;
③N个相邻的词每一种词类的排列叫作一条路径;
④求出具备最大似然估计值的那条路径,即最佳路径;
⑤最佳路径上所对应的标注为这N个词的标注。
句子:一把青菜
①用全分割法或Viterbi法将句子分割成: 一,把,青菜
②找出每一个词包含的词性:一/s 把/n/v/l 青菜/n
③计算每一条路径的几率:
P(s,n,n|一,把,青菜) =P(一|s)* P(把|n)*P(青菜|n)
P(s,v,n|一,把,青菜) =P(一|s)* P(把|v)*P(青菜|n)
P(s,l,n|一,把,青菜) =P(一|s)* P(把|l)*P(青菜|n)
其中:
④取几率最大的那条路径为结果。
经过统计模型来消除兼类词歧义,自动标注的正确率达到了96%.
须要复杂的数据结构来存储路径,保存几率结果,空间复杂度和时间复杂度都很是高,路径数是一个句子中的全部词包含的词性个数相乘的结果。
1988年,德洛斯(S. J. DeRose)对CLAWS系统做了一些改进,利用线性规划的方法来下降系统的复杂性,提出了VOLSUNGA算法,大大地提升了处理效率,使自动词性标注的正确率达到了实用的水平。
VOLSUNGA算法从左到右,对于当前考虑的词,只保留通往该词的每一个词类的最佳路径,而后继续将这些路径与下个词的全部词类标记进行匹配,分别找出通往这个词的每一个标记的最佳路径,后面的词依次重复。本质上至关于贪心算法中的单源最短路径Dijkstra算法。
①一个句子首先用全分割法或Viterbi算法分割成N个词
②这N个词,首先查词典,标上全部可能的词类
③N个相邻的词中每一种词类的排列叫作一条路径
④遍历全部词,每一个词都计算各个词性下的一阶HMM值,取值最大的为最终词性,保存该词性和几率,舍弃其余词性。
①对CLAWS算法的改进主要有两个方面:
(a)在最佳路径的选择方面,不是最后才来计算几率积最大的标记串,而是沿着从左至右的方向,采用“步步为营”的策略,对于当前考虑的词,只保留通往该词的最佳路径,舍弃其余路径,而后再从这个词出发,将这个路径同下一个词的全部标记进行匹配,继续找出最佳的路径,舍弃其余路径,这样一步一步地前进,直到整个跨段走完,得出整个跨段的最佳路径做为结果输出。
(b)根据语料库统计出每一个词的相对标注几率(Relative Tag Probability),并用这种相对标注几率来辅助最佳路径的选择。
②VOLSUNGA算法大大地下降了CLAWS算法的时间复杂度和空间复杂度,提升了自动词性标注的准确率。
CLAWS算法和VOLSUNGA算法都是基于统计的自动标注方法,仅仅根据同现几率来标注词性。可是,同现几率仅只是最大的可能而不是惟一的可能,以同现几率来断定兼类词,是以舍弃同现几率低的可能性前提的。
为了提升自动词性标注的正确率,还必须辅之以基于规则的方法,根据语言规则来断定兼类词。