CRF++ 使用小结

实验环境:Window XP、CRF++、ActivePerl

我下载的是CRF++0.53.zip的版本,解压。

         doc文件夹:就是官方主页的内容。

         example文件夹:有四个任务的训练数据、测试数据和模板文件。   

         sdk文件夹:CRF++的头文件和静态链接库。   

         crf_learn.exe:CRF++的训练程序。   

         crf_test.exe:CRF++的预测程序   

         libcrfpp.dll:训练程序和预测程序需要使用的静态链接库。

 实际上,需要使用的就是crf_learn.exe,crf_test.exe和libcrfpp.dll,这三个文件。

 

CRF++中以chunking为例演示:

      example中chunking文件夹中原有4个文件:exec.sh

                                                                                     template为特征模版

                                                                                     test.data为测试数据

                                                                                     train.data为训练数据

关于它们具体格式和内容,待会详细介绍。


将crf_learn.exe;crf_test.exe;libcrfpp.dll三个文件复制到到.../example / chunking 中


流程:

cmd

cd进入该文件夹

crf_learn template train.data model   训练数据

crf_test -m model test.data > output.txt   测试数据

perl conlleval.pl -d "\t"  <output.txt   评估效果

 

训练:

        crf_learn template_file train_file model_file
        
这个训练过程的时间、迭代次数等信息会输出到控制台上(感觉上是crf_learn程序的输出信息到标准输出流上了),如果想保存这些信息,我们可以将这些标准输出流到文件上,命令格式如下:
        crf_learn template_file train_file model_file >> train_info_file

   有四个主要的参数可以调整:
    -a CRF-L2 or CRF-L1     
    
规范化算法选择。默认是CRF-L2。一般来说L2算法效果要比L1算法稍微好一点,虽然L1算法中非零特征的数值要比L2中大幅度的小。
    
-c float
    这个参数设置CRFhyper-parameterc的数值越大,CRF拟合训练数据的程度越高。这个参数可以调整过度拟合和不拟合之间的平衡度。这个参数可以通过交叉验证等方法寻找较优的参数。
    
-f NUM
    这个参数设置特征的cut-offthresholdCRF++使用训练数据中至少NUM次出现的特征。默认值为1。当使用CRF++到大规模数据时,只出现一次的特征可能会有几百万,这个选项就会在这样的情况下起到作用。
    
-p NUM
    如果电脑有多个CPU,那么那么可以通过多线程提升训练速度。NUM是线程数量。

    带两个参数的命令行例子:
    
crf_learn -f  3 -c 1.5template_file train_file model_file

 

测试:

     crf_test -m model_file test_files
    
有两个参数-v和-n都是显示一些信息的,-v可以显示预测标签的概率值,-n可以显示不同可能序列的概率值,对于准确率,召回率,运行效率,没有影响,这里不说明了。
     
与crf_learn类似,输出的结果放到了标准输出流上,而这个输出结果是最重要的预测结果信息(测试文件的内容+预测标注),同样可以使用重定向,将结果保存下来,命令行如下。
      
crf_test -m model_file test_files>> result_file

 

模板格式:

  此网址关于CRF++的模板给出了详细的解释

  http://www.poised-flw.com/record/2013/04/19/useage-of-crf/


评测工具CoNLL 2000的用法:

      a)   下载:此步骤是为了生成文件conlleval.pl 文件

                         i.             http://download.csdn.net/source/1425687

                        ii.             http://www.cnts.ua.ac.be/conll2000/chunking/output.html

      b)    使用它是用来评分,所以要求crf_test一步使用的测试文件中本身带有答案,这样解码后生成的结果会在答案的后一列。比如原来为:

 Bni B-ORG

 Mni I-ORG

 Eni I-ORG

 Bn N

那么解码后变成:

 Bni B-ORG B-ORG

 Mni I-ORG I-ORG

 Eni I-ORG   I-ORG

 Bn N   N

CoNLL 2000将把最后一列与倒数第二列进行对比,统计出最后各类的正确率,召回率、F值等。

c)         使用评测工具前要将评测文件中的所有制表位转换成空格,否则评测工具会出错。出错及更正方法

              http://www.52ml.net/2463.html

              http://argcandargv.com/articles/2104.c

评估命令:perl conlleval.pl -d "\t" < output.txt

特别注意:output.txt在CRF++输出中空格为TAB键,需要全部替换为真正空格键。conlleval.pl识别的是空格键。

d)         评测命令为:perl conlleval.pl < 评测文件

 

 

比较好CRF++用法介绍:http://blog.csdn.net/felomeng/article/details/4367250

http://www.cnblogs.com/pangxiaodong/archive/2011/11/21/2256264.html

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值