http://blog.csdn.net/xmdxcsj/article/details/48790317

Crf模型

1.   定义

一阶(只考虑y前面的一个)线性条件随机场:

相比于最大熵模型的输入x和输出y,crf模型的输入输出都是序列化以后的矢量,是对最大熵模型的序列扩展。

相比于最大熵模型的另外一个不同是,crf多出了一个维度j(j表示序列x的位置),即任意一个输出yi,都跟所有的输入x有关。

经过变换,crf概率模型可以转化为:

先求一个位置x的所有特征,再求所有位置x

先求一个维度特征所有位置,再求所有维度的特征

2.   特征

假设

输入x:北京天气

输出y:BMES

其中的一条训练语料及标注如下:

北 B

京 M

天 M

气 E

设计特征如下:

# Unigram

U00:%x[-2,0]

U01:%x[-1,0]

U02:%x[0,0]

U03:%x[1,0]

U04:%x[2,0]

# Bigram

B

那么对于位置“天”,训练语料对应的特征为:

U00:%x[-2,0]         北

U01:%x[-1,0]         京

U02:%x[0,0]          天

U03:%x[1,0]          气

U04:%x[2,0]          B+1

单独拿出来某一个特征,比如说“U02:%x[0,0]”来分析,对于整条训练语料来说,该特征可以表示如下:

f(B|U02:北) = 1

f(M|U02:京) = 1

f(M|U02:天) = 1

f(E|U02:气) = 1

特征函数有两种模板:

1.      Unigram template

对应于状态特征Sl 。特征函数的个数有L*N个,其中L表示类别的种类个数,N表示根据模板扩展后的输入x的种类个数。

2.      bigram template

对应于转移特征tk。转移特征函数的引入了yi-1(上一个token的输出类别),所以特征函数的个数为L*L*N。

如果只有一个B的话,代表概率对于所有的输入序列X都是一样的,所有特征函数的个数为N*N。

3.   模型结构

模型宏定义:

version:100

cost-factor:1               #代价参数,过大会导致过拟合

maxid: 69                  #特征函数的个数

xsize: 1                    #标记的列数

输出y的结果:

B

E

M

符合模板的所有x:

15U00:_B-1

0U00:_B-2

45 U00:京

30 U00:北

3U01:_B-1

33 U01:京

18 U01:北

48 U01:天

21 U02:京

6 U02:北

36 U02:天

51 U02:气

54U03:_B+1

9 U03:京

24 U03:天

39 U03:气

42U04:_B+1

57U04:_B+2

12 U04:天

27 U04:气

特征函数的权重:

0.3548558043014228

-0.1550525254028647

-0.1998032788985595

0.3548558043014228

-0.1550525254028647

-0.1998032788985595

0.3548558043014228

-0.1550525254028647

-0.1998032788985595

0.3548558043014228

-0.1550525254028647

-0.1998032788985595

…….

分成两部分的概率值,总共69个权重,其中9(3*3)个是转移概率,对应于模板的Bigram;剩下的60个权重是unigram:20(特征函数个数)*3(输出标记个数)。

4.   训练模型

目标函数:训练数据的对数似然函数

使用改进的迭代尺度法improved iterative scaling (IIS)

5.   求解概率

类似于hmm,使用维特比算法


对应于以上模型,测试语句为:

北天气

对应的解码输出为:

#0.488230

北  B  B/0.630640  B/0.630640  E/0.081250 M/0.288110

天  M M/0.930957  B/0.033202  E/0.035841 M/0.930957

气  E   E/0.811839 B/0.059784 E/0.811839  M/0.128377

第一行代表整句标注的概率,下面是每一个词对应的所有标注的边际概率值。

6.   使用

CRF++:

CRF++主要用于标注数据和切分数据,常见的应用有词性标注、命名实体识别、信息提取和文本组块分析、切词等。

使用stl和LBFGS算法,可以支持nbest输出

总结

1.      对比

hmm假设x之间相互独立,而且y只和前一个y有关。

MEMM模型相比于hmm,取消了x之间相互独立的假设,但是存在标记偏移的问题。

Crf模型取消了x之间相互独立的假设,当前y和前后y都有关联,解决了MEMM的标记偏移问题。

2.      标记偏移问题

假设开始的观察值为o1,此时对应的状态的有两个s1和s2,如图所示,即使实际上由s1到s2的概率要高于s2到s2,但是由于概率归一化的问题,从s1状态出发边的概率和为1,从s2状态出发边的概率和为1,状态对应的出边的个数不同,从而导致竞争不合理的存在。

Hmm不存在这个问题:由于其不仅与转移概率有关,还跟对应的生成概率有关,生成概率特别小可以避免这种竞争不合理情况的存在。当MEMM状态的出边只有一条的时候,会忽略observation。

The critical difference betweenCRFs and MEMMs is that a MEMM uses per-state exponential models

for the conditional probabilitiesof next states given the current state, while a CRF has a single exponentialmodel for the joint probability of the entire sequence of labels given theobservation sequence. Therefore, the weights of different features at differentstates can be traded off against each other.

3.      Crf模型的特点

优点:

序列断句和标注的区分性模型

综合了任意组合、过去未来的特征

基于动态编程的训练和解码方法

目标函数是凸函数,可以找到全局最优

缺点:

相比于MEMM,收敛速度慢,可以使用MEMM训练的结果作为参数起始值。

参考文献

《统计学习方法》李航

Conditional Random Fields: ProbabilisticModels for Segmenting and Labeling Sequence Data

Classical Probabilistic Models and ConditionalRandom Fields

Conditional Random Fields: An Introduction

基于条件随机场的古汉语自动断句与标点方法

基于前后文n-gram模型的古汉语句子切分

https://taku910.github.io/crfpp/#source

http://www.hankcs.com/nlp/the-crf-model-format-description.html

http://www.52nlp.cn/中文分词入门之字标注法4

http://www.xuebuyuan.com/1635331.html

条件随机场CRF简介的更多相关文章

  1. 条件随机场(CRF) - 1 - 简介(转载)

    转载自:http://www.68idc.cn/help/jiabenmake/qita/20160530618222.html 首先我们先弄懂什么是"条件随机场",然后再探索其详 ...

  2. 条件随机场(CRF) - 1 - 简介

    声明: 1,本篇为个人对<2012.李航.统计学习方法.pdf>的学习总结,不得用作商用,欢迎转载,但请注明出处(即:本帖地址). 2,由于本人在学习初始时有很多数学知识都已忘记,所以为了 ...

  3. 条件随机场(CRF) - 2 - 定义和形式(转载)

    转载自:http://www.68idc.cn/help/jiabenmake/qita/20160530618218.html 参考书本: <2012.李航.统计学习方法.pdf> 书上 ...

  4. 条件随机场(CRF) - 2 - 定义和形式

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/xueyingxue001/article/details/51498968声明: 1,本篇为个人对& ...

  5. 条件随机场CRF(一)从随机场到线性链条件随机场

    条件随机场CRF(一)从随机场到线性链条件随机场 条件随机场CRF(二) 前向后向算法评估观察序列概率(TODO) 条件随机场CRF(三) 模型学习与维特比算法解码(TODO) 条件随机场(Condi ...

  6. 条件随机场CRF(三) 模型学习与维特比算法解码

    条件随机场CRF(一)从随机场到线性链条件随机场 条件随机场CRF(二) 前向后向算法评估标记序列概率 条件随机场CRF(三) 模型学习与维特比算法解码 在CRF系列的前两篇,我们总结了CRF的模型基 ...

  7. 条件随机场CRF(二) 前向后向算法评估标记序列概率

    条件随机场CRF(一)从随机场到线性链条件随机场 条件随机场CRF(二) 前向后向算法评估标记序列概率 条件随机场CRF(三) 模型学习与维特比算法解码 在条件随机场CRF(一)中我们总结了CRF的模 ...

  8. 条件随机场 (CRF) 分词序列谈之一(转)

    http://langiner.blog.51cto.com/1989264/379166 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.ht ...

  9. 条件随机场CRF

    条件随机场(CRF)是给定一组输入随机变量X的条件下另一组输出随机变量Y的条件概率分布模型,其特点是假设输出随机变量构成马尔科夫随机场.实际上是定义在时序数据上的对数线性模型.条件随机场属于判别模型. ...

随机推荐

  1. java的基本数据类型特征

    java的数据类型分为基本数据类型和引用数据类型. 基本数据类型分为数值型.字符型(char).布尔型(boolean) 数值型变量 1.整数型 类型 占用存储空间 表示范围 byte 1字节Byte ...

  2. 菜鸟学习SSH——目录

    菜鸟学习Struts--配置Struts环境 菜鸟学习Struts--简易计算器 菜鸟学习Struts--bean标签库 菜鸟学习Struts--Scope属性 菜鸟学习Struts--国际化 菜鸟学 ...

  3. android开发系列之友盟统计集成

    相比大家都遇到这种情况,当我们的app上线之后,我们想要实时的跟踪了解到app里面的bug情况.新增用户情况.用户相关的行为属性情况等.但是如果自己在app里面去开发集成这些功能,一方面开发工作量还挺 ...

  4. android开发系列之6*0.9不等于5.4

    昨天晚上我们客户端平台上面曝出了一个很奇诡的bug,那就是本来在客户端里面有个商品买6元,但是因为碰巧赶上打9折,这个时候我们很自然的处理就是6*0.9.好吧你以为so easy的事情,其实就出错了, ...

  5. 自己编写基于MVC的轻量级PHP框架

    做WEB开发已有三年,每次都写重复的东西, 因此,想自己写一下框架,以后开发方便.本人之前asp.NET一年开发,jsp半年,可是后来因为工作的原故换成PHP.其实很不喜欢PHP的语法.还有PHP的函 ...

  6. 57.DDR3的系统时钟编译错误

    错误:Xst:2033 - Port I of Input buffer ddr3_mig/memc3_infrastructure_inst/se_input_clk.u_ibufg_sys_clk ...

  7. Unity3d之Mecanim(新版动画系统)

    1,动画系统配置,2,代码控制动画 原文地址:http://blog.csdn.net/dingkun520wy/article/details/51247491 1,动画系统配置 创建Animato ...

  8. Android -- NDK开发入门

    第一步,建立一个普通的Android项目HelloNDK,然后在与src同一级的目录下新建一个jni目录: 第二步,在jni目录下新建一个hello_ndk.c文件,代码如下: #include &l ...

  9. Daily Scrum4

    今天我们小组开会内容分为以下部分: part1:与负责这个项目的其他组进行会晤; part2:组内成员召开了简短会议,进行工作安排; part3:总结今日工作,对项目遇到的问题商讨解决办法; ◆Par ...

  10. LabView调用C#混合模式dll

    在一些特定要求下,我们的C#可能需要制作dll给LabView进行调用,并且我们不能够保证C#的程序是完全自己写而不调用第三方的dll库.很多时候我们需要使用诸如Sqlite.Net.AForge.N ...