条件随机场-应用

  今天介绍CRFs在中文分词中的应用

  工具:CRF++,可以去 https://taku910.github.io/crfpp/ 下载,训练数据和测试数据可以考虑使用bakeoff2005,这是链接 http://sighan.cs.uchicago.edu/bakeoff2005/

  首先需要了解一些概念

  字标记法——统计分词模型常用的方法,可以将分词问题转化为分类问题。这里我们介绍一下4-tag字标记法,4-tag指的是文档中的每个字都对应一个标记,一共有4类标记,分别是:B、M、E、S,分别代表一个字处于词的开始位置、中间位置、 结束位置,以及一个单子构成一个词。以“我是中国人”为例来说明,标记完的结果是

我  S

是  S

中  B

国  M

人  E

  这样给文档中的每个字都赋予一个标记,那么我们可以将分词任务视为一个分类问题--将文档中的每个字分别赋予一个类标记。

然而,如果将分词仅仅视为一个分类任务来考虑,那么得到的结果很可能不太理想,因为分词需要考虑上下文,如果仅考虑字本身的特征,还是无法得到想要的效果,而CRFs模型天然考虑了上下文特征,通常在需要考虑上下文特征的序列标注问题中能取得不错的效果。

在CRFs模型中,我们将一句话视为一个最大团(最大团的概念可以回顾下CRF第一篇),这样我们只需要求得所有候选词序列的联合概率分布的最大值(每个词对应一个随机变量),那么就可以得到一个分词的标注序列。

n-gram模型——用于限定我们考虑特征的范围,以uni-gram和bi-gram为例来说明,uni-gram窗口大小为1(cut-off=1)只考虑单字的特征,bi-gram窗口大小为2(cut-off=2)考虑两个连续字的特征,比如“我是中国人”,bi-gram在取每个字的特征的时候,只分别考虑“我是”、“是中”、“中国”、“国人”、“人”范围内的特征。笔者推测这样划分的原理应该是句子马尔科夫链的性质——一个字只和它周围的若干字有关联,越远,关联越弱。

  下面介绍CRF++工具包

  CRF++工具包输入数据的格式是这样的:

1  D  B2  D  M月  W  E3  D  B1  D  M日  W  E,  S  S中  W  B共  W  M中  W  M央  W  E
  第一列是文档中的字,第二列是字的特征(比如我们规定数字用D表示,普通字用W表示,标点符号用S表示等),第三列是4-tag字标记。CRF++引入了特征模板的概念,用于扩展特征集(显然上面的输入数据格式能提供的特征太少了),模板这样定义的(以上面的输入数据为例,假设当前字符为“共”)
template expanded feature
%x[0,0]
%x[0,1] W
%x[-1,0]
%x[-2,1] S
%x[0,0]/%x[0,1] 共/W
ABC%x[0,1]123 ABCW123
  %x[row,column]row是相对当前字符的行下标,column是列下标。

  特征模板长这样:
# Unigram
U00:%x[-2,0]
U01:%x[-1,0]
U02:%x[0,0]
U03:%x[1,0]
U04:%x[2,0]
U05:%x[-1,0]/%x[0,0]
U06:%x[0,0]/%x[1,0]

U10:%x[-2,1]
U11:%x[-1,1]
U12:%x[0,1]
U13:%x[1,1]
U14:%x[2,1]
U15:%x[-2,1]/%x[-1,1]
U16:%x[-1,1]/%x[0,1]
U17:%x[0,1]/%x[1,1]
U18:%x[1,1]/%x[2,1]

U20:%x[-2,1]/%x[-1,1]/%x[0,1]
U21:%x[-1,1]/%x[0,1]/%x[1,1]
U22:%x[0,1]/%x[1,1]/%x[2,1]

# Bigram
B

  其中U01这些是特征ID,空行没任何意义,#Unigram #Bigram这些是解释说明,指的是下面用的是哪类模型。

  训练的话,可以在命令行进入项目根目录之后(或者添加环境变量方便在任意位置识别训练程序)输入
  crf_learn template_file train_file model_file  crf_learn是训练程序,template_file指的是模板路径,train_file指的是训练数据路径,model_file指的是生成的模型文件路径(目录+文件)  有4个可选参数,分别是-a CRF-L2 or CRF-L1:  选择L1正则化还是L2正则化(正则化的目的是防止过拟合,一般而言,L2正则化更优,因为L1正则化偏向于减少项的个数,而L2正则化偏向于降低每一项前面的系数,使之趋向于0,而不是减少为0)

-c float

  这个参数设置CRF的hyper-parameter。c的数值越大,CRF拟合训练数据的程度越高。这个参数可以调整过拟合和欠拟合之间的平衡度。这个参数可以通过交叉验证等方法寻找较优的参数。

-f NUM

  这个参数设置特征的cut-off threshold。CRF++使用训练数据中至少NUM次出现的特征。默认值为1。当使用CRF++到大规模数据时,只针对特定数据的特征可能会有几百万,这个选项就会在这样的情况下起到作用。

    -p NUM

  如果电脑有多个CPU,那么那么可以通过多线程提升训练速度。NUM是线程数量。

  所以我们在命令行训练数据也可以这样写:
crf_learn -f 3 -c 1.5 template_file train_file model_file  下面是测试数据的命令行:
crf_test -m model_file test_files  model_file指的是模型文件的路径,test_files指的是测试数据文件的路径,这里就不需要指定模板文件的路径了,因为其路径已经写入模型文件中测试数据的文件格式与训练数据文件格式相同,运行测试命令会增加第四列,表示预测的各个字符的标记,然后可以用程序将其转化为我们想要的分词形式即可。
由于训练时间太长,笔者决定下期发布相关代码,敬请期待!
时间: 2024-10-10 06:06:28

条件随机场-应用的相关文章

条件随机场(CRF) - 4 - 学习方法和预测算法(维特比算法)

声明: 1,本篇为个人对<2012.李航.统计学习方法.pdf>的学习总结,不得用作商用,欢迎转载,但请注明出处(即:本帖地址). 2,由于本人在学习初始时有很多数学知识都已忘记,所以为了弄懂其中的内容查阅了很多资料,所以里面应该会有引用其他帖子的小部分内容,如果原作者看到可以私信我,我会将您的帖子的地址付到下面. 3,如果有内容错误或不准确欢迎大家指正. 4,如果能帮到你,那真是太好了. 学习方法 条件随机场模型实际上是定义在时序数据上的对数线性模型,其学习方法包括极大似然估计和正则化的极大

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

声明: 1,本篇为个人对<2012.李航.统计学习方法.pdf>的学习总结,不得用作商用,欢迎转载,但请注明出处(即:本帖地址). 2,由于本人在学习初始时有很多数学知识都已忘记,所以为了弄懂其中的内容查阅了很多资料,所以里面应该会有引用其他帖子的小部分内容,如果原作者看到可以私信我,我会将您的帖子的地址付到下面. 3,如果有内容错误或不准确欢迎大家指正. 4,如果能帮到你,那真是太好了. 书上首先介绍概率无向图模型,然后叙述条件随机场的定义和各种表示方法,那这里也按照这个顺序来. 概率无向图

概率模型与条件随机场

1.概率模型 机器学习中的很多模型可以根据概率分布形式分为生成模型和判别模型,其中生成模型以输入输出的联合分布P(X,Y)为基础建模,如朴素贝叶斯.隐马尔可夫模型:判别模型以条件概率分布P(Y|X)为基础建模,如最大熵模型.条件随机场等.这几个模型之间有一定的关系,它们的关系如下: 其中,NB表示朴素贝叶斯,ME表示最大熵,HMM表示隐马尔科夫,CRF表示条件随机场.joint联合分布,conditional条件分布.single class输出单一类别,sequence输出序列.例如,朴素贝叶

机器学习实战——条件随机场(CRF)

声明:本文是在<最优化方法>课程中阅读的Conditional Random Fields: Probabilistic Models for Segmenting and Labeling Sequence Data这篇文章后的总结. CRF由来 条件随机场(CRF)这种用来解决序列标注问题的机器学习方法是由John Lafferty于2001年发表在国际机器学习大会ICML上的一篇经典文章所引入,对后人的研究起到了非常大的引领作用.特别是标注问题在很多自然科学领域有广泛应用,在自然语言处理

条件随机场(CRF)-基础

条件随机场(conditional random fields,简称 CRF,或CRFs)下文简称CRF,是一种典型的判别模型,相比隐马尔可夫模型可以没有很强的假设存在,在分词.词性标注.命名实体识别等领域有较好的应用.CRF是在马尔可夫随机场的基础上加上了一些观察值(特征),马尔可夫随机场<=>概率无向图模型.本篇将首先介绍CRF的一些基础知识,然后介绍线性链条件随机场模型,关于模型的学习算法将放在第二篇中介绍,第三篇介绍CRF的应用. 1主要概念 1.1概率无向图模型 概率无向图模型是一种

七月算法-12月机器学习在线班--第十八次课笔记-条件随机场CRF

七月算法-12月机器学习在线班--第十八次课笔记-条件随机场CRF 七月算法(julyedu.com)12月机器学习在线班学习笔记http://www.julyedu.com 1,对数线性模型 一个事件的几率odds,是指该事件发生的概率与该事件不发生的概率的比值. 1.1对数线性模型的一般形式 令x为某样本,y是x的可能标记,将Logistic/ Softmax回归的特征 记做 特征函数的选择:eg: 自然语言处理 1, 特征函数几乎可任意选择,甚至特征函数间重叠: 2, 每个特征之和当前的词

机器学习 —— 条件随机场模型

1.背景 有了强大的log-linear模型,连水槽都能拿来做分类特征了,当然要想办法用一下试试了.log-linear模型的输入是一系列几乎接近自然语言的特征方程,这种抽象的东西拿来做语义识别自然是再好不过了.语义识别有一个重要的步骤,叫做 ”给句子贴标签“,简而言之,就是给定一个句子,通过识别其中一些特征:比如存在人名,地名,日期,商品名称,从而判断这个句子的属性(做交易,下任务,更改设置等.) 能够准确的识别句子中的这些 tag 可以有助于理解一个句子.但是要怎样来确定某个单词是不是地名或

条件随机场入门(三) 条件随机场的概率计算问题

条件随机场的概率计算问题是给定条件随机场 P(Y|X) ,输入序列 x 和输出序列 y ,计算条件概率 $P(y_i|x)$ , $P(y_{i-1},y_i|x)$ 以及相应的数学期望的问题.为了方便起见,像 HMM 那样,引进前向-后向向量,递归地计算以上概率及期望值.这样的算法称为前向-后向算法. 前向-后向算法 对每个指标 $i = 0,1,-,n+1$ ,定义前向向量 $a_i(x)$ ,对于起始状态 $i=0$: \[a_0(y|x) = \left \{ \begin{aligne

条件随机场(CRF)原理和实现

版权声明:作者:金良山庄,欲联系请评论博客或私信,个人主页:http://www.jinliangxu.com/,CSDN博客: http://blog.csdn.net/u012176591 目录(?)[+] 作者:金良([email protected]) csdn博客: http://blog.csdn.net/u012176591 对数域操作函数 class Logspace: def __init__(self): self.LOGZERO =np.nan def eexp(self,

猪猪的机器学习笔记(十八)条件随机场

条件随机场 作者:樱花猪 摘要: 本文为七月算法(julyedu.com)12月机器学习第十八次课在线笔记.条件随机场是一种判别式概率模型,是随机场的一种,常用于标注或分析序列资料,如自然语言文字或是生物序列. 引言: “条件随机场”被用于中文分词和词性标注等词法分析工作,一般序列分类模型常常采用隐马尔科夫模型(HMM),像基于类的中文分词.但隐马尔可夫模型中存在两个假设:输出独立性假设和马尔可夫性假设.其中,输出独立性假设要求序列数据严格相互独立才能保证推导的正确性,而事实上大多数序列数据不能