自然语言处理(NLP)学习笔记——HMM与CRF模型
一、HMM模型
1、HMM模型的输入和输出
HMM(Hidden Markov Model),中文称作隐含马尔可夫模型,因俄国数学家马尔可夫而得名。它一般以文本序列数据为输入,以该序列对应得隐含序列为输出。
什么是隐含序列:
序列数据中每个单元包含得隐性信息,这些隐性信息之间也存在一定关联。
举个列子:
给定一段文本: "人生该如何起头"我们看到的这句话可以叫做: 观测序列我们可以将这句话以词为单位进行划分得到:["人生", "该", "如何", "起头"]那么每个词对应的词性就是它的隐含序列, 如: ["n", "r", "r", "v"]
2、HMM模型的作用
在NLP领域,HMM用来解决文本序列标注问题。如分词,词性标注,命名实体识别都可以看作是序列标注问题。
HMM模型使用过程简述
首先,HMM模型表示为:lambda = HMM(A, B, pi),其中A, B, pi都是模型的参数,分别称作:转移概率矩阵,发射概率矩阵和初始概率矩阵。
接着,开始训练HMM模型,语料就是事先准备好的一定数量的观测序列及其对应的隐含序列,通过极大似然估计求得一组参数,使由观测序列到对应隐含序列的概率最大。
在训练过程中,为了简化计算,马尔可夫提出一种假设:隐含序列中每个单元的可能性只与上一个单元有关,这个假设就是著名的隐含假设。
训练后,就得到了具备预测能力的新模型:lambda = HMM(A, B, pi), 其中的模型参数已经改变。
之后给定输入序列(x1, x2, ..., xn), 经过模型计算lambda(x1, x2, ..., xn)得到对应隐含序列的条件概率分布。
最后, 使用维特比算法从隐含序列的条件概率分布中找出概率最大的一条序列路径就是我们需要的隐含序列: (y1, y2, ..., yn).
二、CRF模型
1、CRF模型的输入和输出
CRF(Conditional Random Fields), 中文称作条件随机场, 同HMM一样, 它一般也以文本序列数据为输入, 以该序列对应的隐含序列为输出.
2、CRF模型的作用
同HMM一样, 在NLP领域, CRF用来解决文本序列标注问题. 如分词, 词性标注, 命名实体识别.
3、CRF模型使用过程简述
首先, CRF模型表示为: lambda = CRF(w1, w2, ..., wn), 其中w1到wn是模型参数.
接着, 我们开始训练CRF模型, 语料同样是事先准备好的一定数量的观测序列及其对应的隐含序列.
与此同时我们还需要做人工特征工程, 然后通过不断训练求得一组参数, 使由观测序列到对应隐含序列的概率最大.
训练后, 我们就得到了具备预测能力的新模型: lambda = CRF(w1, w2, ..., wn), 其中的模型参数已经改变.
之后给定输入序列(x1, x2, ..., xn), 经过模型计算lambda(x1, x2, ..., xn)得到对应隐含序列的条件概率分布.
最后, 还是使用维特比算法从隐含序列的条件概率分布中找出概率最大的一条序列路径就是我们需要的隐含序列: (y1, y2, ..., yn).
三、HMM与CRF模型对比
1、HMM与CRF模型之间差异
HMM模型存在隐马假设, 而CRF不存在, 因此HMM的计算速度要比CRF模型快很多, 适用于对预测性能要求较高的场合.
同样因为隐马假设, 当预测问题中隐含序列单元并不是只与上一个单元有关时, HMM的准确率会大大降低, 而CRF不受这样限制, 准确率明显高于HMM.
2、HMM和CRF的发展现状
HMM和CRF模型曾在多种序列任务中表现出色, 伴随NLP工程师度过漫长的一段时期.
但由于近年来深度学习发展迅速, 经典序列模型, 如HMM和CRF, 已经开始慢慢淡出人们的视野.
因此, 我们这里也是对其做了简洁的总结知识, 让大家对其有一定的基本认识.
自然语言处理(NLP)学习笔记——HMM与CRF模型相关推荐
- 利用计算机技术实现对文本篇章,自然语言处理NLP学习笔记一:概念与模型初探...
前言 先来看一些demo,来一些直观的了解. 自然语言处理: 可以做中文分词,词性分析,文本摘要等,为后面的知识图谱做准备. 知识图谱: 还有2个实际应用的例子,加深对NLP的理解 九歌机器人: 微软 ...
- 自然语言处理NLP学习笔记三:使用Django做一个NLP的Web站点
前言: 前面我们已经能初步实现一个中文自然处理语言的模型了,但交互界面是命令行的,不太友好. 如果想做一个类似http://xiaosi.trs.cn/demo/rs/demo的界面,那就还需要继续往 ...
- WinSock学习笔记3:Select模型
WinSock学习笔记3:Select模型 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, G ...
- CUDA学习笔记之 CUDA存储器模型
CUDA学习笔记之 CUDA存储器模型 标签: cuda存储bindingcache编程api 2010-12-14 01:33 1223人阅读 评论(0) 收藏 举报 分类: CUDA(26) GP ...
- Python数据挖掘学习笔记】九.回归模型LinearRegression简单分析氧化物数据
#2018-03-23 16:26:20 March Friday the 12 week, the 082 day SZ SSMR [Python数据挖掘学习笔记]九.回归模型LinearRegre ...
- 2020-4-20 深度学习笔记20 - 深度生成模型 3 (实值数据上的玻尔兹曼机)
第二十章 深度生成模型 Deep Generative Models 中文 英文 2020-4-17 深度学习笔记20 - 深度生成模型 1 (玻尔兹曼机,受限玻尔兹曼机RBM) 2020-4-18 ...
- 2020-4-22 深度学习笔记20 - 深度生成模型 5 (有向生成网络--sigmoid信念网络/可微生成器网络/变分自编码器VAE/生产对抗网络GAN/生成矩匹配网络)
第二十章 深度生成模型 Deep Generative Models 中文 英文 2020-4-17 深度学习笔记20 - 深度生成模型 1 (玻尔兹曼机,受限玻尔兹曼机RBM) 2020-4-18 ...
- PowerDesigner 15学习笔记:十大模型及五大分类
原文:PowerDesigner 15学习笔记:十大模型及五大分类 个人认为PowerDesigner 最大的特点和优势就是1)提供了一整套的解决方案,面向了不同的人员提供不同的模型工具,比如有针对企 ...
- 【K210】K210学习笔记六——MaixHub在线模型训练识别数字
[K210]K210学习笔记六--MaixHub在线模型训练识别数字 前言 K210准备工作 数据的获取 MaixHub如何在线训练模型 训练模型在K210上的测试 小结 前言 本人大四学生,电赛生涯 ...
最新文章
- jar docker镜像不能启线程_使用docker部署SpringCloud项目
- 学习lulu之——tips 提示
- S4:分布式流计算平台
- DC保存至BMP图像
- java命令框编译代码的方式_在命令行模式下如何编译运行Java代码
- 玩转oracle 11g(45):关系数据库
- 可选版本 安装软件_【Linux软件】在Deepin系统下安装LibreOffice 6.1.4版本的方法
- LINQ的Java等效项是什么? [关闭]
- Rust —— 一门没有GC的语言
- 台湾大学生来厦门参访交流
- Hadoop学习笔记—5.自定义类型处理手机上网日志
- 盘点那些Wifi破解姿势(1)
- Hexo博客之速度优化
- NOI国家集训队论文分类整理
- 多元函数第六:连续函数(5)康托尔(Cantor)闭集套定理
- Centos 7.5 1804 镜像下载
- infor wms 中英文对照_视听盛宴 I纸牌屋揭露美国政治权力运作(16中英、纯英、无字幕可切换视频+中英文全剧本+全季音频)...
- 爬取实习僧工作岗位信息
- js 正则知识汇总(转)
- 华为eNSP的介绍与简单使用
热门文章
- DB9 在 RS232 通讯上的应用接法详解
- 洛谷oj题单【入门1】顺序结构-入门难度(Java)
- 【Keras】简单线性回归模型
- 精通Qt4编程(第2版) 完整清晰PDF+源码
- 【SQL开发实战技巧】系列(九):一个update误把其他列数据更新成空了?Merge改写update!给你五种删除重复数据的写法!
- 蓝桥杯.Scratch.高级组.样题及答案
- 数字逻辑电路复习课时六(常用集成器件)
- 【安全牛学习笔记】课时94 SQLMAP自动注入-REQUEST和SQLMAP自动注入-OPTIMIZATION
- Linux命令_pstree 显示进程树
- 耗时两个月开发的弯管机三维模型自动转档软件