美文网首页
中文分词算法之HMM算法

中文分词算法之HMM算法

作者: galois_xiong | 来源:发表于2017-05-27 13:34 被阅读0次

    本系列中文十年回顾中讲了时至今日,中文分词中对效果影响最大的是未登录词的识别。今天要讲的就是基于HMM算法的中文分词,可以用来发掘为登录词。

    从中文分词角度理解HMM

    中文分词,就是给一个汉语句子作为输入,以“BEMS”组成的序列串作为输出,然后再进行切词,进而得到输入句子的划分。其中,B代表该字是词语中的起始字,M代表是词语中的中间字,E代表是词语中的结束字,S则代表是单字成词。
    下面是一个用字符标注方法进行识别的一个例子

      小明硕士毕业于中国科学院计算所
      BEBEBMEBEBMEBES
      BE/BE/BME/BE/BME/BE/S
      小明/硕士/毕业于/中国/科学院/计算/所
    

    上面的例子就是一个给定观察序列,得到状态序列,在HMM中就是一个解码过程。

    HMM简介

    定义: HMM (隐马尔可夫模型) 是关于时序的概率模型, 描述由一个隐藏的马尔可夫链随机生成不可观察的状态序列,再有状态序列生成一个观测序列的过程。
    HMM有以下5个要素:
    观测序列-O:小明硕士毕业于中国科学院计算所
    状态序列-S:BEBEBMEBEBMEBES
    初始状态概率向量-π:句子的第一个字属于{B,E,M,S}这四种状态的概率


    初始状态

    状态转移概率矩阵-A:如果前一个字位置是B,那么后一个字位置为BEMS的概率各是多少


    状态转移矩阵

    观测概率矩阵-B:在状态B的条件下,观察值为耀的概率,取对数后是-10.460


    观测概率矩阵

    备注:示例数值是对概率值取对数之后的结果,为了将概率相乘的计算变成对数相加,其中-3.14e+100作为负无穷,也就是对应的概率值是0

    三类问题
    当通过五元组中某些已知条件来求未知时,就得到HMM的三类问题:

    • 似然度问题:参数(O,π,A,B)已知的情况下,求(π,A,B)下观测序列O出现的概率
    • 解码问题:参数(O,π,A,B)已知的情况下,求解状态值序列S。(viterbi算法)
    • 学习问题:参数(O)已知的情况下,求解(π,A,B)。(Baum-Welch算法)

    中文分词属于解码问题, 就是对给定的观察序列,求解对应的最优状态的问题。
    我们希望找到 s_1,s_2,s_3,... 使 P (s_1,s_2,s_3,...|o_1,o_2,o_3....) 达到最大。
    意思是,当我们观测到信号 o_1,o_2,o_3,... 时,我们要根据这组信号推测出发送的句子 s_1,s_2,s_3,....,显然,我们应该在所有可能的句子中找最有可能性的一个。
    HMM 的两个假设:

    • 有限历史假设:si 只由si-1 决定


    • 独立输出假设:第 i 时刻的接收信号 oi 只由状态 si 决定



      基于上面的两个假设,解码问题可以推导如下:


    Viterbi 算法

    Viterbi算法:是一种动态规划算法。它用于寻找最有可能产生观测事件序列的维特比路径——隐含状态序列,特别是在马尔可夫信息源上下文和隐马尔可夫模型中。
    定义在t时刻, 状态为i的所有单路径中最大的值为:



    则在t+1时刻有:



    则利用上面的两个公式就可以完成解码了。

    Reference:

    http://blog.csdn.net/u014365862/article/details/54891582

    相关文章

      网友评论

          本文标题:中文分词算法之HMM算法

          本文链接:https://www.haomeiwen.com/subject/bhzffxtx.html