必威体育Betway必威体育官网
当前位置:首页 > IT技术

ltp的JAVA调用方法

时间:2019-08-17 10:43:16来源:IT技术作者:seo实验室小编阅读:57次「手机版」
 

ltp

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();

}

}

相关阅读

Java对象数组

所谓的对象数组,就是指包含了一组相关的对象,但是在对象数组的使用中一定要清楚一点:数组一定要先开辟空间,但是因为其是引用数据类型

JAVA基础一——什么是java

1.1  java概述Java是一种特殊的解释型语言(编译型语言:在程序执行前,有一个单独的过程,将程序直接编译成机器语言,以后运行时都不用再

Javac编译器

 Javac编译器是把 *.java 文件转换为 *.class 文件,是一个前端编译器;对应着有一种把字节码转变为机器码的编译器,称为JIT编译器(Jus

Java中有三种移位运算符

Java中有三种移位运算符 <<      :     左移运算符,0001 << 1,结果是0010 >>      :     右移运算符,0010 >> 1,结果是0

java中的notify和notifyAll有什么区别?

作者:知乎用户链接:https://www.zhihu.com/question/37601861/answer/145545371来源:知乎著作权归作者所有。商业转载请联系作者获得

分享到:

栏目导航

推荐阅读

热门阅读