欢迎访问我的个人博客:zengzeyu.com
前言
条件随机场(CRF)目前比较流行开源库有两个:
- CRF++: https://web.archive.org/web/20100421020327/http://crfpp.sourceforge.net/
- FlexCRFs: http://flexcrfs.sourceforge.net/
这两个库都是为自然语言处理任务而开发出来的,当然也可以根据需要应用到自己的数据格式上,如图像,点云等。FlexCRFs相对于初学者更容易上手,因为其函数设置与论文中相差不大,而CRF++进行了更简化的处理,目的是为了更好的进行数据表示,但对于初学者来说,不那么直观,所以推荐FlexCRFs上手。其他的更多的开源库请参见条件随机场维基百科。 本文将对 FlexCRFs 库进行探究。
如何使用 FlexCRFs 库
1. 训练集和测试集数据格式
首先要准备数据(废话),FlexCRFs库的训练和测试数据集格式如下所示:
<Data> := a list of <Data Sequences>
<A Data Sequence> := a list of <Data Observations>
<A Data Observation> := a list of <Context Predicates> + <A Label>
<A Context Predicate> := A string token
<A label> := A string token
例如:
//Observation sequence | Lebel sequence(according to four representation styles)
Confidence NN B-NP I-NP E-NP I-NP
in IN O O O O
...
deficits NNS I-NP I-NP E-NP I-NP
2. 控制参数
在 FlexCRFs 中有一系列控制训练和测试的参数,如下表所示。当进行训练时,这些选项的信息提前在 option.txt
文本中进行设置保存,具体参加表后例子。
Option | Default value | Description |
---|---|---|
model_dir | < current dir > | 当前路径 |
trndata_file | train.tagged | 训练数据集文件 |
tstdata_file | test.tagged | 测试数据集文件 |
ulbdata_file | data.untagged | 未打标数据集文件 |