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

HMM

序列标注问题

序列标注问题是给定一个序列 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 (x ∣y )=p (y 1 ​)t =2 ∏T ​p (y t ​∣y t −1 ​)t =1 ∏T ​p (x t ​∣y t ​)

搜索状态序列的Viterbi算法

自然语言处理入门-第4章 隐马尔可夫模型与序列标注
在这里插入图片描述

Viterbi算法

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

; 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}(y t −2 ​=s i ​,y t −1 ​=s j ​,y t ​=s k ​)的频次按下标(i ,j ,k )计入张量A i ,j ,k ​

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

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

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

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

; 总结

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

Original: https://blog.csdn.net/lihao19990930/article/details/121877423
Author: 弱鸡萌新
Title: 自然语言处理入门-第4章 隐马尔可夫模型与序列标注

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/531444/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球