crf++包下载地址:
https://drive.google.com/drive/folders/0B4y35FiV1wh7fngteFhHQUN2Y1B5eUJBNHZUemJYQV9VWlBUb3JlX0xBdWVZTWtSbVBneU0
python安装:
下载 crf0.58,解压,运行如下命令:
./configure
make
sudo make install
然后进入python
文件夹中,运行如下命令:
python setup.py build
su
python setup.py install
安装完成后,运行如下python程序
from __future__ import unicode_literals
from deepnlp import segmenter
text = "我刚刚在浙江卫视看了电视剧老九门,觉得陈伟霆很帅"
segList = segmenter.seg(text)
text_seg = " ".join(segList)
print (text.encode('utf-8'))
print (text_seg.encode('utf-8'))
出现如下错误:
import CRFPP
File "/usr/lib/python2.7/dist-packages/bpython/curtsiesfrontend/repl.py", line 257, in load_module
module = pkgutil.ImpLoader.load_module(self, name)
File "/usr/lib/python2.7/pkgutil.py", line 246, in load_module
mod = imp.load_module(fullname, self.file, self.filename, self.etc)
File "/usr/local/lib/python2.7/dist-packages/CRFPP.py", line 26, in <module>
_CRFPP = swig_import_helper()
File "/usr/local/lib/python2.7/dist-packages/CRFPP.py", line 22, in swig_import_helper
_mod = imp.load_module('_CRFPP', fp, pathname, description)
ImportError: libcrfpp.so.0: 无法打开共享对象文件: 没有那个文件或目录
这是因为没有建立正确的链接,使用如下命令解决:
sudo ln -s /usr/local/lib/libcrfpp.so.* /usr/lib/
java安装:
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
即可