【基础库】CRF++0.58在Ubuntu16.04和win10环境搭建

在进行文本标注中,条件随机场是比较常用的方法,其中使用率和综合性方面都比较不错的开源工具算是CRF++了,本文将在Ubuntu16.04 Server版本和win10上搭建其基础底层环境。本文用的CRF++版本为0.58,并演示对Java版本调用和Python版本调用两种情况,为了不使文章冗余,本文将使用如下结构搭建CRF++的底层基础环境。

    第一部分:基础环境信息

    第二部分:Ubuntu16.04搭建Java/Python版本调用的CRF++的开发环境

    第三部分:Win10搭建Python版本调用的CRF++的开发环境

第一部分:基础环境信息

1.1、CRF++下载地址

下载地址:

https://drive.google.com/drive/folders/0B4y35FiV1wh7fngteFhHQUN2Y1B5eUJBNHZUemJYQV9VWlBUb3JlX0xBdWVZTWtSbVBneU0

CRF++官网地址:https://taku910.github.io/crfpp

本文使用版本:CRF++0.58.tar.gz

1.2、其它的工具(含依赖工具和开发工具)

Java1.8/Anconda/gcc/make/IDEA/Pycharm/

第二部分:Ubuntu16.04搭建Java版本调用的CRF++的开发环境

2.1、下载CRF++-0.58.tar.gz

2.2、解压,到目录中执行(安装时候出现gcc未找到,记得先安装gcc,安装make)

- /home/ubuntu/soft-applications/CRF++-0.58
- sudo ./configure
- sudo make
- sudo make install

2.3、安装CRFPPPython版本和Java版本)

进入CRF++-0.58/python路径下
- Python环境安装
- /home/ubuntu/anaconda3/bin/python/python setup.py build
- sudo /home/ubuntu/anaconda3/bin/python setup.py install

- Java环境安装
- 首先在 **/CRF++-0.58/java目录下执行make
- 修改Java的路径(INCLUDE),修改(CXX)C++编译器:/home/ubuntu/soft-applications/CRF++-0.58/java/Makefile
```
JAR=jar
CXX=g++
INCLUDE=/home/ubuntu/soft-applications/jdk1.8.0_201/include
```

2.4、 最后执行的结果

```
ubuntu@spark12:~/soft-applications/CRF++-0.58/java$ make
g++ -O3 -c -fpic CRFPP_wrap.cxx  -I/home/ubuntu/soft-applications/jdk1.8.0_201/include -I/home/ubuntu/soft-applications/jdk1.8.0_201/include/linux
g++ -shared  CRFPP_wrap.o -o libCRFPP.so -lcrfpp -lpthread
javac org/chasen/crfpp/*.java
javac test.java
jar cfv CRFPP.jar org/chasen/crfpp/*.class
added manifest
adding: org/chasen/crfpp/CRFPP.class(in = 240) (out= 188)(deflated 21%)
adding: org/chasen/crfpp/CRFPPConstants.class(in = 340) (out= 244)(deflated 28%)
adding: org/chasen/crfpp/CRFPPJNI.class(in = 2142) (out= 756)(deflated 64%)
adding: org/chasen/crfpp/Model.class(in = 1262) (out= 685)(deflated 45%)
adding: org/chasen/crfpp/SWIGTYPE_p_float.class(in = 462) (out= 311)(deflated 32%)
adding: org/chasen/crfpp/SWIGTYPE_p_int.class(in = 456) (out= 308)(deflated 32%)
adding: org/chasen/crfpp/SWIGTYPE_p_p_char.class(in = 465) (out= 310)(deflated 33%)
adding: org/chasen/crfpp/Tagger.class(in = 4859) (out= 1673)(deflated 65%)
ubuntu@spark12:~/soft-applications/CRF++-0.58/java$
```

1.4 遇到的问题及相关依赖库安装

1.4.1import CRFPP出现错误(Python库依赖)

- ImportError: libcrfpp.so.0: cannot open shared object file: No such file or directory
- 首先,编辑文件
- sudo vim /etc/ld.so.conf
- 加入以下命令
- include /usr/local/lib
- 保存后执行
- sudo /sbin/ldconfig -v

1.4.2GCC 安装(方案二)

- sudo add-apt-repository ppa:ubuntu-toolchain-r/test
- sudo apt-get update
- sudo apt-get install software-properties-common
- sudo apt-get install gcc-5 g++-5
- 第一次安装,可能有些库由于下载超时报错,通过如下命令再执行一次
- sudo apt-get install gcc-5 g++-5 --fix-missing
- 更新一下链接
```
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 53 \
--slave /usr/bin/g++ g++ /usr/bin/g++-5 \
--slave /usr/bin/gcc-ar gcc-ar /usr/bin/gcc-ar-5 \
--slave /usr/bin/gcc-nm gcc-nm /usr/bin/gcc-nm-5 \
--slave /usr/bin/gcc-ranlib gcc-ranlib /usr/bin/gcc-ranlib-5
```
- 查看安装的版本
- gcc --version
```
ubuntu@spark12:~/soft-applications$ gcc --version
gcc (Ubuntu 5.5.0-12ubuntu1~16.04) 5.5.0 20171010
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
ubuntu@spark12:~/soft-applications$
```

1.4.3 安装make

- sudo apt-get install make

第三部分:Win10搭建Python版本调用的CRF++的开发环境

3.1、下载 crf++0.58.tar.gz

- 文件下载1:https://pan.baidu.com/s/1aKzlwWdWdutHfUxKloDDYg   (提取码: b6jp)

- 文件下载2:见第一部分

3.2、解压文件将文件加压缩到E:\crfpp_0.58

3.3、拷贝libcrfpp.dll文件到Python编译环境  

- 拷贝libcrfpp.dll文件到Python编译环境(和下面的abbr_model环境对应)

- 然后把 E:\crfpp_0.58\python 目录下的 “libcrfpp.dll” 文件
- 复制到python安装目录下的site-packages目录下,
- 比如我的是: D:\Anaconda2\envs\abbr_model\Lib\site-packages

3.4、进入项目的Python环境(本文使用anaconda3的虚拟环境)

- 进入项目的Python编译环境
- activate abbr_model- 进入crf++解压缩的文件夹下的python目录下
- (abbr_model) E:\crfpp_0.58\python>
- 执行如下命令:
- python setup.py build
- python setup.py install
```
(abbr_model) E:\crfpp_0.58\python>python setup.py build
running build
running build_py
running build_ext

(abbr_model) E:\crfpp_0.58\python>python setup.py install
running install
running build
running build_py
running build_ext
running install_lib
copying build\lib.win-amd64-3.6\CRFPP.py -> D:\Anaconda2\envs\abbr_model\Lib\site-packages
copying build\lib.win-amd64-3.6\_CRFPP.cp36-win_amd64.pyd -> D:\Anaconda2\envs\abbr_model\Lib\site-packages
byte-compiling D:\Anaconda2\envs\abbr_model\Lib\site-packages\CRFPP.py to CRFPP.cpython-36.pyc
running install_egg_info
Writing D:\Anaconda2\envs\abbr_model\Lib\site-packages\mecab_python-0.0.0-py3.6.egg-info

(abbr_model) E:\crfpp_0.58\python>
```

3.5、项目中导入CRFPP依赖即可

命令:import CRFPP

 

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: