顿搜
隐马尔可夫词类标注 (POS) ——基于统计的词性标注一
基于 HMM 的词类标注
如果对隐马尔科夫模型不了解,请点这里两个假设
- 句中某个词是否出现只和该词的词类标记有关。和句中的其他词以及其它词的词类标记无关
- 句中某个词的词类只和该词前面一个词的词类有关,而和句中其它词类无关, 即词类的 bigram 模型
如果对bigram 模型不了解,请点这里这两个假设对应于隐马尔可夫模型的输出独立性假设和马尔科夫假设
对应关系
- HMM 状态集 ——> 词类标记集
- HMM 输出符号集 ——> 词表
- HMM 状态转移矩阵 ——> 词类转移概率 $p(t_{i}|t_{i-1})$
- 输出符号概率 ——> 词类 $t_i$ 生成词 $w_i$ 的概率 $p(w_{i}|t_{i})$
- 初始状态概率 ——> 词类 t 出现在句首的概率 $p(t) = p(t|\<BOS\>)$
$$\hat{t_{1}^{n}} = \underset{t_{1}^{n}}{\mathrm{argmax}} P(t_{1}^{n}|w_{1}^{n}) = \underset{t_{1}^{n}}{\mathrm{argmax}}\prod_{i=1}^{n}p(t_{i}|t_{i-1})p(w_{i}|t_{i})$$
如何根据观察到的词串(句子),求解最可能的词类标记序列(状态转换序列)——>Viterbi算法
如果对Viterbi算法不了解,请点这里HMM 模型参数估计
参数学习
- 多采用有指导的学习方法,需要预先准备带词类标记的语料库
- 也可以采用无指导学习,例如用 Baum-Welch 算法
如果对Baum-Welch 算法不了解,请点这里- 也可以采用最大似然估计
状态转移矩阵
$$p(t_{i}|t_{i-1}) = \frac{c(t_{i-1},t_{i})}{c(t_{i-1})}$$
输出符号概率
$$p(w_{i}| t_{i}) = \frac{c(t_{i},w_{i})}{c(t_{i})}$$
特殊标记 <BOS><EOS>
改进的 HMM 词类标注
考虑更多的上下文,把词类的 bigram 模型改作 trigram 模型
$$\hat{t_{1}^{n}} = arg \max_{t_{1}^{n}}P(t_{1}^{n}|w_{1}^{n}) = arg \max_{t_{1}^{n}} \prod_{i=1}^{n}p(t_{i}|t_{i-1}, t_{i-2})p(w_{i}|t_{i})$$
同样可采用最大似然估计进行参数学习
状态转移矩阵
$$p(t_{i}|t_{i-1}, t_{i-2}) = \frac{c(t_{i-2}, t_{i-1}, t_{i})}{c(t_{i-2}, t_{i-1})}$$
对于数据的稀疏问题、可应用线性插值进行平滑
$$\hat{p}(t_{i}| t_{i-1},t_{i-2}) = \lambda_{1}p(t_{i}|t_{i-1},t_{i-2}) + \lambda_{2}p(t_{i}|t_{i-1}) + \lambda_{3}p(t_{i}) $$
如果对数据平滑不了解,请点这里输出概率平滑
$$p(w|t)=\frac{c(t,w)+1}{c(t)+T_{w}}$$