ltp的JAVA调用方法

LTP4J的编译

1.github中下载ltp4j源文件。在这里我使用DownGit作为下载工具,将ltp4j的github链接输入DownGit的输入框,如图: 

 

2.下载完成后解压,推荐重命名为ltp4j,如图: 

 

3. 使用Eclipse,可以按照“File > New > Project… > Java Project from Existing Ant Buildfile”的方式从build.xml(在刚刚下载的ltp4j文件中)中创建项目。 


4. 选择next后,在Ant buildfile:一栏中填入build.xml的路径,E:\LTP\ltp4j\build.xml(window用户),如下图所示,点击Finish就导入了项目。 


5. 在导入项目后,右键build.xml选择2 Ant Build。 


6. 在弹出的对话框中的选择main选项卡,并在Base Directory:中填入刚刚下载的ltp4j源程序的路径E:\LTP\ltp4j。 


7. 点击Run,成功运行,在ltp4j文件夹中新生成了一个output文件夹,在可以看到生成的jar包。

 

下载ltp库

官方文档以及很多博客在这一步都自己编译C++代理程序,过程很麻烦,不熟悉的同学很容易出错,再加上这是一篇入门实例,本着简单的原则为大家准备好了所需的所有库,各位直接下载,链接,下载完成后,如图。 


Eclipse中使用编译好的LTP4J

接下来是最后一步 
1. 在Eclipse中新建Java Project。 
2. 导入ltp4j.jar,不知道的自行google“eclipse如何导入jar包”。 
3. 将之前下载的所有ltp库复制粘贴到Eclipse项目根目录,如图。 
 
4. 新建测试程序 
注:修改cws.model文件路径,cws.model文件在文章一开始下载的文件夹中。 


本地接口使用示例

分词接口

 

import java.util.ArrayList;
import java.util.List;

import edu.hit.ir.ltp4j.Segmentor;

public class TestSegment {
public static void main(String[] args) {
// /MyTest/
if (Segmentor.create("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();
}
}

词性标注接口

import java.util.ArrayList;
import java.util.List;

import edu.hit.ir.ltp4j.Postagger;


public class TestPostag {
public static void main(String[] args) {
if (Postagger.create("ltp_data/pos.model") < 0) {
System.err.println("load failed");
return;
}

List<String> words = new ArrayList<String>();
words.add("我");
words.add("是");
words.add("中国");
words.add("人");
List<String> postags = new ArrayList<String>();

int size = Postagger.postag(words, postags);
for (int i = 0; i < size; i++) {
System.out.print(words.get(i) + "_" + postags.get(i));
if (i == size - 1) {
System.out.println();
} else {
System.out.print("|");
}
}
Postagger.release();
}
}

 

命名实体识别接口

import java.util.ArrayList;
import java.util.List;

import edu.hit.ir.ltp4j.NER;


public class TestNer {

public static void main(String[] args) {
if (NER.create("ltp_data/ner.model") < 0) {
System.err.println("load failed");
return;
}
List<String> words = new ArrayList<String>();
List<String> tags = new ArrayList<String>();
List<String> ners = new ArrayList<String>();
words.add("中国");
tags.add("ns");
words.add("国际");
tags.add("n");
words.add("广播");
tags.add("n");
words.add("电台");
tags.add("n");
words.add("创办");
tags.add("v");
words.add("于");
tags.add("p");
words.add("1941年");
tags.add("m");
words.add("12月");
tags.add("m");
words.add("3日");
tags.add("m");
words.add("。");
tags.add("wp");

NER.recognize(words, tags, ners);

for (int i = 0; i < words.size(); i++) {
System.out.println(ners.get(i));
}

NER.release();

}
}

 

依存句法分析接口

import java.util.ArrayList;
import java.util.List;

import edu.hit.ir.ltp4j.Parser;


public class TestParser {

public static void main(String[] args) {
if (Parser.create("ltp_data/parser.model") < 0) {
System.err.println("load failed");
return;
}
List<String> words = new ArrayList<String>();
List<String> tags = new ArrayList<String>();
words.add("一把手");
tags.add("n");
words.add("亲自");
tags.add("d");
words.add("过问");
tags.add("v");
words.add("。");
tags.add("wp");
List<Integer> heads = new ArrayList<Integer>();
List<String> deprels = new ArrayList<String>();

int size = Parser.parse(words, tags, heads, deprels);

for (int i = 0; i < size; i++) {
System.out.print(heads.get(i) + ":" + deprels.get(i));
if (i == size - 1) {
System.out.println();
} else {
System.out.print("        ");
}
}

Parser.release();
}
}

 

语义角色标注接口

import java.util.ArrayList;
import java.util.List;

import edu.hit.ir.ltp4j.Pair;
import edu.hit.ir.ltp4j.SRL;

public class TestSrl {

public static void main(String[] args) {
SRL.create("ltp_data/srl");
ArrayList<String> words = new ArrayList<String>();
words.add("一把手");
words.add("亲自");
words.add("过问");
words.add("。");
ArrayList<String> tags = new ArrayList<String>();
tags.add("n");
tags.add("d");
tags.add("v");
tags.add("wp");
ArrayList<String> ners = new ArrayList<String>();
ners.add("O");
ners.add("O");
ners.add("O");
ners.add("O");
ArrayList<Integer> heads = new ArrayList<Integer>();
heads.add(2);
heads.add(2);
heads.add(-1);
heads.add(2);
ArrayList<String> deprels = new ArrayList<String>();
deprels.add("SBV");
deprels.add("ADV");
deprels.add("HED");
deprels.add("WP");
List<Pair<Integer, List<Pair<String, Pair<Integer, Integer>>>>> srls = new ArrayList<Pair<Integer, List<Pair<String, Pair<Integer, Integer>>>>>();
SRL.srl(words, tags, ners, heads, deprels, srls);
System.out.println(srls.size());
for (int i = 0; i < srls.size(); ++i) {
System.out.println(srls.get(i).first + ":");
for (int j = 0; j < srls.get(i).second.size(); ++j) {
System.out.println("   tpye = " + srls.get(i).second.get(j).first + " beg = "
+ srls.get(i).second.get(j).second.first + " end = " + srls.get(i).second.get(j).second.second);
}
}
SRL.release();
}
}

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值