首先感谢以下博主的分享,第一,二个链接是讲的HMM模型,第三个文章讲的是Viterbi算法

结巴分词3--基于汉字成词能力的HMM模型识别未登录词 - 老顽童2007 - 博客园​www.cnblogs.com

一文搞懂HMM(隐马尔可夫模型) - skyme - 博客园​www.cnblogs.com

https://blog.csdn.net/lilong117194/article/details/81008651​blog.csdn.net

其次讲解我个人的浅显理解, 通过质疑的方式理解这两者在分词上的应用。

(一) HMM模型是什么

(1) 首先给出HMM模型的参数:

HMM模型包括5个参数,分别为观察序列,状态序列,状态初始概率,状态转移概率,输出概率。

举个例子:(图来源博客园,作者cloudsky)

这里有3个骰子,一个6面体,一个4面体,一个8面体,随机拿骰子的概率是1/3。

假设随机拿取骰子3次,得到的序列是(2, 4, 6).

这里的观察序列就是(2, 4, 6),状态序列可能是(D6,D4,D8)。 状态初始概率是(1/3,1/3,1/3),

状态转移概率是一个矩阵,指的是从这个状态到下一个状态的概率,这里从6面体到6面体概率是1/3,从6面体到4面体概率是1/3,从6面体到8面体概率是1/3。那么就得到了3*3的矩阵。

输出概率是指如果已知这个状态,得到某一个特定值的概率。例如,我们知道第二次扔的是一个4面体,那么数字为4的概率是1/4, 即发射概率就为1/4。

(2) HMM模型的假设

  • 1.齐次马尔科夫性假设,即假设隐藏的马尔科夫链在任意时刻t的状态只依赖于其前一时刻的状态,与其它时刻的状态及观测无关,也与时刻t无关;
    P(状态[t] | 状态[t-1], 输出[t-1],...,状态[1], 输出 [1]) = P(状态[t] | 状态[t-1]) t = 1,2,...,T
  • 2.输出独立性假设,即假设任意时刻的输出只依赖于该时刻的马尔科夫链的状态,与其它输出和状态无关,
    P(输出[t] | 状态[T], 输出[T],...,状态[1], 输出 [1]) = P(输出 [t] | 状态[t]) t = 1,2,...,T
  • 3. 输出独立性假设 P(输出1,输出2,输出3 | 状态1,状态2,状态3)= P(输出1| 状态1) P(输出2 | 状态2)* P(输出3 | 状态3)

齐次马可夫性假设通俗的理解就是,假设我们已知前两次的状态是D4,D6, 那么第三次状态是D8的概率只与前一时刻D6有关,和D4没有关系的,即 P(D8 | D6, D4, 2, 4 )= P(D8 | D6).

输出独立性假设的理解即为,假设我们已知前两次的状态是D4,D6, P(2 | D6, D4, 2, 4 )=P(2| D4).

(3) HMM模型的数学理解

这里推导的很详细,就是在讲将已知观测序列的情况下,求解状态序列的概率转换为转移概率和输出概率的乘积,这里用到了HMM的假设和概率乘积P(ABC)=P(A) P(B |A) P(C |AB)。

举个小例子:给出状态序列={阴天,阳光明媚},观察序列={睡觉,逛街},天气预报说从阴天转换为阳光明媚的概率是0.2,从阴天转换为阴天的概率是0.8,从阳光明媚转换到阴天概率是0.5,从阳光明媚转换到阳光明媚概率是0.5,这样就得到了状态转移矩阵;阴天睡觉的概率是0.8,散步是概率是0.2,阳光明媚睡觉的概率是0.1,散步的概率是0.9,这样就得到了输出矩阵。

假如我们现在知道了两天的观察序列,转移矩阵和输出矩阵,我们要推算这两天的天气,就可以使用HMM模型啦~

(二) HMM模型,Viterbi算法如何应用到分词中

上面已经知道了HMM模型是什么,即它有三个假设,能够将一种问题转换为另外一种问题的求解(已知观察序列求解状态序列的问题转换为状态转移概率乘以输出概率的乘积)。这句话可真拗口。。。那么HMM模型是如何套到分词里面的呢?

给出序列标注的定义 (图片来源于博客老顽童2007)

简单的来讲,就是每个字在词组中的位置有4种,分别为首,中,尾,单。首指的是位于一个词的开头,例如北大中的北。中指的是中间的位置,例如北京大学中的京和大,尾就是末尾,例如学,单指的是一个字,例如我叫敏敏中的我。

那么假如我现在有一段话需要分词,即观察序列为=我叫敏敏呀,状态转移序列和输出序列是词库中已经知道的,那么我们如果知道了状态序列,就得到了分词结果。这里的状态序列组成的元素就是4-tag,也就是B, M, E, S. 所以这样HMM的模型就可以套用在分词里面了。

但是此时又涉及到一个问题,计算量大啊。。。比如语句:去北京大学玩,可以分词成 去/北京/大学/玩, 和 去/北京大学/玩, 这样是两种情况,穷举出来然后利用词库中概率的乘积得到最优值就可以,但是要分词一篇文章时候,计算量就上去了,所以要解决这个计算量的问题,用到了viterbi算法

所以综上,HMM模型用于套在语句中,得到状态序列,此时状态序列不一定是一个,在得到状态序列的基础上,Viterbi算法用于得到最优的状态序列。

欢迎大家指正,补充呀~

viterbi算法_HMM模型和Viterbi算法如何应用于分词相关推荐

  1. 基于Hmm模型和Viterbi算法的中文分词和词性标注

    使用 python 实现基于Hmm模型和Viterbi算法的中文分词及词性标注:使用 最大概率算法 进行优化.最终效果:人民日报语料:分词(F1:96.189%):词性标注(F1:97.934%) 完 ...

  2. 机器学习(八)——在线学习、K-Means算法、混合高斯模型和EM算法

    http://antkillerfarm.github.io/ 贝叶斯统计和规则化(续) p(θ|S)p(\theta\vert S)可由前面的公式得到. 假若我们要求期望值的话,那么套用求期望的公式 ...

  3. 基于python的RFM模型和K-Means算法的用户特征分析

    一.业务背景 2018 年在全球所有零售支出中在线零售支出占 15%.据互联网零售商估计,2018 年全球消费者在网上购买零售商品的支出为 2.86 万亿美元,较上年的 2.43 万亿美元增长 18. ...

  4. HMM模型和Viterbi算法

    一.隐含马尔可夫模型(Hidden Markov Model) 1.简介 隐含马尔可夫模型并不是俄罗斯数学家马尔可夫发明的,而是美国数学家鲍姆提出的,隐含马尔可夫模型的训练方法(鲍姆-韦尔奇算法)也是 ...

  5. 一文读懂 HMM 模型和 Viterbi 算法

    隐含马尔可夫模型(Hidden Markov Model) 隐含马尔可夫模型并不是俄罗斯数学家马尔可夫发明的,而是美国数学家鲍姆提出的,隐含马尔可夫模型的训练方法(鲍姆-韦尔奇算法)也是以他名字命名的 ...

  6. 时间序列分析模型:ARIMA模型和SARIMAX算法

    文章目录 自回归综合移动平均 可视化时间序列数据 差分 自回归模型 关于自相关和偏自相关的最后思考 自回归综合移动平均 ARIMA模型的一般过程如下: 可视化时间序列数据 使时间序列数据平稳 绘制相关 ...

  7. em算法matlab图像应用,em算法matlab程序

    EM 算法作业 EM 算法简单 介绍及应用 EM 算法是当存在数据缺失问题时,极... Matlab 实现根据以上推导,可以很容易实现 EM 算法估计 GMM 参数.现... 题目:matlab 实现 ...

  8. viterbi算法词性标注_使用Viterbi算法深入研究词性标记

    viterbi算法词性标注 by Sachin Malhotra 由Sachin Malhotra 使用Viterbi算法深入研究词性标记 (A deep dive into part-of-spee ...

  9. C++ Fermat‘s little theorem费马小定理寻找模逆实现算法(附完整源码)

    C++ Fermat's little theorem费马小定理寻找模逆实现算法 C++ Fermat's little theorem费马小定理寻找模逆实现算法完整源码(定义,实现,main函数测试 ...

最新文章

  1. 1.大数据处理架构Hadoop
  2. 如何隐晦地表达“滚”?
  3. win10 安装 mysql-8.0.12
  4. python安装在哪个盘比较好_python编写器用哪个比较好?
  5. 请检查virtualboxapi是否正确安装_MBR膜组件安装施工方案指南
  6. mybatis原始mapper开发未集成springMVC
  7. java面试 谈谈jvm内存结构
  8. 设计模式之GOF23工厂模式02
  9. windows 搭建kms服务器激活_搭建kms服务器,自建KMS激活服务器的两种方法
  10. ios safari 模拟器_Safari调试iOS应用
  11. 香农编码的gui编码_香农编码
  12. 文件或目录结构损坏且无法读取快速恢复数据的方法
  13. 三星手机和计算机如何连接打印机,三星打印机连接到电脑没反应怎么办
  14. iOS静态库SDK制作(包含支付宝支付、微信支付或其它第三方静态库)
  15. C语言十大操作符超全详解【建议收藏】
  16. 用pytorch实现神经网络
  17. settextstyle() 设置文本型式函数
  18. 记武汉疫情期间的一次数据库和翻译记忆库的数据恢复 (一)
  19. 象与骑象人-幸福的假设
  20. MJExtension使用指导

热门文章

  1. javascript定时器及Date对象
  2. linux网络编程常用函数详解与实例(socket--bind--listen--accept)
  3. SQL Server 2000 sp4 简体中文版免费在线下载!
  4. 用神经网络做分子模型是不是扯淡,f2,cl2,br2分子模型
  5. 仪表指针样式_PS教程!教你绘制拟物仪表盘拟物图标
  6. 【Paper】2003_Consensus Problems in Networks of Agents with Switching Topology and Time-Delays
  7. Ardino基础教程 22_PS2摇杆
  8. Ardino基础教程 18_驱动74HC595
  9. Linux中cp和scp命令的使用方法
  10. 【工具】音乐播放相关工具,音乐文件格式转换工具,MP3文件转换成arduino可以直接播放的wav格式,MP3转WAV工具...