参考:
训练
模式1:
% crf_learn template_file train_file model_file
其中 template_file 和 train_file 需要提前准备的文件。 crf_learn 在 model_file 中生成训练好的模型文件 。
训练输出结果如下:
CRF++: Yet Another CRF Tool Kit Copyright(C) 2005 Taku Kudo, All rights reserved. reading training data: 100.. 200.. 300.. 400.. 500.. 600.. 700.. 800.. Done! 1.94 s Number of sentences: 823 Number of features: 1075862 Number of thread(s): 1 Freq: 1 eta: 0.00010 C: 1.00000 shrinking size: 20 Algorithm: CRF iter=0 terr=0.99103 serr=1.00000 obj=54318.36623 diff=1.00000 iter=1 terr=0.35260 serr=0.98177 obj=44996.53537 diff=0.17161 iter=2 terr=0.35260 serr=0.98177 obj=21032.70195 diff=0.53257 iter=3 terr=0.23879 serr=0.94532 obj=13642.32067 diff=0.35138 iter=4 terr=0.15324 serr=0.88700 obj=8985.70071 diff=0.34134 iter=5 terr=0.11605 serr=0.80680 obj=7118.89846 diff=0.20775 iter=6 terr=0.09305 serr=0.72175 obj=5531.31015 diff=0.22301 iter=7 terr=0.08132 serr=0.68408 obj=4618.24644 diff=0.16507 iter=8 terr=0.06228 serr=0.59174 obj=3742.93171 diff=0.18953
- iter: 迭代次数
- terr: tags的错误率. (# of error tags/# of all tag)
- serr: 句子的错误率 (# of error sentences/# of all sentences)
- obj: 当前对象值,||w||^2。当这个值收敛到一个固定点时,CRF++停止迭代。
- diff: 与前一个对象值的相对差异,即(4618.24644-3742.93171)/4618.24644 = 0.18953
有4个主要参数来控制训练条件:
- -a CRF-L2 or CRF-L1:改变正则化算法。默认设置为 L2。一般来说,L2 的表现略好于 L1,而 L1 中非零特征的数量远小于 L2.
- -c float:此选项可以更改 CRF 的超参数。 较大的 C 值,CRF 倾向于过度拟合给定的训练语料库。 该参数在过拟合和欠拟合之间进行权衡,将显着影响结果。 您可以使用保留数据或更通用的模型选择方法(例如交叉验证)找到最佳值。.
- -f NUM:此参数设置特征的截止阈值。 CRF++ 使用在给定训练数据中出现不少于 NUM 次的特征。 默认值为1。当你将CRF++应用于大数据时,独特特征的数量将达到数百万。 此选项在这种情况下很有用。.
- -p NUM:NUM 是线程数。如果 PC 有多个 CPU,您可以通过使用多线程来加快训练速度。
模式2:
% crf_learn -f 3 -c 1.5 template_file train_file model_file
从 0.45 版本开始,CRF++ 支持单最佳 MIRA 训练。当设置了 -a MIRA 选项时使用 MIRA 训练。
% crf_learn -a MIRA template train.data model CRF++: Yet Another CRF Tool Kit Copyright(C) 2005 Taku Kudo, All rights reserved. reading training data: 100.. 200.. 300.. 400.. 500.. 600.. 700.. 800.. Done! 1.92 s Number of sentences: 823 Number of features: 1075862 Number of thread(s): 1 Freq: 1 eta: 0.00010 C: 1.00000 shrinking size: 20 Algorithm: MIRA iter=0 terr=0.11381 serr=0.74605 act=823 uact=0 obj=24.13498 kkt=28.00000 iter=1 terr=0.04710 serr=0.49818 act=823 uact=0 obj=35.42289 kkt=7.60929 iter=2 terr=0.02352 serr=0.30741 act=823 uact=0 obj=41.86775 kkt=5.74464 iter=3 terr=0.01836 serr=0.25881 act=823 uact=0 obj=47.29565 kkt=6.64895 iter=4 terr=0.01106 serr=0.17011 act=823 uact=0 obj=50.68792 kkt=3.81902 iter=5 terr=0.00610 serr=0.10085 act=823 uact=0 obj=52.58096 kkt=3.98915
参数:
- act:工作集中的active examples数量
- uact:双参数达到软边界上限 C. 0 uact 表明给定的训练数据是线性可分的
- kkt:最大 kkt 违规值。当它达到 0.0 时,MIRA 训练结束
有一些参数可以控制 MIRA 训练条件:
- -c float:更改软边界参数,它类似于支持向量机中的软边界参数 C。定义与CRF训练中的-c选项基本一致。 C 值较大时,MIRA 倾向于过度拟合给定的训练语料库。.
- -f NUM:
Same as CRF - -H NUM:更改缩小尺寸。 当一个训练语句没有被用于更新参数向量 NUM 次时,我们可以认为该实例不再对训练做出贡献。 MIRA 尝试删除此类实例。 这个过程被称为“收缩”。 当设置较小的 NUM 时,会在早期发生收缩,这大大减少了训练时间。 但是,不建议 NUM 太小。 训练结束后,MIRA 尝试再次遍历所有训练示例,以了解是否真的满足所有 KKT 条件。 NUM 太小会增加重新检查的机会。
Changes shrinking size. When a training sentence is not used in updating parameter vector NUM times, we can consider that the instance doesn't contribute training any more. MIRA tries to remove such instances. The process is called "shrinking". When setting smaller NUM, shrinking occurs in early stage, which drastically reduces training time. However, too small NUM is not recommended. When training finishes, MIRA tries to go through all training examples again to know whether or not all KKT conditions are really satisfied. Too small NUM would increase the chances of recheck.
测试
% crf_test -m model_file test_files ...
输出:
% crf_test -m model test.data Rockwell NNP B B International NNP I I Corp. NNP I I 's POS B B Tulsa NNP I I unit NN I I ..
最后一列给出(估计)标签。如果第 3 列是 true answer tag ,您可以通过简单地查看第 3 列和第 4 列之间的差异来评估准确度。
详细级别 :
-v 选项设置详细级别。默认值为 0。通过增加级别,您可以从 CRF++ 获得额外信息
- level 1:
您还可以为每个标签(每个输出标签的一种置信度度量)和输出的条件可能(整个输出的置信度度量)设置边际概率
% crf_test -v1 -m model test.data| head # 0.478113 Rockwell NNP B B/0.992465 International NNP I I/0.979089 Corp. NNP I I/0.954883 's POS B B/0.986396 Tulsa NNP I I/0.991966 ...
- level 2:
% crf_test -v2 -m model test.data # 0.478113 Rockwell NNP B B/0.992465 B/0.992465 I/0.00144946 O/0.00608594 International NNP I I/0.979089 B/0.0105273 I/0.979089 O/0.0103833 Corp. NNP I I/0.954883 B/0.00477976 I/0.954883 O/0.040337 's POS B B/0.986396 B/0.986396 I/0.00655976 O/0.00704426 Tulsa NNP I I/0.991966 B/0.00787494 I/0.991966 O/0.00015949 unit NN I I/0.996169 B/0.00283111 I/0.996169 O/0.000999975