转自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条件随机场简介<转>的更多相关文章

  1. CRF条件随机场简介

    CRF(Conditional Random Field) 条件随机场是近几年自然语言处理领域常用的算法之一,常用于句法分析.命名实体识别.词性标注等.在我看来,CRF就像一个反向的隐马尔可夫模型(H ...

  2. 【算法】CRF(条件随机场)

    CRF(条件随机场) 基本概念 场是什么 场就是一个联合概率分布.比如有3个变量,y1,y2,y3, 取值范围是{0,1}.联合概率分布就是{P(y2=0|y1=0,y3=0), P(y3=0|y1= ...

  3. CRF 条件随机场工具包

    CRF - 条件随机场 工具包(python/c++) 项目案例 ConvCRF+FullCRF https://github.com/MarvinTeichmann/ConvCRF 需要的包Opti ...

  4. 标注-CRF条件随机场

    1 概率无向图模型1.1 模型定义1.2 因子分解2 条件随机场的定义2.2 条件随机场的参数化形式2.3 条件随机场的简化形式2.4 条件随机场的矩阵形式 3 条件随机场的概率计算问题 3.1 前向 ...

  5. CRF条件随机场

    CRF的进化 https://flystarhe.github.io/2016/07/13/hmm-memm-crf/参考: http://blog.echen.me/2012/01/03/intro ...

  6. Machine Learning系列--CRF条件随机场总结

    根据<统计学习方法>一书中的描述,条件随机场(conditional random field, CRF)是给定一组输入随机变量条件下另一组输出随机变量的条件概率分布模型,其特点是假设输出 ...

  7. Viterbi(维特比)算法在CRF(条件随机场)中是如何起作用的?

    之前我们介绍过BERT+CRF来进行命名实体识别,并对其中的BERT和CRF的概念和作用做了相关的介绍,然对于CRF中的最优的标签序列的计算原理,我们只提到了维特比算法,并没有做进一步的解释,本文将对 ...

  8. CRF条件随机场在机器视觉中的解释

    CRF是一种判别模型,本质是给定观察值集合的马尔科夫随机场(MRF),而MRF是加了马尔科夫性质限制的随机场. 马尔科夫性质:全局.局部.成对 随机场:看做一组随机变量的集合(对应于同一个样本空间), ...

  9. CRF(条件随机场)与Viterbi(维特比)算法原理详解

    摘自:https://mp.weixin.qq.com/s/GXbFxlExDtjtQe-OPwfokA https://www.cnblogs.com/zhibei/p/9391014.html C ...

随机推荐

  1. 利用memoize缓存到Redis出现多个参数同一个结果

    在为后端输出加入Redis缓存的过程中出现的问题. 在我利用Flask-restful架构的后端中,理所当然的利用装饰器marshal_with对我的返回数据进行格式化输出. 举个最简单的例子: fr ...

  2. 洛谷 - P1631 - 序列合并 - 堆

    https://www.luogu.org/problemnew/show/P1631 序列a中每个数首先都和序列b中的最小元素配对(虽然好像不是很必要这么早插进来?) 每次从堆顶取出最小的和输出答案 ...

  3. [Lintcode]Word Squares(DFS|字符串)

    题意 略 分析 0.如果直接暴力1000^5会TLE,因此考虑剪枝 1.如果当前需要插入第i个单词,其剪枝如下 1.1 其前缀(0~i-1)已经知道,必定在前缀对应的集合中找 – 第一个词填了ball ...

  4. css 实现垂直水平居中常用方法

    html <div class="outer"> <div class="inner"></div> </div> ...

  5. php 判断手机号运营商

    /* 移动:134.135.136.137.138.139.150.151.157(TD).158.159.187.188 联通:130.131.132.152.155.156.185.186 电信: ...

  6. 洛谷P2905 [USACO08OPEN]农场危机Crisis on the Farm

    P2905 [USACO08OPEN]农场危机Crisis on the Farm 题目描述 约翰和他的奶牛组建了一只乐队“后街奶牛”,现在他们正在牧场里排练.奶牛们分成一堆 一堆,共1000)堆.每 ...

  7. 2014-10-22 NOIP模拟赛

    1 1 .传教士 (bishop) 问题描述:panzhili 王国的疆土恰好是一个矩形,为了管理方便,国王 jjs 将整个疆土划分成 N*M 块大小相同的区域.由于 jjs 希望他的子民也能信教爱教 ...

  8. nodejs ejs 引擎脱离express使用

    之前用ejs都是使用express创建项目,然后在app.js中配置好的ejs直接使用即可,但是最近项目中使用的手工路由模式,脱离了express,不知道怎么用了,去扒ejs的网站,各种资料,也是懵懵 ...

  9. jsp学习与提高(四)——JSP Session 处理

    JSP Session HTTP是无状态协议,这意味着每次客户端检索网页时,都要单独打开一个服务器连接,因此服务器不会记录下先前客户端请求的任何信息. 有三种方法来维持客户端与服务器的会话: Cook ...

  10. Python小世界:彻底搞懂Python一切皆对象!!!

    前言 犹记得当初学习Python的时候,对于Python一切皆对象很是懵逼,因为Python是面向对象的动态型语言,而在函数及高阶函数的应用中,如若对于一切皆对象不是有很透彻的了解,基础不是那么牢固的 ...