1---------java调用NLPIR(ICTCLAS2016)实现分词功能
备注:win7 64位系统,netbeans编程
NLPIR分词系统,前身是2000年发布的ICTCLAS,2009年更为现名。张华平博士打造。
实现步骤:
1、在Netbeans中,文件→新建项目→java→java应用程序;项目名称:CWordSeg;
2、将NLPIR文件下…\sample\JnaTest_NLPIR\src\code中NlpirTest.java里的代码拷贝到CWordSeg.java里面;
初步修改代码为下图所示:
(1)将package包声明修改为cwordseg;
(2)将类名NlpirTest重命名重构为CWordSeg;
方法:右键CwordSeg.java→重构→重命名,改名为CWordSeg→重构;
如果只是直接修改代码里的类名,则仍然需要进行重构,否则运行时会报错:找不到主类CWordSeg。
(3)import utils.SystemParas; 未用到,暂时注释掉。
3、将NLPIR文件下…\sample\JnaTest_NLPIR\src下的utils文件夹直接拷贝到项目CWordSeg的src文件夹中;
4、将NLPIR文件下…\sample\JnaTest_NLPIR\lib下的jna-4.0.0.jar导入到工程库中;
方法(1):右键库→添加JAR→选择jna-4.0.0.jar导入;
方法(2):直接复制jna-4.0.0.jar文件到工程…\CWordSeg\lib文件夹下。
导完之后工程目录如下:
5、在工程CWordSeg文件夹中新建文件夹file:
(1)将NLPIR中的Data文件夹全部拷贝到file文件夹中;
(2)将…\lib\win64文件夹也全部拷贝到file文件夹(注意:如果是win32或linux请选择对应的文件夹)。
6、修改部分代码2:
(1)修改文件NLPIR.dll所在的路径,它在第5步中拷入的win64文件夹中,例如:
D:\\NetBeansProjects\\CWordSeg\\file\win64\\NLPIR
注意:最后的NLPIR是文件名,不要加后缀.dll。
附:已经试验过,如果是64位操作系统,使用32位的文件将会报错。
(2)修Data文件夹所在的路径(即第5步中的Data文件夹),如下图所示:
D:\\NetBeansProjects\\CWordSeg\\file
(3)其他可以更改的地方:
编码格式:int charset_type = 1; 改为其它值。
其中:GBK对应0,UTF-8对应1,BIG5对应2,含繁体字的GBK对应3。
简化后代码如下:
package cwordseg; import java.io.UnsupportedEncodingException;
// import utils.SystemParas;
import com.sun.jna.Library;
import com.sun.jna.Native; /**
*
* 功能:基本的分词功能
* 最后更新时间:2016年3月14日 21:01:21
*/ public class CWordSeg {
// 定义接口CLibrary,继承自com.sun.jna.Library
public interface CLibrary extends Library {
// 定义并初始化接口的静态变量,用于加载NLPIR.dll,路径指向文件NLPIR.dll,但不加后缀dll
CLibrary Instance = (CLibrary) Native.loadLibrary("D:\\NetBeansProjects\\CWordSeg\\file\\win64\\NLPIR",CLibrary.class);
// 初始化函数声明:sDataPath是初始化路径地址,包括核心词库和配置文件的路径,encoding为输入字符的编码格式
public int NLPIR_Init(String sDataPath,int encoding,String sLicenceCode);
// 分词函数声明:sSrc为待分字符串,bPOSTagged=0表示不进行词性标注,bPOSTagged=1表示进行词性标注
public String NLPIR_ParagraphProcess(String sSrc,int bPOSTagged);
// 获取最后一个错误信息的函数声明
public String NLPIR_GetLastErrorMsg();
// 退出函数声明
public void NLPIR_Exit();
} public static String transString(String aidString,String ori_encoding,String new_encoding) {
try {
return new String(aidString.getBytes(ori_encoding),new_encoding);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return null;
} public static void main(String[] args) throws Exception {
String argu = "D:\\NetBeansProjects\\CWordSeg\\file"; // 该路径指向Data文件夹(系统核心词库)
// String system_charset = "UTF-8";
int charset_type = 1; // UTF-8编码模式,其它的GBK对应0,BIG5对应2,含繁体字的GBK对应3
int init_flag = CLibrary.Instance.NLPIR_Init(argu, charset_type, "0"); // 运行初始化函数,成功则返回1,失败返回0
String nativeBytes; // 初始化失败提示
if (0 == init_flag) {
nativeBytes = CLibrary.Instance.NLPIR_GetLastErrorMsg(); // 获取错误信息
System.err.println("初始化失败!原因:"+nativeBytes);
return;
} String sInput = "这是一本关于信息检索的书。"; // 手工输入的字符串sInput
try {
nativeBytes = CLibrary.Instance.NLPIR_ParagraphProcess(sInput, 1); // 运行分词函数
System.out.println("分词结果为: " + nativeBytes); // 输出分词结果
CLibrary.Instance.NLPIR_Exit(); // 退出
} catch (Exception ex) {
// TODO Auto-generated catch block
ex.printStackTrace();
}
}
}
运行结果:
出错解决:找不到主类CWordSeg
在第2步中修改了类名,需要用正确的方法修改,或者通过重构修正。

1---------java调用NLPIR(ICTCLAS2016)实现分词功能的更多相关文章
- ZH奶酪:Java调用NLPIR汉语分词系统
NLPIR工具 支持自定义词表: 可以离线使用: 下载地址:http://ictclas.nlpir.org/newsdownloads?DocId=389 在线演示:http://ictclas.n ...
- 2------------NLPIR(ICTCLAS2016)分词系统添加用户词典功能
备注:win7 64位系统,netbeans编程 基本代码框架参见我的另一篇文章:NLPIR分词功能 代码实现: package cwordseg; import java.io.Unsupporte ...
- Atitit java c# php c++ js跨语言调用matlab实现边缘检测等功能attilax总结
Atitit java c# php c++ js跨语言调用matlab实现边缘检测等功能attilax总结 1.1. 边缘检测的基本方法Canny最常用了1 1.2. 编写matlab边缘检测代码, ...
- 将封装了envi功能的IDL类导出成java类,方便java调用
目的: 用IDL将ENVI的功能封装成为IDL的类,并使用IDL的对象导出功能把这些功能类导出为java类,方便java调用.(本来想直接通过GP工具调用的,但是没有授权文件) 操作步骤: ...
- xmlrpc实现bugzilla api调用(无会话保持功能,单一接口请求)
xmlrpc实现bugzilla4 xmlrpc api调用(无会话保持功能,单一接口请求),如需会话保持,请参考我的另外一篇随笔(bugzilla4的xmlrpc接口api调用实现分享: xml ...
- Java调用C/C++编写的第三方dll动态链接库(zz)
这里主要用的方法是JNI.在网上查资料时看到很多人说用JNI非常的复杂,不仅要看很多的文档,而且要非常熟悉C/C++编程.恐怕有很多人在看到诸如此类的评论时已经决定绕道用其他方法了.本文将做详细的介绍 ...
- Rsession让Java调用R更简单
Rsession让Java调用R更简单 R的极客理想系列文章,涵盖了R的思想,使用,工具,创新等的一系列要点,以我个人的学习和体验去诠释R的强大. R语言作为统计学一门语言,一直在小众领域闪耀着光芒. ...
- java 调用webservice的各种方法总结
java 调用webservice的各种方法总结 几种流行的开源WebService框架Axis1,Axis2,Xfire,CXF,JWS比较 方法一:创建基于JAX-WS的webservice(包括 ...
- paip.java 调用c++ dll so总结
paip.java 调用c++ dll so总结 ///////JNA (这个ms sun 的) 我目前正做着一个相关的项目,说白了JNA就是JNI的替代品,以前用JNI需要编译一层中间库,现在JNA ...
随机推荐
- qt (5.60/5.70) 编译 QOCI 驱动
转载请注明原文链接http://www.cnblogs.com/majianming/p/5925105.html 在学习qt过程中,遇到了编译oracle驱动的问题,在开源协议下没有编译好的,那就只 ...
- jshint配置(js检查)
JSHint的选项配置 asi 如果是真,JSHint会无视没有加分号的行尾,自动补全分号一直是Javascript很有争议的一个语法特性.默认,JSHint会要求你在每个语句后面加上分号,但是如果你 ...
- Popmotion – 小巧,灵活的 JavaScript 运动引擎
Popmotion 是一个只有12KB的 JavaScript 运动引擎,可以用来实现动画,物理效果和输入跟踪.原生的DOM支持:CSS,SVG,SVG路径和DOM属性的支持,开箱即用.Popmoti ...
- Mongodb的备份,恢复,导入与导出(cmd命令行实现)
要用MongoDB,自然就要用到数据导入导出,就自己学习了一下. 在Mongo学习(二)中就讲到了在bin目录下有一些工具,本篇就是使用这些工具进行数据的导入导出及备份恢复. 注意:以下命令均在cmd ...
- 颜色渐变的JS代码
今天做组织机构,要分级别显示颜色,自己计算半天也没算出颜色渐变的方法,出来总是花里胡哨的难看的不要不要的,所以查了一下,找到一个js代码,试了试,很完美哦! <!DOCTYPE html> ...
- 利用ARCHPR明文破解获取PDF
我们经常下载一些rar或zip压缩文件,解压时有时发现要密码,而密码多是为了推广而设置的网址等,如果不知道密码,可 以去来源网站上寻找或在压缩文件的注释中查看. 而并非所有都是如此,例如,网上有些人, ...
- SharePoint2010升级到SharePoint2013操作手册
SharePoint2010升级到SharePoint2013操作手册 目 录 第一章 前言 3 第二章 升级前准备 3 第三章 升级流程图 5 第四章 升级过程 5 4.1 ...
- Sharepoint 2010 无法上传文件的问题
现象: 用户拥有某文档库的参与讨论权限,但是点击“上传文件”时,系统提示当前用户没有权限 (Access Denied) . 某用户拥有某文档库的参与讨论权限,“上传单个文件”按键是可以用的,但是“上 ...
- JavaScript学习01 语言简介、基本使用和变量声明
JavaScript语言简介.基本使用和变量声明 JavaScript是网景(Netscape)公司开发的一种基于客户端浏览器.面向对象.事件驱动式的网页脚本语言. JavaScript的前身叫Liv ...
- AndRoid studio创建APP图标
打开---File----New----Image asset 注意:在design页面可能没有image asset选项!必须在其他编辑页面! 这就打开了图标设置页面,找到自己想要的图标就好!下面框 ...