HMM分词系统
hhm基础:https://www.zhihu.com/question/35866596
viberti:https://blog.csdn.net/xueyingxue001/article/details/52396494
定义:
可观测序列: “我爱自然语言处理!”
隐藏序列:“我/爱/自然语言/处理!”
隐藏序列编码化:B(词汇开头)、E(词汇结尾)、M(词汇中间词),S(独立成词)。
隐藏序列:“SSBMMEBE”
m: 可观测序列的容量。
n:隐藏序列状态集合大小。
决策过程的图形展示,$Z$代表隐藏状态,$X$代表可观测状态。$X_i$取决于$Z_i$, $Z_{i}$取决于 $Z_{i-1}$。
三要素
初始状态:这个专指隐藏状态$Z_1$的概率分布为一个m维度向量,向量之和等于1。初始为M, E情况概率为0的情况。记为$\pi$
转移矩阵: $Z_{i-1}$ 到 $Z_{i}$的条件概率分布矩阵,为n阶的方阵。在这里$n=4$,用矩阵理解:将BEMS编码为1234,$P_{12}$ 代表$P(Z_t=E|Z_{t-1}=B)$。
$$\begin{matrix}
p_{11} & p_{12} & p_{13} & p_{14} \
p_{21} & p_{22} & p_{23} & p_{24} \
p_{31} & p_{32} & p_{33} & p_{34} \
p_{41} & p_{42} & p_{43} & p_{44} \
\end{matrix}$$
记为A。
观测矩阵:上面的举例中,S--我,S还有很多情况 S-他、S-爱.....。那么每个隐藏状态对应一个m种可观测的信号,是一种先验概率分布。有n个隐藏状态,就得到n X m的想概率分布矩阵。记为B
建模目标
- 已分词的训练数据。
- 将分词结果转化为BEMS序列。
- 极大似然估计,估计前面3各参数
如何应用于分词
目标:根据可观测序列,“我爱学习HHM”:根据联合概率分布计算所有可能隐藏序列($4^7$可能)对应“我爱学习HHM”出现的概率,概率最大的隐藏序列作为结果。句子一长,这个计算量要爆炸!
最优动态规划问题(viterbi)
https://www.zhihu.com/question/20136144
之所以能用viberti解决,是因为,HHM的当前状态仅仅取决于前一个状态。比如“我/爱/机器学习”这样分词。那么分词的动态规划如下图,蓝色线条太多,我就不一一作图画出。类似于神经网络的全连接。橙色线条为最优路径
**(我----习)之间的动态规划,最优路径上任意一点,例如 ”机“,那么 (我-----机) 必也为路径最优,否则前者就不是路径最优,因此计算,仅仅需要考虑从前面状态到后面状态的路径最优,理解为所有局部最优组合成全局最优 **
下面假设初始状态概率为: $\pi=(0, 0.6, 0.4, 0)$,向量每个位置一次对应E、B、S、M。理解为句子第一字为一个大于长度为1的词的结尾概率为0,反之为词的开头概率为0.6,独立成词的概率为0.4(例如:我),M自己猜。以上为个人先验估计。
估计下转移概率:
$$\begin{matrix}
& E & B & S & M \
E & 0.0 & 0.8 & 0.2 & 0.0 \
B & 0.4 & 0.0 & 0.0 & 0.6 \
S & 0.0 & 0.9 & 0.1 & 0.0 \
M & 0.4 & 0.0 & 0.0 & 0.6 \
\end{matrix}$$
估计下观测矩阵, 函数为4 列数为构成语料的字词个数,这里...省略每一行和为1:
$$\begin{matrix}
& 我 & 爱 & 机 & 器 & 学 & 习 & ...\
E & 0.0 & 0.1 & 0.2 & 0.2 & 0.1 & 0.3, &...\
B & 0.0 & 0.0 & 0.1 & 0.1 & 0.3 & 0.1, &...\
S & 0.5 & 0.2 & 0.0 & 0.0 & 0.0 & 0.1, &...\
M & 0.0 & 0.1 & 0.1 & 0.2 & 0.2 & 0.1, &...\
\end{matrix}$$
ps:以上参数为个人经验估计!
计算过程:
我:
$p_1(E)=P(我|E)P(E|初始)=0 * 0 = 0$
$p_1(B)=P(我|B)P(B|初始)=0 * 0.6 = 0$
$p_1(S)=P(我|S)P(S|初始)=0.5 * 0.4 = 0.2$
$p_1(M)=P(我|M)P(M|初始)=0 * 0 = 0$
最大机会:S
爱:
$p_2(E)=max[P_1(E) * P(E|E) *P(爱|E), P_1(B) * P(E|B) *P(爱|B), P_1(S) * P(E|S) *P(爱|E), P_1(M) * P(E|M) *P(爱|M)]=0$
$p_2(B)=max[P_1(E) * P(B|E) *P(爱|B), P_1(B) * P(B|B) *P(爱|B), P_1(S) * P(B|S) *P(爱|B), P_1(M) * P(B|M) *P(爱|B)]=0$
$p_2(S)=max[P_1(E) * P(S|E) *P(爱|S), P_1(B) * P(S|B) *P(爱|S), P_1(S) * P(S|S) *P(爱|S), P_1(M) * P(S|M) *P(爱|S)]=0.004$
$p_2(M)=max[P_1(E) * P(M|E) *P(爱|M), P_1(B) * P(M|B) *P(爱|M), P_1(S) * P(M|S) *P(爱|M), P_1(M) * P(M|M) *P(爱|M)]=0$
最大机会:S
根据前一次结果依次计算到最后,不一一计算了了,最后取每个步骤的最大机会概率状态。