自然语言处理(1)-HMM隐马尔科夫模型基础概念(一)
隐马尔科夫模型HMM
序言
文本序列标注是自然语言处理中非常重要的一环,我先接触到的是CRF(条件随机场模型)用于解决相关问题,因此希望能够对CRF有一个全面的理解,但是由于在学习过程中发现一个算法像jar包依赖一样依赖于各种算法,就像提到CRF模型,那么肯定不得不提一下HMM等模型,如果不能很好的理解这些算法,那么其实也不算完全搞明白!因此我会在算法的介绍中对涉及到的算法知识尽我所能尽量详细和朴实的说明。
网上也有很多算法说明,但是感觉对一些向我一样刚入门的小白用户很不友好,大堆的数据公式,甚至有个公式符号都没有说明,让人看了真是一头雾水~因此在翻阅了大量的资料后,决定整合我学到的内容,详细介绍下HMM模型。
1)HMM模型是什么
隐马尔科夫模型(Hidden Markov Model,以下简称HMM)是比较经典的机器学习模型了,它在语言识别,自然语言处理,模式识别等领域得到广泛的应用。
我们使用HMM模型用于解决什么问题呢?问题一般具有两种特征:
- 我们要处理的问题是有序的,比如时间序列或者状态序列;
- 数据是包含两种类型的,一类数据是观测数据,是我们可以看到的,另一类是隐藏数据,属于隐含状态,也就是状态序列。
OK,我们来举个例子。假设我们根据天气情况来决定我们当天的活动内容,天气情况有两种:晴天和雨天,活动有三种:逛街、打游戏和看电影。那么我们翻阅小明过去几天的日志记录,日志记录了他进行了打游戏和看电影。这里小明的活动就是观测数据,是我们可以看到的内容,而天气情况就是隐含状态,而我们要根据活动情况来推测当天的天气,这就是一个普通的HMM模型需要解答的问题。
2)HMM的模型定义
我们采用更加标准数学符号概念来描述HMM模型的表示。从上面例子中我们看到HMM问题中包含两类数据,观测数据和隐含状态。因此假设Q是所有隐含状态的集合,V是所有观测数据的集合,即:
$$Q=q_{1},q_{2},q_{3},...q_{n}; V=v_{1},v_{2},v_{3},...v_{m}$$
这里表示隐含状态有n种,观测种类有m种。
之前提到了有观测序列和隐含序列两个序列,设序列长度为T,I表示隐含序列,O表示观测序列,即:
$$I=i_{1},i_{2},i_{3},...i_{T}; O=o_{1},o_{2},o_{3},...o_{T}$$
其中,每个隐含序列种的元素都在Q中,每个观测序列中的元素都在V中,即:$i_{T}\in Q,o_{T}\in V$
3)HMM模型的3个要素
齐次马尔科夫链假设。即任意时刻的隐藏状态只依赖于它前一个隐藏状态,在文本中也就是bigram。采用这种假设是因为模型简单,便于求解。在某时刻t隐含状态为$q_{i}$,则在t+1时刻状态变为$q_{j}$,当然从一个隐含状态转变为另一个隐含状态是一个0~1的概率发生事件,按天气的例子也就是从晴天转变为雨天的概率,这种从t时刻到t+1时刻的隐含状态$q_{i}->q_{j}$转变概率$a_{ij}$可以表示为:$a_{ij}=P(i_{t+1}=q_{j}|i_{t}=q_{i})$
组成的隐含状态转移概率矩阵A为:$A=\begin{bmatrix}a_{ij}\end{bmatrix}_{N\times N}$
观测独立性假设。也就是每个观测状态都只跟当前时刻的隐含状态有关,这也是为了使模型尽可能简单。如果t时刻的隐含状态$i_{t}=q_{i}$,观测状态$o_{t}=v_{i}$,则我们称当前隐含状态下产生观测状态的概率$b_{i}(k)$可以表示为:$b_{i}(k)=P(o_{t}=v_{i}|i_{t}=q_{i})$
构成的观测状态发射概率矩阵B为:$B=\begin{bmatrix}b_{i}(k)\end{bmatrix}_{N\times M}$
除了以上两种假设外,我们还需要一个初始隐含状态发生概率Π,对应集合Q的隐含状态数N个,$Π=\begin{bmatrix}\pi(i)\end{bmatrix}_{N}$,其中$\pi(i)=P(i_{t}=q_{i})$
根据上述两个假设和初始隐含状态发生概率,我们就得到了HMM模型的三个重要参数:A、B、Π,组成了HMM模型的3个要素:
$$\lambda =\begin{Bmatrix}\Pi ,A,B\end{Bmatrix}$$
有了这三个要素后,我们就可以来解决HMM模型的问题了。
4)HMM模型实例
上面的公式看起来比较抽象,我们用实际例子来举例说明下。有三个盒子,里面分别有红球和白球,如下表所示:
盒子X1 | 盒子X2 | 盒子X3 | |
红球 | 5 | 4 | 7 |
白球 | 5 | 6 | 3 |
盒子之间转变的概率如下表所示:
盒子X1 | 盒子X2 | 盒子X3 | |
盒子X1 | 0.2 | 0.3 | 0.5 |
盒子X2 | 0.4 | 0.4 | 0.2 |
盒子X3 | 0.3 | 0.3 | 0.4 |
假设盒子间的初始概率都相同,我们从这三个盒子中有放回地取三次球,分别得到红、白、红三种颜色的球,于是我们得到:
- 观测集合V={红球,白球},观测序列O={红,白,红};
- 隐含集合Q={盒子X1,盒子X2,盒子X3}
- 初始状态分布概率$$\Pi =\begin{Bmatrix}\frac{1}{3} & \frac{1}{3} & \frac{1}{3}\end{Bmatrix}^{T}$$
- 隐含状态转移概率矩阵$$A=\begin{bmatrix}0.2 & 0.3 & 0.5\\ 0.4 & 0.4 & 0.2\\ 0.3 & 0.3 & 0.4\end{bmatrix}$$
- 观测状态概率矩阵$$B=\begin{bmatrix}0.5 & 0.5\\ 0.4 & 0.6\\ 0.7 & 0.3\end{bmatrix}$$
以上的例子请仔细查看了解,在后面的例子中会根据该例子进行计算实例。
5)HMM模型的三个基本问题
HMM模型有三个经典问题需要解决:
- 求解观测序列的概率。给定模型$\lambda =\begin{Bmatrix}\Pi ,A,B\end{Bmatrix}$和观测序列$O=o_{1},o_{2},o_{3},...o_{T}$,计算在模型λ下观测序列O出现的概率P(O|λ)。
- 模型参数学习问题。给定观测序列$O=o_{1},o_{2},o_{3},...o_{T}$,我们需要去学习模型的3个要素$\lambda =\begin{Bmatrix}\Pi ,A,B\end{Bmatrix}$,使该模型下观测序列的条件概率P(O|λ)最大。
- 预测(解码)问题。给定模型$\lambda =\begin{Bmatrix}\Pi ,A,B\end{Bmatrix}$和观测序列$O=o_{1},o_{2},o_{3},...o_{T}$,求给定观测序列条件下,最可能出现的对应的状态序列。
自然语言处理(1)-HMM隐马尔科夫模型基础概念(一)的更多相关文章
- HMM隐马尔科夫模型
这是一个非常重要的模型,凡是学统计学.机器学习.数据挖掘的人都应该彻底搞懂. python包: hmmlearn 0.2.0 https://github.com/hmmlearn/hmmlearn ...
- HMM 隐马尔科夫模型
参考如下博客: http://www.52nlp.cn/itenyh%E7%89%88-%E7%94%A8hmm%E5%81%9A%E4%B8%AD%E6%96%87%E5%88%86%E8%AF%8 ...
- 自然语言处理---用隐马尔科夫模型(HMM)实现词性标注---1998年1月份人民日报语料---learn---test---evaluation---Demo---java实现
先放上一张Demo的测试图 测试的句子及每个分词的词性标注为: 目前/t 这/rzv 条/q 高速公路/n 之间/f 的/ude1 路段/n 已/d 紧急/a 封闭/v ./w 需要基础知识 HM ...
- Atitit 马尔可夫过程(Markov process) hmm隐马尔科夫。 马尔可夫链,的原理attilax总结
Atitit 马尔可夫过程(Markov process) hmm隐马尔科夫. 马尔可夫链,的原理attilax总结 1. 马尔可夫过程1 1.1. 马尔科夫的应用 生成一篇"看起来像文章的 ...
- HMM 自学教程(四)隐马尔科夫模型
本系列文章摘自 52nlp(我爱自然语言处理: http://www.52nlp.cn/),原文链接在 HMM 学习最佳范例,这是针对 国外网站上一个 HMM 教程 的翻译,作者功底很深,翻译得很精彩 ...
- 隐马尔科夫模型HMM(一)HMM模型
隐马尔科夫模型HMM(一)HMM模型基础 隐马尔科夫模型HMM(二)前向后向算法评估观察序列概率 隐马尔科夫模型HMM(三)鲍姆-韦尔奇算法求解HMM参数(TODO) 隐马尔科夫模型HMM(四)维特比 ...
- 隐马尔科夫模型(HMM)与词性标注问题
一.马尔科夫过程: 在已知目前状态(现在)的条件下,它未来的演变(将来)不依赖于它以往的演变 (过去 ).例如森林中动物头数的变化构成——马尔可夫过程.在现实世界中,有很多过程都是马尔可夫过程,如液体 ...
- 隐马尔科夫模型HMM
崔晓源 翻译 我们通常都习惯寻找一个事物在一段时间里的变化规律.在很多领域我们都希望找到这个规律,比如计算机中的指令顺序,句子中的词顺序和语音中的词顺序等等.一个最适用的例子就是天气的预测. 首先,本 ...
- 隐马尔科夫模型 HMM(Hidden Markov Model)
本科阶段学了三四遍的HMM,机器学习课,自然语言处理课,中文信息处理课:如今学研究生的自然语言处理,又碰见了这个老熟人: 虽多次碰到,但总觉得一知半解,对其了解不够全面,借着这次的机会,我想要直接搞定 ...
随机推荐
- 十二、sed文本处理
一.概述 1.sed 是一款流编辑工具,用来对文本进行过滤与替换工作,特别是当你想要对几十个配置文件做统计修改时,你会感受到 sed 的魅力!sed 通过输入读取文件内容,但一次仅读取一行内容进行某些 ...
- Docker 代理脱坑指南
Docker 代理配置 由于公司 Lab 服务器无法正常访问公网,想要下载一些外部依赖包需要配置公司的内部代理.Docker 也是同理,想要访问公网需要配置一定的代理. Docker 代理分为两种,一 ...
- An internal error occurred during: "Launching New_configuration". Path for project must have only on
在Eclipse中按照如下操作 Project -> Properties -> Run/Debug Settings: 1. select "Launching New_con ...
- 免费丨十大IT热门学科在线直播体验课正式来袭,全免费!!!
一场突如其来的疫情阻挡了人与人之间的接触,在这一系列困难面前,无数勇敢的人们挺身而出,千里驰援,默默承担,用行动践行责任与信念,希望与祖国和家人一道共渡难关. 传智播客作为一家致力于“高精尖”IT科技 ...
- opencv简单实用(cv2)
一.介绍 安装:pip install opencv-python OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux.Windows.Android和Mac OS ...
- NIO学习笔记,从Linux IO演化模型到Netty—— 究竟如何理解同步、异步、阻塞、非阻塞
我的观点 首先,分开各自理解. 1. 同步:描述两个(或者多个)个体之间的协调关系. 比如,单线程中,methodA调用了methodB,methodB返回后,methodA才往下执行,那么称A同步调 ...
- 在线使用iconfont字体图标
登录https://www.iconfont.cn 把需要的图标加入购物车,然后加入项目 打开我的项目,生成代码 有3中方式使用图标 unicode和font class本质都是使用字体,好处在于兼容 ...
- 小浩算法|一文让你学会如何用代码判断"24"点
“24点”是一种数学游戏,正如象棋.围棋一样是一种人们喜闻乐见的娱乐活动.它始于何年何月已无从考究,但它以自己独具的数学魅力和丰富的内涵正逐渐被越来越多的人们所接受.今天就为大家分享一道关于“24点” ...
- Matplotlib绘制漫威英雄战力图,带你飞起来!
目录 前言 期望功能 代码实现 一.导入matplotlib依赖包 二.支持显示中文 三.使用ggplot主题 四.根据能力项等分圆 五.生成n个子图 六.获取支持的颜色 六.绘制所有子图 更多示例 ...
- vue垂死挣扎系列(一)——vue-cli快速搭建
项目安装(windows10安装环境+vue-cli 2.x) 安装node 在官网上下载稳定版本的node node.js官网 一路傻瓜安装 测试是否安装成功 cmd中node --version ...