大数据搜索引擎原理分析
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

3.3 词性标注

词性标注是自然语言处理中同分词技术一样重要的技术。它用于给分词结果中所有的词标注其词性特征,这些词性包括名词、动词、副词等。对中文语句进行词性标注相对比较简单,因为中文的大多数词语只有一个词性,尤其是专业词汇。笔者曾经做了一个实验,通过给分词结果中的所有词语赋予最常用的词性,能达到75%的准确率。但是为了达到更加精准的词性标注结果,可以采用基于统计学习的方法进行词性标注,常用的方法如隐马尔科夫模型等。

3.3.1 隐马尔科夫模型概要

隐马尔科夫模型是一种概率有向图模型,它主要包含隐藏状态、可观察对象序列、初始状态概率矩阵、隐藏状态转移概率矩阵和观测状态转移概率矩阵5个描述参数。

(1)隐藏状态S。表示无法通过直接观察得到的状态信息。

(2)可观察对象序列O。表示通过直接观察可以得到的序列信息。

(3)初始状态概率矩阵π。表示隐藏状态在开始及结束时的状态概率。

(4)隐藏状态转移概率矩阵A。表示隐藏状态相互之间的转移概率。

(5)观测状态转移概率矩阵B。可观察对象序列都拥有对应的隐藏状态,这种对应关系可以通过概率的方式来体现。

一般可以采用λ=(A, B, π)三元组来表示隐马尔科夫模型,因此,隐马尔科夫模型实质上是标准马尔科夫模型的扩展形式,不同之处在于新增了可观察对象序列和可观察对象序列与隐藏状态之间的概率集合。如图3-5所示,S1S2S3表示隐藏状态,O1、O2O3表示可观察对象序列、A12A23表示隐藏状态之间的转移概率,B1B2B3表示从可观察对象序列到隐藏状态的转移概率。

图3-5 隐马尔科夫模型的概念示意图

隐马尔科夫模型是一种统计模型,它被用于分析一个含有隐含未知参数的马尔科夫过程。而马尔科夫过程是一类随机过程,表示在目前已知状态的条件下,它未来的改变不依赖它以往的改变。隐马尔科夫模型在解决问题时,主要分为评估、解码和学习三步。

(1)评估。给定一个隐马尔科夫模型,求其一个可观察对象序列的概率。已知模型参数λ=(A, B, π),求解某一可观察对象序列O={O1, O2, O3, …, On}的概率。一般采用前向算法解决。

(2)解码。给定一个可观察对象序列,求其最大可能的隐藏状态序列。已知模型参数λ=(A, B, π),求解某一可观察对象序列O={O1, O2, O3, …, On}的隐藏状态S的序列。一般采用Viterbi算法解决。

(3)学习。根据可观察对象序列生成隐马尔科夫模型。给定一个可观察对象序列O={O1, O2, O3, …, On},寻找隐马尔科夫模型参数λ=(A, B, π),使得可观察对象序列O的概率最大。一般采用前向后向算法解决。

3.3.2 隐马尔科夫模型与词性标注

中文词性标注属于解码问题,因此,只需对隐马尔科夫模型进行参数训练,然后通过维特比算法计算出最可能的隐藏状态序列即可。

词性标注的语料库如下所示,隐马尔科夫模型的5个参数均可从下面的示例中提取。

2005年5月1日\t谢亚冰\nr担任\v陪审员\nnt 9年\t期间\f为了\p充实\v自己\rr法律\n知识\n谢亚冰\nr完成\v中央电大\nis法律\n专业\n自学\vn

将中文词性标注与隐马尔科夫模型的参数结合,得出隐马尔科夫模型的5个参数在中文词性标注中的含义,如表3-6所示。

表3-6 隐马尔科夫模型的5个参数在中文词性标注中的含义

上面5个参数在中文词性标注中的含义均可基于语料库统计分析得出。

在基于隐马尔科夫模型的词性分析中,隐藏状态S即词的词性状态集合。词性状态比中文分词中的状态包含的内容更多。中文分词仅包含词头、词中、词尾和单字成词,而词性状态则包括名词、动词、形容词、副词等。

(1)名词(n)。名词是一个比较广泛的词性,可细分为如表3-7所示的更多状态。例如,句子“谢亚冰\nr担任\v陪审员\nnt”中的词语“谢亚冰”对应的词性状态为汉语名字。

表3-7 名词细分状态

(2)时间词(t),时间词性语素(tg)。

(3)处所词(s),方位词(f)。

(4)动词(v)。动词也是较大的词性类型,其中包括副动词、趋向动词、名动词等。动词细分状态如表3-8所示。

表3-8 动词细分状态

(5)形容词(a)。包含副形容词(ad)、名形词(an)、形容词性语素(ag)和形容词性惯用语(al)。

(6)区别词(b),区别词性惯用语(bl)。

(7)状态词(z)。

(8)代词(r)。代词细分状态如表3-9所示。例如,句子“充实\v自己\rr法律\n知识\n”中的词语“自己”对应的词性状态为人称代词。

表3-9 代词细分状态

(9)数词(m),数量词(mq)。

(10)量词(q),动量词(qv),时量词(qt),副词(d)。

(11)介词(p),介词“把”(pba),介词“被”(pbei)。

(12)连词(c),并列连词(cc)。

(13)助词(u)。助词细分状态如表3-10所示。

表3-10 助词细分状态

(14)叹词(e)。

(15)语气词(y)。

(16)拟声词(o)。

(17)前缀(h)。

(18)后缀(k)。

(19)字符串(x)。

(20)非语素词(xx)。

(21)网址URL(xu)。

(22)标点符号(w)。标点符号细分状态如表3-11所示。

表3-11 标点符号细分状态

隐马尔科夫模型解决词性分析问题,实质上是对每个词隐藏的词性求最大联合概率密度问题。例如,给定句子“对口资源优先合理安排”,通过分词得到结果“对口资源优先合理安排”,隐马尔科夫模型就是对句子中的每个词对应的词性求解最大联合概率密度。如图3-6所示,词语“对口”包含词性“vd”“vn”“v”,词语“资源”包含词性“n”,每个词语的词性之间产生有向依赖关系,形成一个概率有向图模型。

图3-6 隐马尔科夫模型解决词性分析问题的概率有向图模型

图3-6所示的概率有向图模型的边即隐马尔科夫模型的隐藏状态转移概率,是整个隐藏状态转移概率矩阵中的一部分。如表3-12所示为隐藏状态转移概率矩阵(局部)。

表3-12 隐藏状态转移概率矩阵(局部)

将概率有向图与隐藏状态转移概率矩阵结合后形成的转移概率示例如图3-7所示。

图3-7 词性之间的转移概率示例

除此之外,还需要可观察对象序列的转移概率矩阵。如表3-13所示为从可观察对象序列到词性的概率矩阵,对应图3-7中每个节点出现的概率。

表3-13 从可观察对象序列到词性的概率矩阵

为了更好地表达图结构,引入虚拟节点“开始”和“结束”,作为概率有向图的首和尾,并将可观察对象序列的状态转移矩阵与初始概率矩阵结合。虚拟节点“开始”与图的关系则与词性的初始概率矩阵有关,以“开始”作为图的出发点,指向词语“对口”拥有的词性。词性的初始概率矩阵如表3-14所示。

表3-14 词性的初始概率矩阵

结合词性的初始状态概率及可观察对象序列的转移概率矩阵,得到图3-8所示的完整的隐马尔科夫模型的词性分析模型。

图3-8 构建完整的隐马尔科夫模型的词性分析模型

对图3-8进行求解,其本质是选择图的一条最佳路径,依然可以通过维特比算法实现。维特比算法擅长在一个有向图模型中寻找到一条最佳路径,而这条路径覆盖的状态则为每个词语的隐藏状态,在词性分析中,这个隐藏状态即词性。同样对词性分析模型建立概率矩阵,如表3-15所示。

表3-15 对词性分析模型建立的概率矩阵

设定矩阵中的每个值为S, S[对口][n]表示词语“对口”在这个条件下是词性“n”的可能性。S[对口][n]的值等于词性“n”作为“开始”的初始化概率与“对口”的词性为“n”的乘积。即

S[对口][n]=0.30×0=0

从词性分析模型中分析即指向该节点的边与节点概率的乘积。因此,同理依次计算S[对口][vd]、S[对口][vn]、S[对口][v]、S[对口][a],得到的结果如表3-16所示。

表3-16 利用维特比算法求解词语“对口”与词性概率

不同点在于,在计算词语“资源”时,需要考虑从上一个词语的词性到词语“资源”当前词性的转移概率。

例如,针对S[资源][n]的计算如下所示:

S[资源][n]=max(P[n][n]× S[对口][n], P[vd][n]× S[对口][vd], P[vn][n]× S[对口][vn], P[v][n]×S[对口][v], P[a][n]×S[对口][a])+P[资源][n]

根据上述过程依次类推,最终完整的结果如表3-17所示。值得注意的是,需要将求得最大值的上一个词性记录下来。

表3-17 利用维特比算法求解词语词性的最终概率矩阵

根据表3-17,首先找到最后一个词语对应的最大可能的词性;其次根据路径回溯,分别找出每个词语的对应词性;最后将词语与词性状态综合。因此,对于句子“对口资源优先合理安排”,词性标注结果为“对口\v资源\n优先\v合理\a安排\v”。

同中文分词相比,词性状态相对较多,但是通过维特比算法,依然可以计算各个词语隐藏的词性状态,最终完成词性标注。