赞
踩
序列标注问题是给定一个序列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模型之所以称为隐,是因为在外界看,状态序列是不可见的,是待求的因变量。从这个角度来看,状态也称为隐状态,观测也称为显状态。
HMM:
1.它的马尔可夫假设是作用于状态序列上的。当前状态yt仅仅依赖于前一个状态yt-1,连续多个状态构成隐马尔可夫链y。
2.任何时刻的观测xt只依赖于该时刻的状态yt,与其他时刻的状态和观测无关。
初始状态概率向量、状态转移概率矩阵、发射概率矩阵,被称为HMM的三元组。
HMM的基本问题有三个:样本生成、参数估计、序列预测。
设状态标注集共有N种取值,系统启动进入的第一个状态y1称为初始状态,决定y1的状态的参数向量叫做初始状态概率向量。
存储从状态i到状态j的概率的矩阵叫做状态转移概率矩阵,dims=N * N。
由于xt是由yt决定的,设x共有M种取值,y有N种取值,则存储给定y条件下,求x概率的矩阵,叫做发射概率矩阵,dims=N * M。
假设生成长度为t的序列,则
1.先使用初始状态概率向量生成第一个隐状态y1,然后生成对应的显状态x1。
2.使用y1和状态转移概率矩阵A生成y2,使用y2和发射状态矩阵B生成x2.
3.重复步骤2,知道生成yt和xt。
HMM的训练过程,其实就是对数据集进行统计,得到三元组参数。
记样本序列在时刻t处于状态si,时刻t+1转移到状态sj,统计这样的状态转移频次计入矩阵元素Ai,j;然后对Ai这一样进行归一化,就是从状态i到各个状态转移的概率了。
就是一种状态转移的特例,不过是从BOS到y1的状态转移,祝需要统计每个sample的第一个state,然后归一化即可。
统计在隐状态为si时,对应的所有显状态xj,对应于Bij,然后对Bi进行归一化。
给定观测序列,求解最可能的状态序列及其概率。
给定观测序列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(x∣y)=p(y1)t=2∏Tp(yt∣yt−1)t=1∏Tp(xt∣yt)
上图从左到右时序递增,虚线由初始状态概率向量决定,实线则是转移概率,由于受到观测序列的约束,不同转台发射观测的概率不同,所以每个结点本身也必须计算自己的花费。
在这里插入图片描述
Viterbi算法:
标注集为{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} (yt−2=si,yt−1=sj,yt=sk)的频次按下标(i,j,k)计入张量Ai,j,k
这里要注意这个delta(i,j,k)的定义,是以(si, sj)结尾的路径的最大概率。
最终,阶隐马尔可夫模型略微提升了OOV的召回率,但是分词的结果依旧不太好。
HMM能够在一定程度上解决新词识别的问题;但是中文分词的效果不理想,哪怕是升级到二阶隐马尔可夫模型,F1值依然没有提升。看来朴素的HMM不适合segment,需要更高级的模型。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。