当前位置:   article > 正文

自然语言处理入门-第4章 隐马尔可夫模型与序列标注_第四章 隐马尔可夫模型与序列标注

第四章 隐马尔可夫模型与序列标注

序列标注问题

序列标注问题是给定一个序列x=x1x2…xn,找出序列中每个元素对应的标签y=y1y2…yn的问题。其中y的取值范围称为标注集

中文分词可以当作是一个序列标注问题。对于每个词,可以用标注集为{B,E,M,S}的状态序列标注,B和E表示词首和词尾;S表示单字成词;M表示词中。标注之后,B和E标签区间对应一个词,S字符对应一个单字词。

此外,词性标注和NER问题也是序列标注问题。

隐马尔可夫模型

HMM是描述两个时序序列联合分布p(x,y)的概率模型:x序列是外界可见的,称为观测序列,y序列是外界不可见的,称为状态序列

HMM模型之所以称为,是因为在外界看,状态序列是不可见的,是待求的因变量。从这个角度来看,状态也称为隐状态,观测也称为显状态

1.HMM与马尔可夫假设

HMM
1.它的马尔可夫假设是作用于状态序列上的。当前状态yt仅仅依赖于前一个状态yt-1,连续多个状态构成隐马尔可夫链y
2.任何时刻的观测xt只依赖于该时刻的状态yt,与其他时刻的状态和观测无关。

2.HMM三要素

初始状态概率向量、状态转移概率矩阵、发射概率矩阵,被称为HMM的三元组。

HMM的基本问题有三个:样本生成、参数估计、序列预测。

设状态标注集共有N种取值,系统启动进入的第一个状态y1称为初始状态,决定y1的状态的参数向量叫做初始状态概率向量

存储从状态i到状态j的概率的矩阵叫做状态转移概率矩阵,dims=N * N。
由于xt是由yt决定的,设x共有M种取值,y有N种取值,则存储给定y条件下,求x概率的矩阵,叫做发射概率矩阵,dims=N * M。

3.HMM样本生成

假设生成长度为t的序列,则
1.先使用初始状态概率向量生成第一个隐状态y1,然后生成对应的显状态x1。
2.使用y1和状态转移概率矩阵A生成y2,使用y2和发射状态矩阵B生成x2.
3.重复步骤2,知道生成yt和xt。

4.HMM的训练(参数估计)

HMM的训练过程,其实就是对数据集进行统计,得到三元组参数。

1.状态转移概率矩阵的估计

记样本序列在时刻t处于状态si,时刻t+1转移到状态sj,统计这样的状态转移频次计入矩阵元素Ai,j;然后对Ai这一样进行归一化,就是从状态i到各个状态转移的概率了。

2.初始状态概率向量的估计

就是一种状态转移的特例,不过是从BOS到y1的状态转移,祝需要统计每个sample的第一个state,然后归一化即可。

3.发射概率矩阵的估计

统计在隐状态为si时,对应的所有显状态xj,对应于Bij,然后对Bi进行归一化。

5.隐马尔可夫模型的预测

给定观测序列,求解最可能的状态序列及其概率。

给定观测序列x和一个状态序列y,如何求解两者的联合分布概率?
p ( x , y ) = p ( y ) p ( x ∣ y ) = p ( y 1 ) ∏ t = 2 T p ( y t ∣ y t − 1 ) ∏ t = 1 T p ( x t ∣ y t ) p(x,y) = p(y)p(x|y) = p(y_{1})\prod_{t=2}^{T}p(y_{t}|y_{t-1})\prod_{t=1}^{T}p(x_{t}|y_{t}) p(x,y)=p(y)p(xy)=p(y1)t=2Tp(ytyt1)t=1Tp(xtyt)

搜索状态序列的Viterbi算法

在这里插入图片描述上图从左到右时序递增,虚线由初始状态概率向量决定,实线则是转移概率,由于受到观测序列的约束,不同转台发射观测的概率不同,所以每个结点本身也必须计算自己的花费。
在这里插入图片描述

Viterbi算法
在这里插入图片描述

6.HMM应用于中文分词

标注集为{B,M,S,E},分别表示词首、词中、单字成词、词尾。

要想进行分词任务,首先要对字符映射。建立一个Vocabulary。将观测序列和状态序列均映射为数字。
Tips:在训练时,我们会建立词表;在预测时,会遇到一些OOV词汇,这时,会统一将其映射为一个固定的id:UNK。

经过最终评测,HMM应用于中文分词F1-score只有80%左右,很低。但是,对于OOV的召回率到了40%+。
IV(In vocabulary)记不住,说明模型比较简单,欠拟合。可以通过增加模型的复杂度解决问题。

二阶隐马尔可夫模型

如果HMM中的每个状态仅依赖于前一个状态,则称为一阶
如果依赖于前两个状态,则称为二阶

在一阶中,y1由初始状态概率矩阵得到;
在二阶中,y1由初始状态概率矩阵得到;y2由一阶HMM的状态转移概率矩阵得到;y3~yt由状态转移张量得到。

二阶状态转移概率张量的估计

当t>=3时,将序列语法片段 ( y t − 2 = s i , y t − 1 = s j , y t = s k ) 的 频 次 按 下 标 ( i , j , k ) 计 入 张 量 A i , j , k (y_{t-2}=s_{i},y_{t-1}=s_{j},y_{t}=s_{k})的频次按下标(i,j,k)计入张量A_{i,j,k} (yt2=si,yt1=sj,yt=sk)(i,j,k)Ai,j,k

二阶隐马尔可夫模型中的维特比算法

这里要注意这个delta(i,j,k)的定义,是以(si, sj)结尾的路径的最大概率。
在这里插入图片描述

最终,阶隐马尔可夫模型略微提升了OOV的召回率,但是分词的结果依旧不太好。

总结

HMM能够在一定程度上解决新词识别的问题;但是中文分词的效果不理想,哪怕是升级到二阶隐马尔可夫模型,F1值依然没有提升。看来朴素的HMM不适合segment,需要更高级的模型。

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号