CRF简介

CRF++是著名的条件随机场的开源工具,也是目前综合性能最佳的CRF工具。

CRF 的工具有两种,一种是支持Linux环境的,一种是支持Windows环境的,大家可以自行根据自己的系统进行下载。(在此我下载的是CRF++ -0.58)

linu的安装应该简单些,几行命令就能搞定,而windows下其实严格来讲不能说是安装。我们解压我们下载的压缩包文件到某一个目录下面即可。CRF同时也提供了python接口,可以通过接口直接加载模型,自定义函数,我这里目前是windows的环境,暂且先用命令行。

CRF解压后的包:

这里很有必要对几个目录介绍下:

  • doc文件夹:官方主页的内容
  • example文件夹:有四个数据包,每个数据包有四个文件:
    训练数据(test.data)、测试数据(train.data)、模板文件(template)、执行脚本文件exec.sh。
  • sdk文件夹:CRF++的头文件和静态链接库。
  • clr_learn.exe:CRF++的训练程序
  • crl_test.exe:CRF++的测试程序
  • libcrffpp.dll:训练程序和测试程序需要使用的静态链接库。

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

这里直接使用CRF自带的例子进行试验一下:
在example中的某个例子做一下测试。例如:example中chunking文件夹,其中原有4个文件:exec.sh;template;test.data;train.data。将crf_learn.exe;crf_test.exe;libcrfpp.dll三个文件复制到这个文件夹(chunking)底下。

然后使用命令行cd到chunking目录下,这里我用的是 Anaconda prompt 的命令行:

(base) C:\Users\LiLong>cd C:\CRF++-0.58\example\chunking

模型训练:

在命令窗口中,cd到该文件夹后,然后输入以下命令进行训练模型。
模板:crf_learn template_file train_file model_file

输入如下:

(base) C:\CRF++-0.58\example\chunking>crf_learn template train.data model

你可以看到控制台上打印处的信息,并会产生一个新的文件:model。

CRF++: Yet Another CRF Tool Kit
Copyright (C) 2005-2013 Taku Kudo, All rights reserved.reading training data:
Done!0.03 sNumber of sentences: 77
Number of features:  153482
Number of thread(s): 4
Freq:                1
eta:                 0.00010
C:                   1.00000
shrinking size:      20
iter=0 terr=0.98629 serr=1.00000 act=153482 obj=5003.65270 diff=1.00000
iter=1 terr=0.38449 serr=1.00000 act=153482 obj=4082.64911 diff=0.18407
iter=2 terr=0.38449 serr=1.00000 act=153482 obj=1974.35839 diff=0.51640
iter=3 terr=0.19937 serr=0.93506 act=153482 obj=1323.56081 diff=0.32962
iter=4 terr=0.14030 serr=0.92208 act=153482 obj=826.22783 diff=0.37575
iter=5 terr=0.08333 serr=0.71429 act=153482 obj=573.51229 diff=0.30587
iter=6 terr=0.03692 serr=0.44156 act=153482 obj=388.80427 diff=0.32206
iter=7 terr=0.01266 serr=0.20779 act=153482 obj=310.94172 diff=0.20026
iter=8 terr=0.00158 serr=0.03896 act=153482 obj=285.42807 diff=0.08205
iter=9 terr=0.00105 serr=0.02597 act=153482 obj=273.98088 diff=0.04011
iter=10 terr=0.00000 serr=0.00000 act=153482 obj=266.16068 diff=0.02854
iter=11 terr=0.00000 serr=0.00000 act=153482 obj=260.00330 diff=0.02313
...
...
iter=26 terr=0.00000 serr=0.00000 act=153482 obj=253.78214 diff=0.00004
iter=27 terr=0.00000 serr=0.00000 act=153482 obj=253.77759 diff=0.00002Done!1.02 s

首先说下输出参数的意思:

  • iter:迭代次数。当前迭代次数达到maxiter时,迭代终止。
  • terr:标记错误率
  • serr:句子错误率
  • obj:当前对象的值。当这个值收敛到一个确定的值的时候,训练完成。
  • diff:与上一个对象之间的相对差。当此值低于eta时,训练完成。

这个训练过程的时间、迭代次数等信息就会输出到控制台上,如果想要保存这些信息到一个文件里,命令格式模板:
crf_learn template_file train_file model_file >> train_info_file
例如:crf_learn template train.data model >> model_out.txt
这时chunking文件夹下就会多一个model_out.txt文件,而文件里存储的就是上面控制平台输出的内容。

在模型训练和测试中的命令参数是以下的形式:
crf_learn -f 3 -p 8 -c 3 template train.data model
其中主要的参数有以下几个:

  • -a -algorithm=CRF-L2 or CRF-L1
    规范化算法的选择。默认是CRF-L2。一般来说L2算法效果要比L1算法稍微好一点,虽然L1算法中非零特征的数值要比L2中大幅度的小。
  • -f -freq=NUM
    这个参数设置特征的cut-off threshold。CRF++使用训练数据中至少出现NUM次的特征。默认值为1。当使用CRF++到大规模数据的时候,只出现一次的特征可能会有百万个,这个选项就会在这样的情况下起作用了。
  • -p -thread=NUM
    如果电脑有多个CPU ,那么可以通过多线程提升训练速度。NUM是线程数量。
  • -c -cost=float
    这个参数设置CRF的hyper-parameter。c的数值越大,CRF拟合训练数据的程度越高。这个参数可以调整过拟合和不拟合之间的平衡度。这个参数可以通过交叉验证等方法寻找较优的参数。
  • -m -maxiter=int
    设置最大的迭代次数(默认为10k)
  • -e -eta=float
    设置终止标准(默认为0.0001)

模型测试:
输入命令进行测试数据,测试程序的命令为:
模板:crf_test -m model_file test_file
eg: crf_test -m model test.data
同上,也可以把输出结果导入到一个文件里保存起来。

预测参数有两个-v 和-n,都是用来显示一些信息的。
-v :可以用来预测标签概率值
-n:可以显示不同可能序列的概率值

训练语料库格式:
训练语料至少应该具有两列,列间由空格或者制表位间隔,且所有行(空行除外)必须具有相同的列,句子间使用空行间隔。

特征选取及模板的编写:
特征选取的行是相对的,列数绝对的,一般选取相对行前后m行,选取n-1列(假设语料总共有n列),特征表示方法为:%x[行,列],行列的初始位置都为0。

这里可采用的模板是:

# Unigram
U00:%x[-1,0]
U01:%x[0,0]
U02:%x[1,0]
U03:%x[2,0]
U04:%x[-2,0]
U05:%x[1,0]/%x[2,0]
U06:%x[0,0]/%x[-1,0]/%x[-2,0]
U07:%x[0,0]/%x[1,0]/%x[2,0]
U08:%x[-1,0]/%x[0,0]
U09:%x[0,0]/%x[1,0]U10:%x[-1,0]/%x[1,0]

CRF++使用简介(windows下非接口)相关推荐

  1. Windows下PCIe接口的多串口卡驱动开发小结

    近期在64位Win7下开发一款PCIe接口的多串口卡驱动程序,做个小结: 1. 因为在Win下对WDF不熟悉,加上市面上DDK.WDM书籍较多,故选用WDM框架: 2. 多串口卡的硬件接口为PCIe, ...

  2. Windows下usb接口驱动技术(二)

    八.        Windows驱动程序模型 Windows环境下驱动程序共有三类,一类是VxD( Virtual Device Driver,虚拟设备驱动程序),起源于Windows 3.1 时代 ...

  3. NoSQL和Redis简介及Redis在Windows下的安装和使用教程

    转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/103.html?1455869099 NoSQL简介 介绍redis前,我 ...

  4. Windows下使用标准Shell接口遍历文件和文件夹

    Windows下使用标准Shell接口遍历文件和文件夹(1) 在Windows中我们经常需要遍历一个文件夹或者遍历一个磁盘.本文介绍如何使用标准的Shell接口进行遍历.在介绍过程中会逐步的实现一个类 ...

  5. Windows下创建进程简介

    正在执行的应用程序称为进程,进程不仅仅是指令和数据,它还有状态.状态是保存在处理器寄存器中的一组值,如当前执行指令的地址.保存在内存中的值,以及唯一定义进程在任一时刻任务的所有其他值.进程与应用程序的 ...

  6. GDAL库简介以及在Windows下编译过程

    GDAL(Geospatial Data Abstraction Library,地理空间数据抽象库)是一个在X/MIT许可协议下的开源栅格空间数据转换库.官网http://www.gdal.org/ ...

  7. Windows下Libvirt Java API使用教程(二)- 接口使用说明

    介绍完libvirt Java API的部署工作: <Windows下Libvirt Java API使用教程(一)- 开发环境部署> 接下来我们就介绍一下接口的使用和代码样例. libv ...

  8. Windows之Chocolatey:windows下的apt-get即Chocolatey简介、安装、使用方法之详细攻略

    Chocolatey简介 Chocolatey 是 windows 下一款命令行包管理软件 ,简单说这就是 Windows 的 apt-get.习惯 Linux 操作方式并非常想用它操纵 Window ...

  9. windows下配置caffe-matlab接口

    一.环境说明 也是安装顺序.特别强调的是除VS2015以外,其他软件的安装路径都最好不要包含空格. 1.Windows 64位系统. 2.Visual Studio 2015(VS2015, 对应VC ...

最新文章

  1. python定义浮点数数组_tensorflow之tf.record实现存浮点数数组
  2. 刷新视频超分新记录28.41dB!一种全局视频超分方案OVSR
  3. SecureCRT快捷键
  4. php代码实现对word文件的查找与替换,ThinkPHP5使用phpword实现文件模板字符替换
  5. mysql许多连接错误而被阻止_怎样解决mysql连接过多的错误?
  6. Linux——ubuntu硬盘分区
  7. php二级评论怎么实现,ThinkPHP视图模型实现二级嵌套评论的查询
  8. ICLR 2019提交截止,近1600篇论文已全部上线
  9. 性能优化:缓存使用的秘密
  10. ivitamin studio_151002 by vitamin studio
  11. 基于Visual C++2010与windows SDK fo windows7开发windows7平台的tabletpc应用(1)-汉字手写轨迹输入
  12. 人生若梦,神马都是浮云,,,,,,,
  13. 【前端】你真的理解JavaScript中的变量和数据类型吗
  14. DNS解析时发现域名和IP不一致,访问了该域名会如何(大厂真题)
  15. 山东理工大学ACM平台题答案关于C语言 2098 识别浮点常量问题
  16. java入门-springboot+mybatis+vue实现简单的后台管理系统
  17. bgp高防服务器,带你了解什么是用UDP协议攻击
  18. 基于元学习的红外弱小点状目标跟踪算法
  19. 新版Cydia下载路径
  20. 微软pop3服务器,真算孤陋寡闻。。微软旗下的邮箱都支持POP3收发邮件了

热门文章

  1. VTK:几何对象之Quad
  2. OpenCV使用MSER检测末端区域的实例(附完整代码)
  3. OpenCV改变图像的对比度和亮度
  4. c#加入json库引用_C#如何通过匿名类直接使用访问JSON数据详解
  5. linux dd devzero,makefile中ifeq与ifneq dev/null和dev/zero简介 dd命令
  6. maven 整合支付宝,导入alipay-sdk-java包到本地仓库,远程仓库
  7. Nginx安装,Nginx静态缓存,Nginx Gzip压缩,Nginx负载均衡,Nginx方向代理,Nginx+Tomcat+Redis做session共享
  8. 2.Cocos2d-x-3.2编写3d打飞机,项目代码总结
  9. 4进程原语:fork()函数,getpid()函数和getppid()函数,getuid()函数,getgid()函数,vfork()
  10. 目标检测之---R-FCN and R-FCN-3000