详解隐马尔可夫模型(HMM)中的维特比算法

本文介绍了隐马尔可夫模型在序列标注问题中的应用,特别是针对中文分词的挑战。通过维特比算法解决似然概率最大的路径,以应对未登录词(OOV)问题。文中详细阐述了序列标注问题、隐马尔可夫模型的马尔可夫假设、模型的训练和预测,以及在中文分词、词性标注和命名实体识别中的应用。此外,讨论了HMM的局限性,指出更高的阶数并不一定能提高模型的准确率,暗示需要寻求更复杂的模型来解决中文分词问题。
摘要由CSDN通过智能技术生成

笔记转载于GitHub项目https://github.com/NLP-LOVE/Introduction-NLP

4. 隐马尔可夫模型与序列标注

第3章的n元语法模型从词语接续的流畅度出发,为全切分词网中的二元接续打分,进而利用维特比算法求解似然概率最大的路径。这种词语级别的模型无法应对 OOV(Out of Vocabulary,即未登录词) 问题: 00V在最初的全切分阶段就已经不可能进人词网了,更何谈召回。

例如下面一句:

头上戴着束发嵌宝紫金冠,齐眉勒着二龙抢珠金抹额

加粗的就是相对陌生的新词,之前的分词算法识别不出,但人类确可以,是因为读者能够识别“戴着”,这些构词法能让人类拥有动态组词的能力。我们需要更细粒度的模型,比词语更细粒度的就是字符。

具体说来,只要将每个汉字组词时所处的位置(首尾等)作为标签,则中文分词就转化为给定汉字序列找出标签序列的问题。一般而言,由字构词是序列标注模型的一种应用。 在所有“序列标注”模型中,隐马尔可夫模型是最基础的一种。

4.1 序列标注问题

序列标注指的是给定一个序列 x = x 1 x 2 . . . x n x=x_1x_2...x_n x=x1x2...xn,找出序列中每个元素对应标签 y = y 1 y 2 . . . y n y=y_1y_2...y_n y=y1y2...yn 的问题。其中,y 所有可能的取值集合称为标注集。比如,输入一个自然数序列,输出它们的奇偶性。

求解序列标注问题的模型一般称为序列标注器,通常由模型从一个标注数据集 { X , Y } = { ( x ( i ) , y ( i ) ) } , i = 1 , . . . , K \{X,Y\}=\{(x^{(i)},y^{(i)})\},i=1,...,K { X,Y}={ (x(i),y(i))},i=1,...,K 中学习相关知识后再进行预测。再NLP问题中,x 通常是字符或词语,而 y 则是待预测的组词角色或词性等标签。中文分词、词性标注以及命名实体识别,都可以转化为序列标注问题。

  1. 序列标注与中文分词

    考虑一个字符序列(字符串) x,想象切词器真的是在拿刀切割字符串,如此,中文分词转化为标注集{切,过}的序列标注问题。

    分词标注集并非只有一种,为了捕捉汉字分别作为词语收尾(Begin、End)、词中(Middle)以及单字成词(Single)时不同的成词概率,人们提出了{B,M,E,S}这种最流行的标注集。

  2. 序列标注与词性标注

    词性标注任务是一个天然的序列标注问题:x 是单词序列,y 是相应的词性序列。需要综合考虑前后的单词与词性才能决定当前单词的词性。

  3. 序列标注与命名实体识别

    所谓命名实体,指的是现实存在的实体,比如人名、地名和机构名,命名实体是 OOV 的主要组成部分。

    考虑到字符级别中文分词和词语级别命名实体识别有着类似的特点,都是组合短单位形成长单位的问题。所以命名实体识别可以复用BMES标注集,并沿用中文分词的逻辑,只不过标注的对象由字符变为单词而已。唯一不同的是,命名实体识别还需要确定实体所属的类别。这个额外的要求依然是个标注问题,可以通过将命名实体类别附着到BMES标签来达到目的。比如,构成地名的单词标注为“B/M/E/S-地名”,以此类推。对于那些不构成命名实体的单词,则统-标注为O ( Outside), 即复合词之外。

总之,序列标注问题是NLP中最常见的问题之一。许多应用任务都可以变换思路,转化为序列标注来解决。所以一个准确的序列标注模型非常重要,直接关系到NLP系统的准确率。机器学习领域为NLP提供了许多标注模型,本着循序渐进的原则,本章介绍其中最基础的一个隐马尔可夫模型。

4.2 隐马尔可夫模型

隐马尔可夫模型( Hidden Markov Model, HMM)是描述两个时序序列联合分布 p(x,y) 的概率模型: x 序列外界可见(外界指的是观测者),称为观测序列(obsevation sequence); y 序列外界不可见,称为状态序列(state sequence)。比如观测 x 为单词,状态 y 为词性,我们需要根据单词序列去猜测它们的词性。隐马尔可夫模型之所以称为“隐”,是因为从外界来看,状
态序列(例如词性)隐藏不可见,是待求的因变量。从这个角度来讲,人们也称状态为隐状态(hidden state),而称观测为显状态( visible state)。隐马尔可夫模型之所以称为“马尔可夫模型”,”是因为它满足马尔可夫假设

  1. 从马尔可夫假设到隐马尔可夫模型

    马尔可夫假设:每个事件的发生概率只取决于前一个事件。

    马尔可夫链:将满足马尔可夫假设的连续多个事件串联起来,就构成了马尔可夫链。

    如果把事件具象为单词,那么马尔可夫模型就具象为二元语法模型。

    隐马尔可夫模型:它的马尔可夫假设作用于状态序列,

    假设 ① 当前状态 Yt 仅仅依赖于前一个状态 Yt-1, 连续多个状态构成隐马尔可夫链 y。有了隐马尔可夫链,如何与观测序列 x 建立联系呢?

    隐马尔可夫模型做了第二个假设: ② 任意时刻的观测 x 只依赖于该时刻的状态 Yt,与其他时刻的状态或观测独立无关。如果用箭头表示事件的依赖关系(箭头终点是结果,依赖于起点的因缘),则隐马尔可夫模型可以表示为下图所示

    状态与观测之间的依赖关系确定之后,隐马尔可夫模型利用三个要素来模拟时序序列的发生过程----即初始状态概率向量、状态转移概率矩阵和发射概率矩阵

  2. 初始状态概率向量

    系统启动时进入的第一个状态 Y1 称为初始状态,假设 y 有 N 种可能的取值,那么 Y1 就是一个独立的离散型随机变量,由 P(y1 | π) 描述。其中
    π = ( π 1 , ⋯   , π N ) T , 0 ⩽ π i ⩽ 1 , ∑ i = 1 N π i = 1 \pi=\left(\pi_{1}, \cdots, \pi_{N}\right)^{\mathrm{T}}, 0 \leqslant \pi_{i} \leqslant 1, \sum_{i=1}^{N} \pi_{i}=1 π=(π1,,πN)T,0πi1,i=1Nπi=1
    是概率分布的参数向量,称为初始状态概率向量

    给定 π ,初始状态 Y1 的取值分布就确定了,比如采用{B,M,E,S}标注集时概率如下:
    p ( y 1 = B ) = 0.7 p ( y 1 = M ) = 0 p ( y 1 = E ) = 0 p ( y 1 = S ) = 0.3 p(y_1=B)=0.7\\ p(y_1=M)=0\\ p(y_1=E)=0\\ p(y_1=S)=0.3 p(y1=B)=0.7p(y1=M)=0p(y1=E)=0p(y1=S)=0.3
    那么此时隐马尔可夫模型的初始状态概率向量为 π=[0.7,0,0,0.3],注意,句子第一个词是单字的可能性要小一些。

  3. 状态转移矩阵

    Yt 如何转移到 Yt+1 呢?根据马尔可夫假设,t+1 时的状态仅仅取决于 t 时的状态,既然一共有 N 种状态,那么从状态 Si 到状态 Sj 的概率就构成了一个 N*N 的方阵,称为状态转移矩阵 A
    A = [ p ( y t +

  • 6
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值