CRF++使用见《CRF++的简单使用》
一、实验环境
a) 软件:windows XP pro sp3,visual studio 2008 & Dotnet2.0, CRF++, perl
b) 硬件: CPU: cm420,内存:2G ddr533, 160G 8M sata 富士通
二、实验过程
下面未经特别说明,都是按照作业要求将训练语料分成7:3进行训练和评测所得的结果。
i. 所给定的语料格式非常符合条件随机场的要求,故直接使用条件随机场进行训练测试。(本次试验的文件在包test1.rar中)
1. 转换文档编码为UTF8(CRF++在使用UTF16时会报错)
2. 制定模板,如下:
#Unigram
U00:%x[-2,0]
U01:%x[-1,0]
U02:%x[0,0]
U03:%x[1,0]
U04:%x[2,0]
U10:%x[-1,0]/%x[0,0]
U11:%x[0,0]/%x[1,0]
3. 使用CRF++学习特征(相关信息如下)
a) 命令:crf_learn template_file train_file model
其中template_file是模板文件,train_file是训练语料,都需要事先准备好;model是CRF++根据模板和训练语料生成的文件,用于解码。
i. template_file文件
1. 模板的基本格式为%x[row,col],它用于确定输入数据中的一个token
其中,row确定与当前的token的相对行数。col用于确定绝对列数。(如下图:)
|
col 0 |
col 1 |
col 2 |
|
row -2 |
疆 |
Ens |
I-LOC |
|
row -1 |
总 |
Bn |
N |
|
row 0 |
统 |
En |
N |
当前行 |
row 1 |
阿 |
Bns |
B-PER |
|
row 2 |
利 |
Mns |
I-PER |
|
模板 |
指代的特征 |
U00:%x[-2,0] |
疆 |
U01:%x[-1,0] |
总 |
U02:%x[0,0] |
统 |
U03:%x[1,0] |