一,标注问题
1,基本定义
通常将源序列 映射为标记序列 的问题,称为序列标注问题或者标注问题。
序列对建模的任务就是从训练语料中学习一个函数可以将源序列映射为标记序列的函数。
2,两个经典的标注问题
(1)POS tagging(词性标注)
词性标注的难点在于:
- 词性的歧义。
- 罕见词的存在性,例如那些没在训练语料中出现的词语。
一般解决方法:
- 考虑每个词语词性的统计偏好。
- 利用每个词的上下文信息,上下文信息对一个词的词性有很大的影响。
(2)Named-Entity recognition(命名实体识别)
3,标注问题的学习方法
一般我们会把标注问题看做一个监督学习问题,如下:
(1)判别式模型(条件模型)
- 首先从训练样本中学习一个条件分布 ;
- 给一个测试样本x,则预测的标记序列为 。
(2)生成式模型(联合模型)
- 首先从训练样本中学习一个联合分布 。
- 给一个测试样本x,则预测的标记序列为
其中,真正需要估计的模型参数只有 ,相比判别式模型,复杂度减少了很多。
其实,通常把将一个联合分布 分解成 两部分的模型,称为噪声信道模型。其中 可以看成一个将标记y作输入,经过一些噪声破坏它,最后生成x作为输出的信道。
NLP中有很多问题如标注问题、机器翻译、语音识别等,通常都是使用生成式模型来解决的。
总结如下:
4,生成式标注模型
下面将会详细回答这三个问题:
- 使用Trigram HMMs定义一个生成式标注模型。
- 使用线性插值最大似然估计来估计模型参数。
- 使用Viterbi算法来高效地寻找给定句子的最优标注序列,即解码问题。
二,HMM
1,Trigram HMMs
推导过程主要用到了:
- 链式法则;
- 马尔可夫假设;
- 独立性假设。
该模型的生成过程如下:
2,Trigram HMMs的参数估计
(1)对于监督学习
参数估计方法:最大似然估计+平滑方法。
使用最大似然估计,我们可以得到参数估计值为:
为了避免零概率问题,
的估计可以使用一些语言模型那一章介绍的平滑方法,如线性插值法;而
的估计则需要如下的方法来解决。
处理低频词的一般方法如下:
例如:
(2)对于无监督学习
对于无监督学习,则需要使用Baum-Welch算法(核心是EM算法)来估计参数。因为这里把标注问题看成了一个监督学习的问题,所以这里就不详细介绍EM了,可以参考李航老师的《统计学习方法》P181。
3,使用Viterbi算法对Trigram HMMs进行高效解码
这是一个动态规划算法,该算法的核心就是理解Viterbi变量的定义和动态方程,没有想象的那么难。
一些定义如下:
算法过程如下:
算法的时间复杂度如下: