CRF++使用


最近开始搞实体识别,CRF++一直是工业上搞实体识别的利器,过来研究一下

安装

非root用户安装CRF++,首先在官网下载,然后解压。 1

官方下载地址

 ./configure  --prefix=/home/xxx/crf
make
make install

训练数据

训练数据的格式,每列应该以tab隔开注意结尾的换行符,出现windows的换行的时候,还有出现多余的空行,可能会出现下面的错误

encoder.cpp(340) [max_size == size]inconsistent column size: 4 3 train.data

句子之间用空格隔开,除了最后的标签列中间还可以添加其他的特征数据,比如词性,还可以添加其他的

我	O
爱	O
北	B-LOC
京	I-LOC
的	O
天	O
安	O
门	O

明	O
天	O
北	B-LOC
京	I-LOC
怎	O
么	O
样	O

特征模板

常见的特征模板如下

# Unigram
U00:%x[-1,0]
U01:%x[0,0]
U02:%x[1,0]
U03:%x[-1,0]%x[0,0]
U04:%x[0,0]%x[1,0]
U05:%x[-1,0]%x[1,0]

# Bigram
B
  • 模板文件中,以 # 开头的行是注释行
  • 空行也会被认为是注释行而被剔除

特征有两类,Bigram和Unigram
Bigram特征主要是当前的token和前面一个位置token的自动组合生成的bigram特征集合
以京字为例

labelutt
U01:%x[0,0]
U00:%x[-1,0]
U02:%x[1,0]
U03:%x[-1,0]%x[0,0]北/京
U04:%x[0,0]%x[1,0]京/的

训练

通过crf_learn完成

crf_learn template_file train_data model_name

训练中的参数说明

参数说明
-a参数选择,默认是CRF-L2,除此之外还有CRF-L1
-c设置CRF 的正则化项的系数C,是一个大于0浮点数,默认是1.0,C越大CRF++越容易陷入到过拟合当中,通过调节C调节
-f
-p
-e

  1. https://taku910.github.io/crfpp/ ↩︎

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值