隐形马尔科夫模型和序列标注
引出
在做n元语法模型中,利用的维特比算法求解似然概率最大的路径词语级别的模型无法应对 OOV(Out of Vocabulary,即未登录词) 。对于相对陌生的新词之前的分词算法识别不出,因此我们需要更细粒度的模型,比词语更细粒度的就是字符。具体说来,只要将每个汉字组词时所处的位置(首尾等)作为标签,则中文分词就转化为给定汉字序列找出标签序列的问题。一般而言,由字构词是序列标注模型的一种应用。 在所有“序列标注”模型中,隐马尔可夫模型是最基础的一种。
序列标注
序列标注值得是给定一个序列,找出序列中每个元素对应标签的问题。
序列标注器:求解序列标注问题的模型,即有模型从一个标注数据集中学习相关的知识后再进行预测。
序列标注和中文分词
分词标注集:为了捕捉汉字分别作为词语收尾(Begin、End)、词中(Middle)以及单字成词(Single)时不同的成词概率,人们提出了{B,M,E,S}这种最流行的标注集。
序列标注与词性标注
词性标注任务是一个天然的序列标注问题:x 是单词序列,y 是相应的词性序列。需要综合考虑前后的单词与词性才能决定当前单词的词性。
序列标注与命名实体识别
所谓命名实体,指的是现实存在的实体,比如人名、地名和机构名,命名实体是 OOV 的主要组成部分。
总结
总之,序列标注问题是NLP中最常见的问题之一。许多应用任务都可以变换思路,转化为序列标注来解决。所以一个准确的序列标注模型非常重要,直接关系到NLP系统的准确率。机器学习领域为NLP提供了许多标注模型,下面介绍其中最基础的一个隐马尔可夫模型。
隐马尔可夫模型
隐马尔可夫模型(HMM:Hidden Madkov Model):描述两个时许序列联合分布p(x,y)的概率模型。其中x外界可见,称为观测序列,y序列外界不可见,简单来说就是根据相应的观测序列去推测相应的状态序列,例如:观测序列为:单词,状态序列为磁性,我们就根据相应的单词序列去推测它的词性。隐:观测序列是隐藏不见的,马尔科夫模型:满足马尔科夫假设。
马尔可夫假设:每个事件的发生概率只取决于前一个事件。
马尔可夫链:将满足马尔可夫假设的连续多个事件串联起来,就构成了马尔可夫链。
隐马尔可夫模型:它的马尔可夫假设作用于状态序列,
假设 ① 当前状态 Yt 仅仅依赖于前一个状态 Yt-1, 连续多个状态构成隐马尔可夫链 y。有了隐马尔可夫链,如何与观测序列 x 建立联系呢?
隐马尔可夫模型做了第二个假设: ② 任意时刻的观测 x 只依赖于该时刻的状态 Yt,与其他时刻的状态或观测独立无关。如果用箭头表示事件的依赖关系(箭头终点是结果,依赖于起点的因缘)。
隐马尔可夫模型三要素:初始状态概率向量、状态转移概率矩阵和发射概率矩阵。
下面通过一个掷骰子的离子简单的概述隐马尔可夫模型
有三个不同骰子,每个骰子掷出的结果不一样
现在有如下的序列:{1 6 3 5 2 7 3 5 2 4}——>观测序列
则对应的状态序列可能为:{D6 D8 D8 D6 D4 D8 D6 D6 D4 D8}
概率计算(没有其他先决条件,比如D6出现之后D8不能出现):
概率为:
基本用法:
-
样本生成问题:给定模型,如何有效计算产生观测序列的概率?换言之,如何评估模型与观测序列之间的匹配程度?
-
序列预测问题:给定模型和观测序列,如何找到与此观测序列最匹配的状态序列?换言之,如何根据观测序列推断出隐藏的模型状态?
-
模型训练问题:给定观测序列,如何调整模型参数使得该序列出现的概率最大?换言之,如何训练模型使其能最好地描述观测数据?
前两个问题是模式识别的问题:1) 根据隐马尔科夫模型得到一个可观察状态序列的概率(评价);2) 找到一个隐藏状态的序列使得这个序列产生一个可观察状态序列的概率最大(解码)。第三个问题就是根据一个可以观察到的状态序列集产生一个隐马尔科夫模型(学习)。