CRF++的简单使用

CRF++是著名的条件随机场开源工具,也是目前综合性能最佳的CRF工具。本文简要介绍其使用方法。

一、工具包的下载:

a)         http://crfpp.sourceforge.net

其中有两种,一种是Linux下(带源码)的,一种是win32的,当然是在什么平台下用就下载什么版本了。

b)         http://download.csdn.net/source/1425683

两种版本打成一个包了。

二、安装:

a)         Windows版的无须安装,直接解压即可使用;

b)         Linux版本的安装方法是:

                         i.              解压到某目录下

                       ii.              打开控制台,将当前目录切换到解压目录

                      iii.              依次输入命令:    

./configure

make

su

make install

                            注:需要root权限才能成功安装。

三、训练语料格式:

a)         训练语料至少应具有两列,列间由空格或制表位间隔,且所有行(空行除外)必须具有相同的列数。句子间使用空行间隔。

b)         一些合法的语料示例:

                         i.              有两列特征的

太 Sd N

短 Sa N

而 Bu N

已 Eu N

。 Sw N

 

以 Sp N

家 Bn N

乡 En N

的 Su N

                       ii.              只有一列特征的

太 N

短 N

而 N

已 N

。 N

 

以 N

家 N

乡 N

的 N

四、特征的选取及模板的编写:

a)         特征选取的行是相对的,列是绝对的,一般选取相对行前后m行,选取n-1列(假设语料总共有n列),特征表示方法为:%x[行,列],行列的初始位置都为0。例如:

                         i.              以前面语料为例

“ Sw N

北 Bns B-LOC

京 Mns I-LOC

市 Ens I-LOC

首 Bn N

假设当前行为“京”字这一行,那么特征可以这样选取:

特征模板

意义

代表特征

%x[-2,0]

-2行,0列

%x[-1,0]

-1行,0列

%x[0,0]

0行,0列

%x[1,0]

1行,0列

%x[2,0]

2行,0列

%x[-2,1]

-2行,1列

Sw

%x[-1,1]

-1行,1列

Bns

%x[0,1]

0行,1列

Mns

%x[1,1]

1行,1列

Ens

%x[2,1]

2行,1列

Sw

%x[-1,0]/%x[0,0]

-1行0列与0行0列的组合

北/京

%x[0,0]/%x[1,0]

0行0列与1行0列的组合

京/市

%x[-2,1]/%x[-1,1]

-2行1列与-1行1列的组合

Sw/ Bns

%x[-1,1]/%x[0,1]

-1行1列与0行1列的组合

Bns/Mns

%x[0,1]/%x[1,1]

0行1列与1行1列的组合

Mns/Ens

%x[1,1]/%x[2,1]

1行1列与2行1列的组合

Ens/Sw

%x[-2,1]/%x[-1,1]/%x[0,1]

-2行1列、-1行1列、0行1列的组合

Sw/Bns/Mns

%x[-1,1]/%x[0,1]/%x[1,1]

-1行1列、0行1列、1行1列的组合

Bns/Mns/Ens

%x[0,1]/%x[1,1]/%x[2,1]

0行1列、1行1列、2行1列的组合

Mns/Ens/Sw

b)         模板制作:模板分为两类:Unigram和Bigram。

其中Unigram/Bigram是指输出token的Unigram/Bigrams,而不是特征。

c)         以前面示例中的特征为特征,制作为Unigram模板如下:

#Unigram

U00:%x[-2,0]

U01:%x[-1,0]

U02:%x[0,0]

U03:%x[1,0]

U04:%x[2,0]

U05:%x[-2,1]

U06:%x[-1,1]

U07:%x[0,1]

U08:%x[1,1]

U09:%x[2,1]

U10:%x[-1,0]/%x[0,0]

U11:%x[0,0]/%x[1,0]

U12:%x[-2,1]/%x[-1,1]

U13:%x[-1,1]/%x[0,1]

U14:%x[0,1]/%x[1,1]

U15:%x[1,1]/%x[2,1]

U16:%x[-2,1]/%x[-1,1]/%x[0,1]

U17:%x[-1,1]/%x[0,1]/%x[1,1]

U18:%x[0,1]/%x[1,1]/%x[2,1]

说明:

                         i.              其中#开头的行不起作为,为注释;

                       ii.              行与行之间可以有空行;

                      iii.              Unigram的特征前使用字母U,而Bigram的特征前使用字母B。后面的数字用于区分特征,当然这些数字不是一定要连续。

五、训练方法

a)         语料的训练可以使用命令(在终端或DOS命令行中):crf_learn <模板> <训练语料> <模板文件>

其中模板和训练语料是需要事先准备好的,模板文件在训练完成后生成

注意:

1)         如果提示语料格式错误,则注意检查语料的存储编码,有些编码CRF++是会读取错误的;

2)         文件路径要正确,如果文件没在当前目录,那么要使用绝对路径。

b)         训练中一些参数的说明:

ter:迭代次数

terr:标记错误率

serr:句字错误率

obj:当前对象的值。当这个值收敛到一个确定值的时候,训练完成

diff:与上一个对象值之间的相对差

六、解码方法

a)         可以使用crf_test -m <模板文件> <测试文件1> <测试文件2> ……。

b)         结果会直接输出到屏幕上面,如果想让结果保存到文件中,那么使用重定向,在上面命令后面加上一个开关“>”即可:crf_test -m <模板文件> <测试文件1> > <保存位置>。例如:crf_test -m model test.txt > result.txt

七、评测工具CoNLL 2000的用法

a)         下载:

                         i.             http://download.csdn.net/source/1425687

                       ii.              http://www.cnts.ua.ac.be/conll2000/chunking/output.html

b)         使用它是用来评分,所以要求crf_test一步使用的测试文件中本身带有答案,这样解码后生成的结果会在答案的后一列。比如原来为:

使 En N

、 Sw N

交 Bni B-ORG

通 Mni I-ORG

部 Eni I-ORG

部 Bn N

那么解码后变成:

使 En N   N

、 Sw N  N

交 Bni B-ORG B-ORG

通 Mni I-ORG I-ORG

部 Eni I-ORG   I-ORG

部 Bn N   N

CoNLL 2000将把最后一列与倒数第二列进行对比,统计出最后各类的正确率,召回率、F值等。

c)         使用评测工具前要将评测文件中的所有制表位转换成空格,否则评测工具会出错。

d)         评测命令为:perl conlleval.pl < <评测文件>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是对比这四个模型的定义、使用范围、优缺点以及相应的表格。 | 模型 | 定义 | 使用范围 | 优点 | 缺点 | | --- | --- | --- | --- | --- | | BiLSTM+CRF | 由BiLSTM和CRF组合而成的序列标注模型,通过BiLSTM学习上下文信息,通过CRF进行标注输出 | 序列标注任务,如命名实体识别、词性标注等 | 具有较好的上下文语义理解能力,适用于处理长文本 | 训练和预测速度较慢,需要较长的训练时间和大量的计算资源 | | Bert+CRF | 由Bert和CRF组合而成的序列标注模型,通过Bert学习上下文信息,通过CRF进行标注输出 | 序列标注任务,如命名实体识别、词性标注等 | 具有强大的上下文语义理解能力,适用于处理长文本和复杂文本 | 训练和预测速度较慢,需要较长的训练时间和大量的计算资源 | | Bert+MRC | 由Bert和MRC组合而成的问答模型,通过Bert学习上下文信息,通过MRC进行问答输出 | 问答任务,如阅读理解、知识图谱问答等 | 具有较好的问答效果,能够充分利用上下文信息进行推理和判断 | 对于长文本和复杂文本的处理效果有待提高 | | GlobalPointer | 一种基于全局指针网络的序列标注模型,通过将文本分解成多个子序列进行标注输出 | 序列标注任务,如命名实体识别、词性标注等 | 训练和预测速度较快,适用于大规模文本标注任务 | 对于长文本和复杂文本的处理效果有待提高 | 总体来说,BiLSTM+CRF和Bert+CRF都是基于上下文语义理解的序列标注模型,适用于处理文本中的实体识别、词性标注等任务;Bert+MRC则是一种问答模型,适用于阅读理解和知识图谱问答等任务;GlobalPointer则是一种快速而简单的序列标注模型,适用于大规模文本标注任务。不同模型适用于不同的任务和场景,需要根据具体情况进行选择和使用

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值