CRF条件随机场简介<转>
转自http://hi.baidu.com/hehehehello/item/3b0d1f8ba1c2e5c698255f89
CRF(Conditional Random Field) 条件随机场是近几年自然语言处理领域常用的算法之一,常用于句法分析、命名实体识别、词性标注等。在我看来,CRF就像一个反向的隐马尔可夫模型(HMM),两者都是用了马尔科夫链作为隐含变量的概率转移模型,只不过HMM使用隐含变量生成可观测状态,其生成概率由标注集统计得到,是一个生成模型;而CRF反过来通过可观测状态判别隐含变量,其概率亦通过标注集统计得来,是一个判别模型。由于两者模型主干相同,其能够应用的领域往往是重叠的,但在命名实体、句法分析等领域CRF更胜一筹。当然你并不必须学习HMM才能读懂CRF,但通常来说如果做自然语言处理,这两个模型应该都有了解。
>>CRF详细的介绍和公式推导推荐这个PPT教程:http://wenku.baidu.com/view/f32a35d2240c844769eaee55.html。
>>另外推荐一篇HMM应用于中文分词的一篇易读的入门教程,非常形象:http://blog.sina.com.cn/s/blog_68ffc7a40100uebv.html
下文仅针对专门做自然语言处理的同学做一个快速形象的上手简介,并指出最重要的特征。这里假设你已经有基本的自然语言处理概念和马尔科夫链的基本知识。CRF本质上是隐含变量的马尔科夫链+可观测状态到隐含变量的条件概率。说隐含变量和可观测状态很抽象,我们以词性标注为例(如果你不知道什么是词性标注,请百度一下),在词性标注中词性标签就是隐含变量,具体的词语就是可观测状态,词性标注的目的是通过可观测到的一个个单词推断出来每个单词应该被赋予的词性标签。下文将用词性标签和词语代替上述两个名词。
先说马尔科夫链,这里体现了CRF的随机场特征(准确的说是马尔科夫随机场)。这里CRF和HMM都假设词性标签是满足马尔科夫性的,即当前词性仅和上一个词性有概率转移关系而与其它位置的词性无关,比如形容词后面跟形容词的概率是0.5,跟修饰性“的”的概率为0.5,跟动词的概率为0。因此,通过在一个标注集上进行统计,我们很容易得到一个概率转移矩阵,即任意词性A后紧邻任意词性B的概率都可以被统计出来。对HMM来说这部分就结束了,对CRF来说,可以在二维条件转移矩阵基础上再增加一维词语特征,如“当AB相邻,A是动词且B单词长度超过3时,B是名词的概率是xx"。大家可能注意到了马尔科夫链的窗口为1,即它仅考虑上1个词,这不见得是最合理的。这其实是一个对特征稀疏问题的折中,可以想象仅对两个词性AB统计P(B|A)能够得到很多数据的反馈,而如果统计长度为6的窗口,如P(G | ABCDEF)就会遇到数据稀疏的问题,因为很可能序列ABCDEF根本就没有在数据集中出现过.数据稀疏对机器学习的影响是巨大的,因此马尔科夫链实际以损失一定全局信息的基础上换来了更饱满的数据,实验证明这笔交易在词性标注时是赚的。
再说词性与词语直接的映射概率,这里体现了CRF的条件特征。如果是HMM,这里会直接统计词性-->单词的条件概率矩阵,比如 ”动词“ 生成 ”发射“ 的概率可能为1.5%,而生成”微软“ 的概率为0. 然后对于每一种可能的词性序列结合与条件概率相乘就能得到每一个候选序列的生成概率,然而取概率最高的作为标注结果即可。而CRF正好反过来,CRF通过发掘词语本身的特征(如长度,大小写,匹配特定词表等,也可以包括词语本身),把每个词语转化成为一个一维特征向量(vector),然后对于每个特征计算特征到词性的条件概率,这样每个词语对候选词性的条件概率即为所有特征条件概率的加和。比如我们假设特征向量只有两个,且P ( ”词语长度>3" --> 名词词性)的概率为0.9, P("词语位于句子末尾“ --> 名词词性)概率为0.4,且一个词恰好满足这两个特征,则其为名词的条件概率为 (0.9 + 0.4) / 2 = 0.65. 这样,CRF根据这个条件转移数值再结合词性的马尔科夫特性,就可以使用与HMM类似的方法寻找最优的词性标注序列了。
为了装得更学术一点本想再贴一个公式搞了半天没贴成功还是算了不过在上面的PPT链接中大家可以找到所以就不写了。总的来说CRF优于HMM的地方在于,它可以引入更多的特征,包括词语本身特征和词语所在上下文的特征,而非单词本身。从某种角度讲,它结合了HMM和最大熵方法。本人也刚刚接触CRF,因此都是从最浅显的角度来介绍的,如果有什么说错的地方欢迎指正啊~ 写这么多不容易,有大牛路过的话请轻拍哈~
CRF条件随机场简介<转>的更多相关文章
- CRF条件随机场简介
CRF(Conditional Random Field) 条件随机场是近几年自然语言处理领域常用的算法之一,常用于句法分析.命名实体识别.词性标注等.在我看来,CRF就像一个反向的隐马尔可夫模型(H ...
- 【算法】CRF(条件随机场)
CRF(条件随机场) 基本概念 场是什么 场就是一个联合概率分布.比如有3个变量,y1,y2,y3, 取值范围是{0,1}.联合概率分布就是{P(y2=0|y1=0,y3=0), P(y3=0|y1= ...
- CRF 条件随机场工具包
CRF - 条件随机场 工具包(python/c++) 项目案例 ConvCRF+FullCRF https://github.com/MarvinTeichmann/ConvCRF 需要的包Opti ...
- 标注-CRF条件随机场
1 概率无向图模型1.1 模型定义1.2 因子分解2 条件随机场的定义2.2 条件随机场的参数化形式2.3 条件随机场的简化形式2.4 条件随机场的矩阵形式 3 条件随机场的概率计算问题 3.1 前向 ...
- CRF条件随机场
CRF的进化 https://flystarhe.github.io/2016/07/13/hmm-memm-crf/参考: http://blog.echen.me/2012/01/03/intro ...
- Machine Learning系列--CRF条件随机场总结
根据<统计学习方法>一书中的描述,条件随机场(conditional random field, CRF)是给定一组输入随机变量条件下另一组输出随机变量的条件概率分布模型,其特点是假设输出 ...
- Viterbi(维特比)算法在CRF(条件随机场)中是如何起作用的?
之前我们介绍过BERT+CRF来进行命名实体识别,并对其中的BERT和CRF的概念和作用做了相关的介绍,然对于CRF中的最优的标签序列的计算原理,我们只提到了维特比算法,并没有做进一步的解释,本文将对 ...
- CRF条件随机场在机器视觉中的解释
CRF是一种判别模型,本质是给定观察值集合的马尔科夫随机场(MRF),而MRF是加了马尔科夫性质限制的随机场. 马尔科夫性质:全局.局部.成对 随机场:看做一组随机变量的集合(对应于同一个样本空间), ...
- CRF(条件随机场)与Viterbi(维特比)算法原理详解
摘自:https://mp.weixin.qq.com/s/GXbFxlExDtjtQe-OPwfokA https://www.cnblogs.com/zhibei/p/9391014.html C ...
随机推荐
- 微信公众号授权登录,提示“redirect_uri 参数错误”
做微信公众号开发授权登录的时候遇到的坑... 后台服务用node,index.js相关代码如下: const oauth = new OAuth(conf.appid, conf.appsecret) ...
- Linux之vim基本命令操作
安装vim(yum -y install vim) 三种工作模式(命令模式.输入模式.编辑模式) 打开文件( vi ) 查找文本( / ) 替换文本 删除文本( dd 删除光标所在行 ) 复制文本 去 ...
- lca最近公共祖先(st表/倍增)
大体思路 1.求出每个元素在树中的深度 2.用st表预处理的方法处理出f[i][j],f[i][j]表示元素i上方第2^j行对应的祖先是谁 3.将较深的点向上挪,直到两结点的深度相同 4.深度相同后, ...
- 洛谷P3959 宝藏(状压dp)
传送门 为什么感觉状压dp都好玄学……FlashHu大佬太强啦…… 设$f_{i,j}$表示当前选的点集为$i$,下一次要加入的点集为$j$时,新加入的点和原有的点之间的最小边权.具体的转移可以枚举$ ...
- python 之 函数 生成器
5.10 生成器 函数内有yield关键字,再调用函数就不会立刻执行函数体代码,会得到一个返回值,该返回值就是生成器,生成器本质就是迭代器 def chicken(): print('===== ...
- jQuery EasyUI/TopJUI创建日期时间输入框
jQuery EasyUI/TopJUI创建日期时间输入框 日期时间输入框组件 HTML 和日期输入框类似,日期时间输入框允许用户选择日期和指定的时间并按照指定的输出格式显示.相比日期输入框,它在下拉 ...
- SP14932 LCA - Lowest Common Ancestor
Description: 一棵树是一个简单无向图,图中任意两个节点仅被一条边连接,所有连通无环无向图都是一棵树.\(-Wikipedia\) 最近公共祖先(\(LCA\))是--(此处省去对\(LCA ...
- 解决 程序报 SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". 错误
调试程序出现如下错误: SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".SLF4J: Default ...
- [Java]HashSet的工作原理
概述 This class implements the Set interface, backed by a hash table (actually a HashMap instance). It ...
- ES5数组遍历
reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值. array.reduce(function(total, currentValue, curren ...