crf++ 安装

本文介绍如何在Linux环境下安装CRF++并实现Python及Java的集成,包括解决依赖问题、配置环境变量等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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程序

#coding=utf-8
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 `
  1. 进入解压后的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
          
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    即可。

  2. 退出到上一级目录,进入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
          
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    这个就是说缺少jni.h, 其实我们在安装java环境的时候,就已经有了这文件。具体可以locate命令去查看位置.

        $locate jni.h
          
    • 1
    • 1

    找到之后,直接拷到java目录下面

        sudo cp /usr/lib/jvm/java/include/jni.h .  
          
    • 1
    • 1

    这样修改之后,还需要修改一个东西,就是将CRFPP_wrap.cxx 159行的<jni.h> 改成"jni.h" 
    再make 之后,如果出现有个 jni_md.h 类似的错误,一样的解决方法。之后在执行make 应该就可以完成了,生成了 CRFPP.jar 和 libCRFPP.so两个文件。这也是我们需要的~~

  3. 最后一步就是加入软连接,如下命令

    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
    
          
    • 1
    • 2
    • 3
    • 4
    • 1
    • 2
    • 3
    • 4

    ok 下面就可以用java使用训练好的模型了,具体样例,直接查看 test.java 即可


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值