马儿可夫模型:
一阶马尔科夫模型 = 二原语言模型
n阶马尔科夫模型 = n+1原语言模型
马尔科夫模型:每个状态只依赖之前有限个状态,马尔科夫模型是一条拉链,类似于一句话 ,可以切出多句词。
如 由 NBA 可以联想到篮球
马尔科夫模型有三类重要参数:
1.状态:存在多少个可选余地。比如一句话包含5个词语,则选择余地只有5个
2.初始概率:任何一个词都有可能出现在句首,但是概率不一样。给定一个词,求初始概率 , 该词 / 总词数 。 但是必须在句首
表达式: πk= P(S1 = k) k = 1,2,3,....m
当第一个状态S1等于某一个词汇(k)的时候,它的概率是多少
3.状态转移概率:
那么转移概率如何计算:
P(B|A) :当A出现的概率下出现B的概率
P(B|A) = P(A,B) / P(A) (A,B 的联合概率 / 出现A的概率)
x x x x x x x A B x x x x x A B x x x A C x x x
P(B|A) = 2/3
最大似然法:
--状态转移概率a (k,l)
P(St+1 = L | St = K) : 当小t时间出现K 下一个时间出现 L 的概率是多少 ; L紧跟K出现的次数 / K出现的总次数
--初始概率
P(Sl = K) ;以K位于句首出现的概率 K作为序列开始的次数 / 观测序列总数
隐马尔科夫模型:
马尔科夫模型是对一个序列进行建模,但是我们有时候需要对两个序列进行建模,这就是隐马尔科夫模型。
初始概率:每一个状态作为起始有一个概率。
状态转移概率:由一个状态到另一个状态的转移概率。
发射概率:如在语音识别中,这个汉字发出zhen的概率有多大。 在词性标注中:是一个状态到一个词语的概率,
由 <B,n> 到 出现”广“的概率 ,或是出现“负”的概率 。
案例:语音识别,词性标志
只有发了这三个音之后,通过系统才知道背后的三个汉字。
O 观察序列 (已知)
S 状态序列 (未知)
每一个汉字背后都有一个状态,第一部分是位置,第二部分词性<位置,词性> 位置BMES
<B,n>开头的,下一个<E,n>的概率,或是下一个是<M,n>的概率
HMM生成过程:先生成第一个状态,然后依次由当前状态生成下一个状态,最后每一个状态发射出一个观测值。
隐马尔科夫 模型 核心:给隐马尔科夫模型一堆汉字,最后给我一堆切词方案,在这里面找一个概率最大的切分方案 给我即可。
假设M个状态,N个观测
1.初始概率: M个 = 2000
2.转移概率: M*M = 400W
3.发射概率 : M*N = 120
观测都是汉字,常见汉字(2000个)
2000 * 2000 = 400W
状态有2000个
位置BMES 4个,词性30个左右
目标:P(S|O) = P(S,O)/P(O)
P(O) =1 当做一个语音识别 ,发出了一句语音,已经固定下来,就是1
即:P(S|O) = P(S,O) 计算联合概率。
===Viterbi算法===
Viterbi 核心:动态规划:在t+1位置重用t的结果
思想:第一列的π会的到一个初始概率得到第一列第二个值概率最大,第二列不同的状态 的最优路径是不一样的,得到3种最优路径,比如说第二列某一个值往前找到第一列最优路径只有一条,那么3个值就只有3钟最优路径,这时候第二列第一个值找到了自己的最优路径,为第一列第二个值,第二列第一个本来路径最优,刚好最三列连接上第二列第一个,得到最优路径。
最优路径:这个路径上所有的状态就是最后的结果,若是拿到这个结果,则这个句子的分词就出来啦。
前向概率解决问题;当一个状态为K的前提下,计算t时刻为k的观测序列的概率
后向概率解决问题:当t时刻状态为k的前提下,计算t+1时刻到T时刻观测序列的概率。