通常将源序列 x1,x2,..,xn x 1 , x 2 , . . , x n 映射为标记序列 y1,y2,...,yn y 1 , y 2 , . . . , y n 的问题,称为序列标注问题或者标注问题。
序列对建模的任务就是从训练语料中学习一个函数可以将源序列映射为标记序列的函数。
(1)POS tagging(词性标注)
词性标注的难点在于:
一般解决方法:
(2)Named-Entity recognition(命名实体识别)
一般我们会把标注问题看做一个监督学习问题,如下:
(1)判别式模型(条件模型)
(2)生成式模型(联合模型)
其实,通常把将一个联合分布 p(x,y) p ( x , y ) 分解成 p(y)和p(x|y) p ( y ) 和 p ( x | y ) 两部分的模型,称为噪声信道模型。其中 p(x|y) p ( x | y ) 可以看成一个将标记y作输入,经过一些噪声破坏它,最后生成x作为输出的信道。
NLP中有很多问题如标注问题、机器翻译、语音识别等,通常都是使用生成式模型来解决的。
总结如下:
下面将会详细回答这三个问题:
推导过程主要用到了:
该模型的生成过程如下:
(1)对于监督学习
参数估计方法:最大似然估计+平滑方法。
使用最大似然估计,我们可以得到参数估计值为:
为了避免零概率问题, q(s|u,w) q ( s | u , w ) 的估计可以使用一些语言模型那一章介绍的平滑方法,如线性插值法;而 e(x|s) e ( x | s ) 的估计则需要如下的方法来解决。
处理低频词的一般方法如下:
例如:
(2)对于无监督学习
对于无监督学习,则需要使用Baum-Welch算法(核心是EM算法)来估计参数。因为这里把标注问题看成了一个监督学习的问题,所以这里就不详细介绍EM了,可以参考李航老师的《统计学习方法》P181。
这是一个动态规划算法,该算法的核心就是理解Viterbi变量的定义和动态方程,没有想象的那么难。
一些定义如下:
算法过程如下:
算法的时间复杂度如下: