隐马尔可夫模型(HMM)实现分词
最近在调研分词的一些工作,又重新看了一遍HMM,发现原来之前看过的,竟然给忘的干干净净!之前看的,真是喂了狗了,于是决定把这次的理解记录下来,俗话说,好记性不如赖笔头嘛。第一次写博客,以下纯属个人理解,如果有误,请指正~
模型的定义
HMM(Hidden Markov Model)是关于时序的概率图模型,由一个隐藏的不可观测的状态随机序列,再由各个状态生成一个观测值而产生观测随机序列的过程。
隐藏的状态序列称为状态序列(state sequence),生成的观测随机序列称为观测序列(observation sequence)
隐马尔可夫模型的图结构:
[y1, y2 …. yi, yn] 是状态序列,[x1, x2 …. xi, xn]是观测序列,yi 表示在 i 时刻的状态值, xi 表示在 i 时刻的观测值。
怎么确定一个模型?
HMM有两个假设:
1)任一时刻的状态只依赖前一时刻的状态
2)任意时刻的观测值,只与该时刻的状态值有关
从网络图中看的话,即,xi 只与 yi 有关, yi 只与 y(i-1)有关
那么问题来了,我们怎么确定一个模型呢?确定一个HMM模型,我们需要知道什么样的信息?
1)首先我们得知道,yi 和 xi 都能取什么样的值吧,也就是状态集合和观测值集合。
2)有了状态集合,我们回到假设1,任意时刻的状态只依赖前一时刻的状态,那我们是不是需要知道每个状态之间的转换概率?这个概率就被称为状态转移概率。
3)状态之间的转移概率有了,那么我们是不是还需要知道模型在初始时刻各状态出现的概率?就是所谓的初始状态概率。
4)回到假设2,任意时刻的观测值,只与该时刻的状态值有关,那么我们是不是要知道,在一个状态下,所对应的各个观测值的概率?就是所谓的观测概率(也称发射概率)。
好了,有了以上信息,我们就可以确定一个HMM模型了。
总结一下,确定一个HMM模型,我们需要知道这个五元组:
StatusS