命名实体识别——CRF++0.58的安装与使用
1.下载
下载地址:
(1)官网:https://taku910.github.io/crfpp/#download(似乎被墙了)
(2)https://sourceforge.net/projects/crfpp/
(3)网盘下载: https://pan.baidu.com/s/1fkx258xBaXr-egRc3RDXHQ (提取码:o6kv)
版本选择:
Windows选择zip压缩包,Linux选择tar.gz压缩包。
2.Windows安装
直接解压即可使用
3.实例测试
选中如图所示的3个文件,复制到“CRF+±0.58\example\chunking”(一个有训练数据和测试数据的实例)。(如果提示已存在,可忽略此步骤)
- doc文件夹:官方主页
- example文件夹:四个训练示例,训练数据(test.data),测试数据(train data)和模板文件(template),执行脚本文件exec.sh
- sdk文件夹:CRF++的头文件和静态链接库
- clr_learn.exe:CRF++的训练程序
- crl_test.exe:CRF++的测试程序
- libcrffpp.dll:训练程序和测试程序需要使用的静态链接库
打开cmd,进入“CRF+±0.58\example\chunking”目录,
输入:crf_learn template train.data model
即,crf_learn template_file train_file model_file
生成“model”文件,模型训练成功。(本安装包已有一个model文件,可观察是否更新日期)
打印控制台的信息:crf_learn template train.data model >> model_out.txt
即可生成model_out.txt文件。
输出参数:
- iter:迭代次数。当前迭代次数达到maxiter时,迭代终止。
- terr:标记错误率
- serr:句子错误率
- obj:当前对象的值。当这个值收敛到一个确定的值的时候,训练完成。
- diff:与上一个对象之间的相对差。当此值低于eta时,训练完成。
测试数据,并打印控制台信息:crf_test -m model test.data >output.txt
至此,windows系统的使用测试通过,可进行后续实验。
Linux系统的安装可查找其他资料。
4.参数设置
(1)训练参数
crf_learn -f 3 -c 1.5 template train.data model
1)-a CRF-L2 or CRF-L1
规范化算法选择。默认是CRF-L2。一般来说L2算法效果要比L1算法稍微好一点,虽然L1算法中非零特征的数值要比L2中大幅度的小。
2)-c float
这个参数设置CRF的hyper-parameter。c的数值越大,CRF拟合训练数据的程度越高。这个参数可以调整过度拟合和不拟合之间的平衡度。这个参数可以通过交叉验证等方法寻找较优的参数。
3)-f NUM
这个参数设置特征的cut-off threshold。CRF++使用训练数据中至少NUM次出现的特征。默认值为1。当使用CRF++到大规模数据时,只出现一次的特征可能会有几百万,这个选项就会在这样的情况下起到作用。
4)-p NUM
如果电脑有多个CPU,那么那么可以通过多线程提升训练速度。NUM是线程数量。
5)-m -maxiter=int
设置最大的迭代次数(默认为10k)
6)-e -eta=float
设置终止标准(默认为0.0001)
(2)测试参数
crf_test -m model test.data
1)-v可以显示预测标签的概率值;
2)-n可以显示不同可能序列的概率值
5.调用Python接口
(说明:此步骤没有通过。原因是Python使用build编译,需要通过匹配的VS版本中的C/C++环境,而我暗转的VS版本与其不匹配。具体可参考:https://www.cnblogs.com/yyds/p/7065637.html。还是Linux自带的gcc好用啊…)
方便模型训练好以后,进行应用和测试
解压tar.gz压缩包,cmd进入该目录的Python文件夹
执行:
(1)python setup.py build
(2)python setup.py install
若提示:error: Unable to find vcvarsall.bat;则是因为在windows环境中,python 的 Setup需要调用一个vcvarsall.bat的文件,该文件需要安装c++编程环境才会有。
解决方法:安装Visual Studio,有社区版,下载完成后需要钩选组件,这里是选择了Python和C++的相关包。安装时间可能有点长。
(3)然后把python 目录下的 “libcrfpp.dll” 文件复制到python安装目录下的site-packages目录下。
(4)import CRFPP ,可成功导入