Linux上本地使用LTP——ltp4j的使用

来源:互联网 发布:java 银行外包公司 编辑:程序博客网 时间:2024/05/21 12:40

由于要处理大量文本,所以使用LTP-CLOUD的REST API方式来处理文本效率实在很低,而且由于网络原因经常出错。好在LTP可以在本地使用,下面就介绍如何在Linux系统下进行安装配置。MacOS上没有编译成功,所以暂时不提。
一.环境:
本人系统:centOS 7
JDK版本:JDK 1.7

二 .步骤:
//下载
LTP下载:https://github.com/HIT-SCIR/ltp
LTP4J下载:https://github.com/HIT-SCIR/ltp4j
3.3.1 版本ltp_data下载:
https://pan.baidu.com/share/link?shareid=1988562907&uk=2738088569#path=%252Fltp-models

// 创建自己的一个ltp文件夹,将ltp4j-master移入,修改ltp-master文件名为ltp,复制到ltp4j-master下面,替换空的ltp。

//安装cmake,ubuntu下直接用apt-get install

yum -y install cmake

//安装ant,ubuntu下直接用apt-get install

yum -y install ant

//进入到ltp4j-master路径下,然后进入ltp下

cd ltp

//检查编译环境

./configure

// 确认没有问题后开始编译ltp

make

//返回ltp4j-master目录下

cd ..

//编译,编译之前先修改CMakeLists.txt下的LTP_HOME

cmake -DLTP_HOME=`pwd`/ltp/ .
make

编译完成后会生成一个 libs文件夹,下面是以.so为后缀的动态链接库
//生成ltp4j.jar包

ant

完成后生成一个output文件夹,在其下的jar文件里有生成的ltp4j.jar包
//添加jni动态库路径

gedit /etc/profile

在/etc/profile里的最后添加

export LD_LIBRARY_PATH=LD_LIBRARY_PATH:`pwd`/libs/:`pwd`/ltp/lib

使/etc/profile生效

source  /etc/profile

三.使用
(一)Eclipse
//创建一个新的java工程
//新建一个文件,我使用的是官方文档提供的分词的例子

import java.util.ArrayList;import java.util.List;import edu.hit.ir.ltp4j.*;public class TestSegment {  public static void main(String[] args) {     // Segmentor.release();     if(Segmentor.create("/home/qichenglin/ltp/ltp_data/cws.model")<0){      System.err.println("load failed");      return;    }    String sent = "我是中国人";    List<String> words = new ArrayList<String>();    int size = Segmentor.segment(sent,words);    for(int i = 0; i<size; i++) {      System.out.print(words.get(i));      if(i==size-1) {        System.out.println();      } else{          System.out.print("\t");      }    }    Segmentor.release();  }}

//报错是因为没有导入jar包
工程右键build path,configure build path,在libraries下add external jars导入ltp4j-master/output/jar/下面的ltp4j.jar
导入后为jar包设置本地库地址(java libraries path) ,动态库在ltp-master下的libs文件下,如下图
这里写图片描述
这里写图片描述

//完成后就可以开始运行了,注意
Segmentor.create(“/home/qichenglin/ltp/ltp_data/cws.model”)<0
要正确的model的路径,可以是绝对路径和相对路径
运行结果:
这里写图片描述

(二)命令行
// 把TestSegment.java放到ltp-master的examples下用如下命令编译

javac -cp "output/jar/ltp4j.jar" examples/TestSegment.java

//运行

 java -cp "output/jar/ltp4j.jar:examples" TestSegment

运行结果:
这里写图片描述

反思:之前由于没有真正弄懂编译过程,导致一直报错:
java.lang.UnsatisfiedLinkError:方法名
后来仔细看了论坛里的内容,再对照自己从Github上下载的源码文件发现ltp文件夹下是空的,才明白整个步骤。可惜官方的使用文档说得不够清楚,我自己从Github上下载源码使用也还不熟,所以导致浪费了很多时间,但是弄出来,也有了一些经验还是值得的。
之前在Mac上也是同样的错误,但我用正确的步骤编译的时候出错了,然后官方文档上只说了在windows和Linux系统上测试通过,所以暂时先不管了。

0 0
原创粉丝点击