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
|