中文分词、词类标注、命名实体识别对序列标注算法的应用差异
1 中文分词
目前网络可找到资料的多为3,4,6类型标注, 在无全局归一时(HMM,MEMM均为局部归一, CRF是全局归一),同样的任务,标注类型适当增多可明显得到更优的效果,或许这是因为类型隐含更久远上下文依赖,但这样会增加对标记语料的数量需求。一般使用类型数量为4的BMES标注方法
目前网络可找到资料的多为3,4,6类型标注, 在无全局归一时(HMM,MEMM均为局部归一, CRF是全局归一),同样的任务,标注类型适当增多可明显得到更优的效果,或许这是因为类型隐含更久远上下文依赖,但这样会增加对标记语料的数量需求。一般使用类型数量为4的BMES标注方法
在之前的CRF模型中,使用人工设置特征模版扫描待训练语料得到特征函数集合。为每个特征函数配置并优化其权重。但所有特征函数均来自标注语料,在工程中,标注语料非常有限,可能会碰到之前未标记特征。而本算法将字向量(或其他待标注向量)单独无监督训练,无需人工标注。减少标记样本需求。只有在后续lstm+crf训练才需要标注语料。
CRF特征模版是线性模型,而深度学习是非线性模型,这增强了特征。
在实践中,因为规范因子$ Z_w(x) $在序列较长时值会非常大,因此所有和规范因子相关运算全部使用$ \log \sum \exp $替代。对应的概率操作也需要变换。
$ \tilde{p} $是经验分布概率,由样本简单统计得到。
$$ \begin{align} L_\tilde{P}(P_w) &= \log \prod_{x,y}p(y|x)^{\tilde{p}(x,y)} \\ &= \sum_{x,y} \tilde{p}(x,y) \log p(y|x) \\ &= \sum_{x,y} \tilde{p}(x,y) \sum_{k=1} w_k f_k(x,y) – \sum_{x} \tilde{p}(x) \log Z_w(x) \end{align} $$
超找给定$ x $序列最大概率输出序列$ y^\ast $。
与 HMM/MEMM viterbi 类似的搜索方法,但在CRF中并不用计算规范化概率。
$$ \begin{align} y^\ast &= \arg\max_y p(y|x) \\ &= \arg\max_y \frac{ \exp( w \cdot F(y,x) ) }{Z_w(x)} \\ &= \arg\max_y \exp( w \cdot F(y,x) ) \\ &= \arg\max_y w \cdot F(y,x) \\ &= \arg\max_y \sum_k w_k f_k(y, x) \\ &= \arg\max_y \sum_k w_k \sum_i f_k(y_{i-1}, y_i, x_i) \\ &= \arg\max_y \sum_i \sum_k w_k f_k(y_{i-1}, y_i, x_i) \\ &= \arg\max_y \sum_i f^\prime(y_{i-1}, y_i, x_i) \end{align} $$
$$ f^\prime(y_{i-1}, y_i, x_i)=\sum_k w_k f_k(y_{i-1}, y_i, x_i) $$
也就是说只需计算连续最大特征函数求和路径。
可看到线行链中只有前后两个$ y_{i-1}, y_i$是互相依赖的,因此这里和HMM类似,只是把求积换成求和。