隐马尔可夫模型及其在词性标注中的应用

隐马尔可夫模型及其在词性标注中的应用

 

  隐马尔可夫模型,Hidden Markov model (HMM),被认为是解决大多数自然语言处理问题最快速、有效的方法,成功解决了复杂的语音识别、机器翻译等问题。

隐马尔可夫模型简介(HMM) :

  马尔可夫模型最早由Andrei A.Markov于1913年提出,当时他希望:Use frequency counts from the text to help compute the probability that the next letter in sequence would be a vowel? (使用基于频数的方法计算文本序列中下一个字母为元音字母的概率)。后来马尔科夫模型发展成为了一个通用的统计工具。

  有别于HMM,一般马尔可夫模型称为显马尔可夫模型 (Visible Markov Model, VMM)。

  HMM则是由美国数学家鲍姆Baum等人在20世纪60年代到70年代发表的一系列论文中提出的,隐含马尔可夫模型的训练方法也是以他的名字命名的,即鲍姆-韦尔奇算法。20世纪70年代被应用在语音处理上,后被广泛应用在汉语自动分词、词性标注、统计机器翻译等方面。

马尔可夫模型:

  开始了解隐马尔可夫模型之前,我们不妨先看看什么是马尔可夫模型。

  马尔可夫模型描述了一类重要的随机过程,这个随机过程是随时间而随机变化的过程。例如,我们常会考虑一个由并不互相独立的随机变量组成的序列,序列中每个变量的值依赖于它前面的元素(一个句子即是由并不互相独立的词语组成的,每一个词语的出现都和前面的词语有关系。)

  假设某系统有N个有限状态S={s1,s2,…,sN} ,随着时间的推移,系统将从某一个状态转移到另一个状态。

  X={x1,x2,…,xT} 是一个取值于有限状态集合S的随机变量序列,随机变量的取值为状态集S的某个状态,假定在时间t的状态记为xt (xt ∈S,t=1,2,…,T)。

  系统在时间t处于状态sj的概率取决于它在时间 1,2,3,…,t-1的状态,其概率为: P(xt =sj |xt-1 =si , xt-2 =sk,…)。

  在特定条件下,系统在时间t的状态只与其在时间t-1的状态相关,则: P(xt =sj |xt-1 =si , xt-2 =sk,…) ≈ P(xt =sj |xt-1 =si ),该随机过程称为一阶马尔可夫过程。(即在做自然语言处理时,我们认为一个词语的出现只与其前面一个词语有关,不考虑其他的词语,这样做的目的是减少计算的复杂度)。

 

  一个马尔可夫模型通常有以下部分组成:

  1:若干个状态。

  2:转移概率矩阵。转移概率矩阵描述了系统从一个状态转移到另一状态的概率值。

  3:初始概率。初始概率是系统在初始时间处于某一状态的概率。

  转移概率矩阵A可以描述一阶马尔可夫过程,转移矩阵A的每个元素aij为: 

  

  即aij的值为:系统在时间t-1到时间t,从状态si转到状态sj的概率。我们以下图为例:

  

  假定每一个词有三种词性:{v,n,p},从上图的转移矩阵可以知道,当前一个词word(t-1)的词性为p时,后一个词word(t)的词性为v的概率为0.9。

  我们看一个例子,加深一下理解:

  例:假定有一阶马尔可夫模型M,转移矩阵如上图,初始概率如下,计算语料中句子词性顺序为 n-v-p-n 的概率:

  P(n,v,p.n|M)=P(n|start)*P(v|n)*P(p|v)*P(n|p)=1*0.8*0.1*0.05=0.004

 

隐马尔可夫模型 HMM

   在马尔可夫模型中,每个状态代表了一个可观察到的事件。如果知道某个事件的观察序列,是可以使用一个马尔可夫模型来计算的。但是,有时候有些事件是不可以直接观测到的,例如:

  字串(可观察序列):“结合/成/分子/时”

  字的词性(隐序列):vn,v/ v,nr,q,a,an,j/ n/ Ng,nr,Dg/

  在词性标注的工作中,给定的字符串就是一个可观测序列,但是,字符串中每个词语的词性我们现在是不知道的,对于我们来说就是一个不可观测的隐序列。HMM就是估算隐藏于表面事件背后的事件的概率

 

  HMM是一个五元组(O,Q,O0,A,B)

  O:{o1….ot }是状态集合, 也称为观测序列

  Q:{q1…qv}是一组输出结果,也称隐序列

  A:与马尔可夫模型一样,是转移概率矩阵,其中aij=P(qj |qi )(注意是隐序列中状态间的转移概率)

  B:发射概率矩阵,bij=P(oj |qi )(从隐序列到观测序列的概率)

  O0是初始状态,有些还有终止状态

 

  隐马尔可夫模型 HMM的三个基本问题:

  1. 给定一个隐马尔可夫模型M=(A,B),如何有效计算某个观测序列O出现的概率,即计算P(O|M) (A表示 转移概率,B表示发射概率)

  2. 给定一个观测序列O和一个HMM模型M,寻找最好的隐序列Q以便最好的解释观测值 (解码)

  3. 依据给定的观测序列O以及HMM模型中的状态集合,学习最佳HMM参数模型A和B(学习)

  隐马尔可夫模型用在词性标注的工作中时,主要是涉及到第2个问题,即 给定一个观测序列O和一个HMM模型M,寻找最好的隐序列Q以便最好的解释观测值  ,该观测序列就是给定的字符串,而要寻找的最好的隐序列就是字符串的词性序列。

 

问题2:解码---viterbi算法

  给定一个观测序列O和一个HMM模型M(A,B), 寻找最好的隐序列Q (解码),例如下面字符串。

  O: 结合 成 分子 时 

  Q: vn,v /v,nr,q,a,an,j/ n /Ng,nr,Dg

  “结合”有2个词性:vn和v

  “成”有6个词性:v,nr,q,a,an,j

  “分子”有1个词性:n

  “时”有3个词性:Ng,nr,Dg

  所以,“结合成分子时”这一个观测序列有2*6*1*3=36个隐序列。

  第一个可能的词性序列为:vn,v,n,Ng。即P(结合,成,分子,时,vn,v,n,Ng)=p(结合|vn)×p(成|v)×p(分子|n)×p(时|Ng)×p(vn|start)×p(v|vn)×p(n|v)×p(Ng|n) 。

  首先,如何求最优的隐序列呢?我们可以用最暴力的方法,穷举搜索算法:可以通过穷举的方式列出所有的隐含状态序列,并算出每一种隐状态序列组合对应的观察状态序列的概率。 概率最大的那个组合对应的就是最可能的隐状态序列组合。

  如果直接使用上述的穷举法去寻找最优的概率,毋庸置疑该算法的复杂度是相当复杂的,例如上述例子仅有4个词却总共有36种情况需要考虑,也就是说我们需要分别计算36种情况的概率,然后取最大值作为我们的预测结果。那么我们有没有什么可以简化的方法吗?

  因此在算法优化上,我们可以引用维特比算法(Veterbi)。维特比算法是现代数字通信中使用最频繁的算法,同时也是很多自然语言处理的解码算法。

  算法描述:依据最后一个时刻中概率最高的状态,逆向通过找其路径中的上一个最大部分最优路径,从而找到整个最优路径。

  

  vt(j)是所有序列中在t时刻以状态j终止的最大概率,所对应的路径为部分最优路径。

转载于:https://www.cnblogs.com/liuyongdun/p/8910673.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值