中文分词HMM隐马尔科夫
1、在说明HMM之前先记录一下什么是马尔可夫模型:即每一个状态只依赖之前的有限个状态。
--N阶马尔可夫:依赖之前n个状态
--一阶马尔可夫:仅仅依赖前一个状态
- 马尔可夫有三个重要参数:
--初始概率
--状态
--状态转移概率
具体的马尔可夫模型可参考https://blog.csdn.net/zxm1306192988/article/details/78595933
2、隐马尔科夫模型
马尔可夫模型是对一个序列数据建模,但有时我们需要对两个序列数据建模
--例如
---机器翻译:源语言序列 <-> 目标语言序列
---词性标注:文字序列<-> 词性序列
- 写/一个/代码
- verb/num/noun
通常一个序列是我们观察到的,另一个隐藏的但是是我们需要的
--通常把观察到的序列称为O,隐藏的序列称为S
--观察序列O中的数据通常是由对应的隐藏序列决定的,彼此间相互独立
隐藏序列间相互依赖,构成了马尔可夫序列
O(?1?2 …??):观测序列,??只依赖于??
S(?1?2 …??):状态序列(隐藏序列),S是Markov序列,假设1阶Markov序列,则??+1 只依赖于??
隐马尔科夫模型具有五个重要参数:
---状态:由数字表示,假设共有M个
---观测:由数字表示,假设共有N个
---初始概率:由表示
---状态转移概率
---发射概率
• 初始概率 :计算方式是把需要的词/词库中的总词数取log
– BEMS:位置信息
• B(开头)
• M(中间)
• E(结尾)
• S(独立成词)
– 词性:
• n 名词
• nr 人名
• ns 地名
• v 动词
• vd 副动词
• vn 名动词
转移概率:由B转移到M或者E或者S的概率
发射概率:每一个单独的词的概率
- HMM生成过程
先生成第一个状态,然后依次由当前状态生成下一个状态, 最后每个状态发射出一个观察值
得到:
我们使用HMM是为了做什么呢?是为了中文分词中一些没有在词库中的单个词的粘连。
怎样进行粘连呢?使用viterbi算法
具体的参考https://blog.csdn.net/liangjiubujiu/article/details/80046388