CRF++的安装以及Ubunt下java版本的CRF++的配置
2015-11-14 10:05
691 查看
下载安装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.cxx159行的
<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即可。
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树
- [原创]java局域网聊天系统