下载安装CRF++
- 需要系统有
java
和gcc
的环境。 - 下载地址:CRF++0.54.tar.gz
进入解压之后的目录,执行如下命令:
./configure make sudo make install
其中
make
可能会遇到如下的错误;In file included from node.h:13:0, from node.cpp:9: path.h:26:50: error: ‘size_t’ has not been declared void calcExpectation(double *expected, double, size_t) const; ^ make[1]: *** [node.lo] 错误 1 make[1]:正在离开目录 `/home/shomy/Documents/CRF++-0.54' make: *** [all] 错误 2
这是因为只需要在path.h 中加入头文件:
#include "stdilib.h"
即可继续make
和sudo make install
。验证是否安装成功
在终端输入$crf_learn
如果出来相关说明,安装成功。
至于如何使用
crf_learn
训练和 使用crf_test
作测试 就是那俩命令,这里就不多说了。
Java版本CRF++的配置
安装完了之后CRF++ 之后,如果想用它作二次开发的话,就需要用到各个语言了,很幸运的是,官方给提供了诸如python java perl
等等的接口,很方便使用。不过需要配置一下才可以使用。下面主要给出java的配置过程。
1. 安装swig
因为CRF++就是使用这这个强大的工具才可以生成各种语言接口。
` sudo apt-get install swig `
进入解压后的CRF++-0.54目录中的
swig
文件夹,直接执行make
出现如下结果:
swig -perl -shadow -c++ CRFPP.i ../crfpp.h:244: Warning 314: 'next' is a perl keyword mv -f CRFPP_wrap.cxx ../perl mv -f CRFPP.pm ../perl swig -ruby -c++ CRFPP.i mv -f CRFPP_wrap.cxx ../ruby/CRFPP_wrap.cpp swig -python -shadow -c++ CRFPP.i mv -f CRFPP_wrap.cxx ../python mv -f CRFPP.py ../python swig -java -package org.chasen.crfpp -c++ CRFPP.i mkdir -p ../java/org/chasen/crfpp mv -f CRFPP_wrap.cxx ../java mv -f *.java ../java/org/chasen/crfpp
即可。
退出到上一级目录,进入
java
目录
直接执行make
报错:c++ -O3 -c -fpic CRFPP_wrap.cxx -I/usr/local/jdk/include -I/usr/local/jdk/include/linux CRFPP_wrap.cxx:159:17: fatal error: jni.h: 没有那个文件或目录 #include <jni.h> ^ compilation terminated. make: *** [all] 错误 1
这个就是说缺少
jni.h
, 其实我们在安装java
环境的时候,就已经有了这文件。具体可以locate
命令去查看位置.$locate jni.h
找到之后,直接拷到java目录下面
sudo cp /usr/lib/jvm/java/include/jni.h .
这样修改之后,还需要修改一个东西,就是将
CRFPP_wrap.cxx
159行的<jni.h>
改成"jni.h"
再make 之后,如果出现有个jni_md.h
类似的错误,一样的解决方法。之后在执行make
应该就可以完成了,生成了CRFPP.jar
和libCRFPP.so
两个文件。这也是我们需要的~~最后一步就是加入软连接,如下命令
sudo ln -s /usr/local/lib/libcrfpp.a /usr/lib/libcrfpp.a sudo ln -s /usr/local/lib/libcrfpp.so /usr/lib/libcrfpp.so sudo ln -s /usr/local/lib/libcrfpp.so.0 /usr/lib/libcrfpp.so.0
ok 下面就可以用java使用训练好的模型了,具体样例,直接查看
test.java
即可。