隐含马尔可夫模型在语言处理中的应用

终于下定决心要了解一下马尔科夫链了。当然经典的那个tutorial必是参考文献,另外找了一个浙大教授写的PPT,很不错,用中文讲tutorial的东西理出来了。下面这篇文章写的也不错。

http://googlechinablog.com/2006/04/blog-post_17.html
转自上述地址的一篇文章
数学之美 系列三 -- 隐含马尔可夫模型在语言处理中的应用
2006年4月17日 上午 08:01:00

发表者:吴军,Google 研究员

前言:隐含马尔可夫模型是一个数学模型,到目前为之,它一直被认为是实现快速精确的语音识别系统的最成功的方法。复杂的语音识别问题通过隐含马尔可夫模型能非常简单地被表述、解决,让我不由由衷地感叹数学模型之妙。

自然语言是人类交流信息的工具。很多自然语言处理问题都可以等同于通信系统中的解码问题 -- 一个人根据接收到的信息,去猜测发话人要表达的意思。这其实就象通信中,我们根据接收端收到的信号去分析、理解、还原发送端传送过来的信息。以下该图就表示了一个典型的通信系统:

其中 s1,s2,s3...表示信息源发出的信号。o1, o2, o3 ... 是接受器接收到的信号。通信中的解码就是根据接收到的信号 o1, o2, o3 ...还原出发送的信号 s1,s2,s3...。

其实我们平时在说话时,脑子就是一个信息源。我们的喉咙(声带),空气,就是如电线和光缆般的信道。听众耳朵的就是接收端,而听到的声音就是传送过来的信号。根据声学信号来推测说话者的意思,就是语音识别。这样说来,如果接收端是一台计算机而不是人的话,那么计算机要做的就是语音的自动识别。同样,在计算机中,如果我们要根据接收到的英语信息,推测说话者的汉语意思,就是机器翻译; 如果我们要根据带有拼写错误的语句推测说话者想表达的正确意思,那就是自动纠错。

那么怎么根据接收到的信息来推测说话者想表达的意思呢?我们可以利用叫做“隐含马尔可夫模型”(Hidden Markov Model)来解决这些问题。以语音识别为例,当我们观测到语音信号 o1,o2,o3 时,我们要根据这组信号推测出发送的句子 s1,s2,s3。显然,我们应该在所有可能的句子中找最有可能性的一个。用数学语言来描述,就是在已知 o1,o2,o3,...的情况下,求使得条件概率
P (s1,s2,s3,...|o1,o2,o3....) 达到最大值的那个句子 s1,s2,s3,...

当然,上面的概率不容易直接求出,于是我们可以间接地计算它。利用贝叶斯公式并且省掉一个常数项,可以把上述公式等价变换成

P(o1,o2,o3,...|s1,s2,s3....) * P(s1,s2,s3,...)
其中
P(o1,o2,o3,...|s1,s2,s3....) 表示某句话 s1,s2,s3...被读成 o1,o2,o3,...的可能性, 而
P(s1,s2,s3,...) 表示字串 s1,s2,s3,...本身能够成为一个合乎情理的句子的可能性,所以这个公式的意义是用发送信号为 s1,s2,s3...这个数列的可能性乘以 s1,s2,s3...本身可以一个句子的可能性,得出概率。

(读者读到这里也许会问,你现在是不是把问题变得更复杂了,因为公式越写越长了。别着急,我们现在就来简化这个问题。)我们在这里做两个假设:

第一,s1,s2,s3,... 是一个马尔可夫链,也就是说,si 只由 si-1 决定 (详见系列一);
第二, 第 i 时刻的接收信号 oi 只由发送信号 si 决定(又称为独立输出假设, 即 P(o1,o2,o3,...|s1,s2,s3....) = P(o1|s1) * P(o2|s2)*P(o3|s3)...。
那么我们就可以很容易利用算法 Viterbi 找出上面式子的最大值,进而找出要识别的句子 s1,s2,s3,...。

满足上述两个假设的模型就叫隐含马尔可夫模型。我们之所以用“隐含”这个词,是因为状态 s1,s2,s3,...是无法直接观测到的。

隐含马尔可夫模型的应用远不只在语音识别中。在上面的公式中,如果我们把 s1,s2,s3,...当成中文,把 o1,o2,o3,...当成对应的英文,那么我们就能利用这个模型解决机器翻译问题; 如果我们把 o1,o2,o3,...当成扫描文字得到的图像特征,就能利用这个模型解决印刷体和手写体的识别。

P (o1,o2,o3,...|s1,s2,s3....) 根据应用的不同而又不同的名称,在语音识别中它被称为“声学模型” (Acoustic Model), 在机器翻译中是“翻译模型” (Translation Model) 而在拼写校正中是“纠错模型” (Correction Model)。 而P (s1,s2,s3,...) 就是我们在系列一中提到的语言模型。

在利用隐含马尔可夫模型解决语言处理问题前,先要进行模型的训练。 常用的训练方法由伯姆(Baum)在60年代提出的,并以他的名字命名。隐含马尔可夫模型在处理语言问题早期的成功应用是语音识别。七十年代,当时 IBM 的 Fred Jelinek (贾里尼克) 和卡内基·梅隆大学的 Jim and Janet Baker (贝克夫妇,李开复的师兄师姐) 分别独立地提出用隐含马尔可夫模型来识别语音,语音识别的错误率相比人工智能和模式匹配等方法降低了三倍 (从 30% 到 10%)。 八十年代李开复博士坚持采用隐含马尔可夫模型的框架, 成功地开发了世界上第一个大词汇量连续语音识别系统 Sphinx。

我最早接触到隐含马尔可夫模型是几乎二十年前的事。那时在《随机过程》(清华“著名”的一门课)里学到这个模型,但当时实在想不出它有什么实际用途。几年后,我在清华跟随王作英教授学习、研究语音识别时,他给了我几十篇文献。 我印象最深的就是贾里尼克和李开复的文章,它们的核心思想就是隐含马尔可夫模型。复杂的语音识别问题居然能如此简单地被表述、解决,我由衷地感叹数学模型之妙。

时间: 2024-10-11 12:28:17

隐含马尔可夫模型在语言处理中的应用的相关文章

数学之美札记:隐含马尔可夫模型

隐含马尔可夫模型是一个数学模型,它被认为是解决大多数自然语言处理问题最为快速.有效的方法.它成功的解决了复杂的语音识别.机器翻译等问题. 人类信息交流的发展贯穿了人类的进化和文明的全过程.而自然语言是人类交流信息的工具,语言和通信的联系是天然的.通信的本质就是一个编解码和传输的过程.当自然语言处理的问题回归到通信系统中的解码问题时,很多问题都迎刃而解了. 所谓语音识别,就是听话的人去猜测说话者要表达的意思.这就像通信中,根据接收端收到的信号去分析.理解.还原发送端传送过来的信息.我们平时在说话时

转:从头开始编写基于隐含马尔可夫模型HMM的中文分词器

http://blog.csdn.net/guixunlong/article/details/8925990 从头开始编写基于隐含马尔可夫模型HMM的中文分词器之一 - 资源篇 首先感谢52nlp的系列博文(http://www.52nlp.cn/),提供了自然语言处理的系列学习文章,让我学习到了如何实现一个基于隐含马尔可夫模型HMM的中文分词器. 在编写一个中文分词器前,第一步是需要找到一些基础的词典库等资源,用以训练模型参数,并进行后续的结果评测,这里直接转述52nlp介绍的"中文分词入门

隐马尔可夫模型和隐含马尔可夫模型的训练

概率论的发展从(相对静态的)随机变量到相对动态的随机过程应该是个很大的飞跃吧! 所谓随机过程,就是随着时间的变化状态转移的过程. 也就是说每一个时刻都对应着一个状态.(这个时刻的)状态到(下一个时刻的)状态的改变的过程,就是(随机)过程. 所谓随机是指,某一个时刻的状态是不能够确切的知道的(动态的,随机的)所以说是随机的. 马尔可夫链(马尔可夫)就是根据随机过程提出的一种假设 那么他是怎么假设的呢? 该过程中,在给定当前知识或信息的情况下,过去(即当前以前的历史状态)对于预测将来(即当前以后的未

马尔科夫及隐含马尔科夫模型

转自: http://zipperary.com/2013/10/15/an-introduction-to-hmm/ http://www.52nlp.cn/hmm%E7%9B%B8%E5%85%B3%E6%96%87%E7%AB%A0%E7%B4%A2%E5%BC%95 总结(Summary) 由一个向量和两个矩阵(pi,A,B) ( 隐藏状态初始概率分布.隐藏状态转移概率矩阵.隐藏-观察状态混淆矩阵 ) 描述的隐马尔科夫模型对于实际系统有着巨大的价值,虽然经常只是一种近似,但它们却是经得起

隐含马尔科夫模型

雅格布森通信六要素:发送者,信道,接受者,信息,上下文和编码. 马尔科夫假设:随机过程中各个状态的概率分布只与它的前一个状态有关.满足这个假设即为马尔科夫过程(马尔科夫链). 隐马尔可夫模型:任意时刻t的状态s是不可见的,但是其输出o是可见的,且o有且仅和s相关(独立输出假设). 训练算法:鲍姆-韦尔奇算法:解码算法:维特比算法. 原文地址:https://www.cnblogs.com/auhz/p/9614020.html

隐含马尔科夫模型的训练

在这里我们仍然使用非常简单的天气模型来做说明. 在这个马尔可夫模型中,存在三个状态,Sunny, Rainy, Cloudy,同时图片上标的是各个状态间的转移概率(如果不明白什么是转移概率,那建议先去学习什么是马尔可夫再来看HMM). 现在我们要说明什么是 HMM.既是隐形,说明这些状态是观测不到的,相应的,我们可以通过其他方式来『猜测』或是『推断』这些状态,这也是 HMM 需要解决的问题之一. 举个例子,我女朋友现在在北京工作,而我还在法国读书.每天下班之后,她会根据天气情况有相应的活动:或是

隐含马尔可夫模型HMM的中文分词器 入门-1

<pre name="code" class="sql">http://sighan.cs.uchicago.edu/bakeoff2005/ http://www.52nlp.cn/中文分词入门之资源 中文分词入门之资源 作为中文信息处理的"桥头堡",中文分词在国内的关注度似乎远远超过了自然语言处理的其他研究领域.在中文分词中,资源的重要性又不言而喻,最大匹配法等需要一个好的词表,而基于字标注的中文分词方法又需要人工加工好的分词语料

理解隐马尔可夫模型(转载)

设 s1,s2,s3...表示信息源发出的信号.o1, o2, o3 ... 是接受器接收到的信号.通信中的解码就是根据接收到的信号 o1, o2, o3 ...还原出发送的信号 s1,s2,s3....    那么怎么根据接收到的信息来推测说话者想表达的意思呢?我们可以利用叫做“隐含马尔可夫模型”(Hidden Markov Model)来解决这些问题.以语音识别为例,当我们观测到语音信号 o1,o2,o3 时,我们要根据       这组信号推测出发送的句子 s1,s2,s3.显然,我们应该

第五章:隐马尔可夫模型

隐马模型是一个不复杂但在NLP上最有效.快速的方法. 1.通信模型 自然语言和通信的联系是天然的,当自然语言处理问题回归到通信系统中的解码问题时,很多难题就迎刃而解了. 前面已经说了,我们把说话看作是一种编码方式,然后通过喉咙.空气传播,听到话的人的耳朵接收,再理解说的话,也就是语音识别.如果接收端是计算机,那么计算机完成的就是语音识别.我们要根据接收端的信号O1,O2,O3...来推测发送源的信号S1,S2.....我们只需从所有的源信息中找到最有可能的信号即可,也就是: 上式不易直接求出,我