条件随机场是近几年自然语言处理领域常用的算法之一,常用于句法分析、命名实体识别、词性标注等。在我看来,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(Conditional Random Field)的更多相关文章

  1. 条件随机场理论分析CRF(Conditional Random Field)

  2. 条件随机场conditional random field

    主要翻译自http://blog.echen.me/2012/01/03/introduction-to-conditional-random-fields/,原作者是MIT的大神,加入了一些我自己的 ...

  3. NLP —— 图模型(二)条件随机场(Conditional random field,CRF)

    本文简单整理了以下内容: (一)马尔可夫随机场(Markov random field,无向图模型)简单回顾 (二)条件随机场(Conditional random field,CRF) 这篇写的非常 ...

  4. 条件随机场(conditional random field,CRF)模型初探

    0. 引言 0x1:为什么会有条件随机场?它解决了什么问题? 在开始学习CRF条件随机场之前,我们需要先了解一下这个算法的来龙去脉,它是在什么情况下被提出的,是从哪个算法演进而来的,它又解决了哪些问题 ...

  5. 条件随机场(Conditional random field,CRF)

  6. [Scikit-learn] Dynamic Bayesian Network - Conditional Random Field

    李航,第十一章,条件随机场 参考:[PGM] Markov Networks 携代码:用 Python 通过马尔可夫随机场(MRF)与 Ising Model 进行二值图降噪[推荐!] CRF:htt ...

  7. 条件随机场(Conditional random field)

    条件随机场真是把我给折磨坏了啊,本以为一本小小的<统计学习方法>攻坚剩下最后一章,心情还是十分愉悦的,打算一口气把它看完,结果真正啃起来真是无比的艰难啊,每一句对我都好像是天书一般,怎么这 ...

  8. 随机场(Random field)

    一.随机场定义 http://zh.wikipedia.org/zh-cn/随机场 随机场(Random field)定义如下: 在概率论中, 由样本空间Ω = {0, 1, …, G − 1}n取样 ...

  9. (转)Image Segmentation with Tensorflow using CNNs and Conditional Random Fields

    Daniil's blog Machine Learning and Computer Vision artisan. About/ Blog/ Image Segmentation with Ten ...

随机推荐

  1. 详细解说Tomcat 设置虚拟路径的几种方法及为什么设置虚拟路径

    说明:此次使用的是Tomcat 7.0 很多朋友都会很疑惑,既然我们都知道在Tomcat服务器上部署项目只要将项目打包,然后放到webapps目录下就可以了,为什么还需要配置虚拟路径?的确,把项目放到 ...

  2. Spring (一)

    Spring是一个开源框架,是一个基于IOC和AOP来架构多层的JavaEE 架构 默认是单例模式 IOC就是 Inversion of Control public class Girl { pri ...

  3. Tp3.2 复合查询

    我们常常有这样的需求,比如搜索. 搜索出,标题,子标题,内容中包含某某关键字. 这就要and,or结合使用了. $where = ['is_show'=>1,'status'=>1]; / ...

  4. 力扣(LeetCode)58. 最后一个单词的长度

    给定一个仅包含大小写字母和空格 ' ' 的字符串,返回其最后一个单词的长度. 如果不存在最后一个单词,请返回 0 . 说明:一个单词是指由字母组成,但不包含任何空格的字符串. 示例: 输入: &quo ...

  5. css 可继承属性 display:inline-block 历史

    1. css 可继承属性 1.1 font font-family:规定元素的字体系列font-weight:设置字体的粗细font-size:设置字体的尺寸font-style:定义字体的风格fon ...

  6. linux c/c++ 获取文件大小

    linux c/c++ 获取文件大小 #include <sys/stat.h> int FileSize(const char* fname) { struct stat statbuf ...

  7. js下数据库 nedb lokijs

    一个7千颗星nedb.一个3千 lokijs  https://rawgit.com/techfort/LokiJS/master/jsdoc/tutorial-Persistence%20Adapt ...

  8. Mac python 环境配置

    问题:mac 只带了python2.7,要想使用高版本的Python,如python3.x,只能再次安装了,这样就会遇到 两个版本的切换问题了 如下图 : 执行 which python 如下图,查看 ...

  9. 有序广播和标准广播 --Android开发

    一.标准广播和有序广播也很容易理解的. 标准广播: (1)通过sendBroadcast()方法发送 (2)通过异步方式发送,广播接收者的执行顺序是不明确的 有序广播: (1)通过sendOrderB ...

  10. 安装EF实体模型框架

    Data Access and Storage > 学习 > Entity Framework > 开始操作 > 空间 - EF 设计器 本视频和分步演练介绍如何使用实体框架设 ...