之前关于信息抽取那篇文章提到使用HMM对文章段落进行分段并标注,其中会使用到trigram-HMM并对传统的HMM进行改造以符合特定情况下使用。这里分别对Katz backoff以及HMM模型在具体状况下的使用。
首先Katz backoff是一个经典的语言平滑模型,我们知道一般来说低阶模型出现的频率更高(低阶的元组包含在高阶元组中,阶数越高越稀疏),从而更加可靠,于是乎,未出现的高阶元组可以利用高阶元组中包含的低阶元组对其进行平滑。总之,高阶模型可靠时候便使用高阶模型,否则使用低阶模型。

其中一般这里设置k=0,即未出现该高阶元组时候进行平滑到低阶元组。

dwi−n+1..wi

d_{w_{i-n+1}..w_{i}}
表示折扣率,下缀表明该n元组,这里可以通过之前讲到的Good Turing平滑得到,即

r∗r

\frac{r^*}{r}
另外,

αwi+n+1..wi−1

α_{w_{i+n+1}..w{i-1}}
注意这里的n-1元组为原来n元组的前缀,这里是指从低阶元组平滑的得到未出现高阶元组的概率,但是要保证所有n元组的概率值和为1,所以有上面的折扣率。


其中

这里我直接用的是srilm,具体见
http://blog.csdn.net/zhoubl668/article/details/7759042。
关于Katz Backoff的实现可以参考百度文科提供的伪码:
http://wenku.baidu.com/view/4716310116fc700abb68fc35?pn=2&vw=all&ssid=&from=&bd_page_type=1&uid=5181E263DDA5B5EA8284A3647231AF4D&pu=rc@1,pic@on,sl@1,pw@1000,sz@224_220,pd@1,fz@2,lp@0,tpl@color,&st=1&wk=rd&maxpage=4&pos=all。
或者参考srilm的default方式为Katz Backoff。

下面HMM模型,具体隐马的原理和三大问题这里不赘述,网上很多很多博客。
由于这里转移概率是每个自然段的标签前后关系,每篇文章便是一个自然段序列,从标签角度便就是一句话(每个词对应原来一个自然段的标签的),转移概率通过对训练集进行MLE并通过Katz Backoff进行平滑,这里可以将训练集上所有的文章看成一篇文章(依然是每个词对应原来标签),这里实际使用的是trigam的HMM。举例


这便是一篇文章的标签,看成一句话。
对所有文章的标签(事先将train的所有文章标签汇聚到一个文件然后使用srilm)

上面srilm生成的gt文件便是katz backoff之后的结果,格式标准“概率\t元组\t平滑系数(上文中的α)”。
HMM的标签转移概率:

生成概率便是每个标签生成一个自然段落的概率,采用bag of words模型(假设词汇基于标签相互独立),所以

最后通过

求得测试集的自然段落标注序列。
细节:词汇方面注意停用词特殊字符等过滤,测试集不会出现训练集上没有的新的标签。

语言模型Katz backoff以及HMM模型相关推荐

  1. 机器学习深版11:HMM模型

    机器学习深版11:HMM模型(隐马尔科夫模型) 文章目录 机器学习深版11:HMM模型(隐马尔科夫模型) 1. 熵(Entropy) 2. 最大熵模型 3. HMM(隐马尔可夫模型) 4. 应用场景 ...

  2. python自然语言处理实战核心技术与算法——HMM模型代码详解

    本人初学NLP,当我看着<python自然语言处理实战核心技术与算法>书上这接近200行的代码看着有点头皮发麻,于是我读了接近一天基本把每行代码的含义给读的个七七八八,考虑到可能会有人和我 ...

  3. 隐马尔科夫模型HMM(一)HMM模型

    2019独角兽企业重金招聘Python工程师标准>>> 隐马尔科夫模型(Hidden Markov Model,以下简称HMM)是比较经典的机器学习模型了,它在语言识别,自然语言处理 ...

  4. HMM 模型输入数据处理的优雅做法 来自实际项目

    实际项目我是这样做的: def mining_ue_procedures_behavior(seq, lengths, imsi_list): print("seq 3:", se ...

  5. 统计学习方法第十章作业:HMM模型—概率计算问题、Baum-Welch学习算法、维特比预测算法 代码实现

    HMM模型 import numpy as npclass HMM:def __init__(self,A=None,B=None,Pi=None,O = None):if A:self.A = np ...

  6. 时序分析:HMM模型(状态空间)

    关于HMM模型:时序分析:隐马尔科夫模型 HMM用于手势识别: 训练时每一种手势对应一个HMM-Model,识别率取最大的一个HMM即可.  类似于一个封装的完成多类识别器功能单层网络. 优点: 尤其 ...

  7. 中文分词之HMM模型详解

    文章转载自: http://yanyiwu.com/work/2014/04/07/hmm-segment-xiangjie.html HMM(Hidden Markov Model): 隐式马尔科夫 ...

  8. POS标记——HMM模型

    1.数据准备 from utils_pos import get_word_tag, preprocess import pandas as pd from collections import de ...

  9. HMM模型及相关算法

    HMM模型及相关算法 写在前面:本文主要参考了刘建平Pinard老师的博客,做了一定程度的归纳,其中也有一些自己的理解,包括图和公式,希望对大家学习有所帮助. 一.HMM定义和前置知识 1.条件独立的 ...

最新文章

  1. 认真推荐8个功能强大的实用网站,备受好评!
  2. 让计算机“拥抱”常识
  3. Qt探秘——谈ui文件的用法
  4. Android音频焦点申请处理
  5. Elasticsearch聚合查询案例分享
  6. python基础知识纵览(下)
  7. 264编码基本概念 FFMpeg的解码流程
  8. 不越狱换壁纸_那些不舍得换的手机插画壁纸,你还差几张?
  9. 电商美工手里没有C4D素材模板,不能体现有多厉害
  10. mysql行格式_MySQL 行格式
  11. 悄悄安装vcredist_x64.exe,不弹出对话框
  12. 计算机描述不可用win10,升级win10出现的各种问题及解决办法
  13. 天昊16S扩增子绝对定量测序项目文章登陆《Bioresource Technology》
  14. 聊聊另外一个Druid(很全)
  15. 用python生成个性二维码生成器_Python 生成个性二维码
  16. 如何解决Access操作或事件已被禁用模式阻止
  17. 当你提出的分手被当真,应该如何去挽回
  18. 喧喧 2.5 发布,新增客户端自动升级,优化界面交互性能
  19. home1.2 ServerFragment(fragment_server)
  20. 异常检测---离群点

热门文章

  1. 程序员必须唱我哪些算法?
  2. 数学中竟然还有这样的定理!
  3. Python让你的终端输出变得五彩斑斓
  4. 用utraISO刻录windows10系统并用U盘安装,用easyBCD安装ubuntu18.04
  5. 数据运营平台-基础架构
  6. 这是我见过最牛逼的滑动加载前端框架
  7. 第三届“拳头奖”投票进行时 Devstore志在必得
  8. JDBC读取Oracle的US7ASCII编码中文乱码及不同编码下汉字占用字节的问题
  9. java 仿易企秀_鲁班H5(开源可视化搭建系统, 可以理解为开源版本易企秀)核心实现原理解析...
  10. 鸿蒙os系统测评,鸿蒙OS 2首批评价出炉,看已升级用户都怎么说的