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 ...
随机推荐
- codeforces 700A As Fast As Possible 二分求和?我觉得直接解更好
分析:一辆车最多载k个人,车的速度肯定比人快,所以想要到达时间最短,那么每个人必须做一次公交车.那么把n个人分成p=(n+k-1)/k组.设最短时间为t,每人乘车时间为t1,则t1*v2+(t-t1) ...
- Razor语法大全
本文页面来源地址:http://www.cnblogs.com/dengxinglin/p/3352078.html Razor是基于framewor4以上写的一个开源项目:https://githu ...
- java集合-HashMap
HashMap基于哈希表的 Map 接口的实现,以 key-value 的形式存在.在 HashMap 中,key-value 总是会当做一个整体来处理,系统会根据 hash 算法来来计算 key-v ...
- (原) tmux安装与使用
本文为原创文章,转载请注明出处,谢谢 tmux安装 1.yum search tmux 2.yum install package (package为选择要安装的包名,如上图“tmux.x86_64” ...
- js 小数[非]四舍五入
1.四舍五入 (2.678).toFixed(2) // 2.68 2.不需要四舍五入 (parseInt(2.678*100)/100.0).toFixed(2) // 2.67 3.字节单位转换 ...
- Face++ – 提供给你实时的脸部识别 API
Face++ 是一个小巧,功能强大,跨平台的服务,由Megvii公司建立,致力于建立一个新的视觉平台.它使用计算机视觉尖端科技和数据挖掘,提供3个核心视觉服务(探测,识别和分析).基于 Face++ ...
- Hello.js – Web 服务授权的 JavaScript SDK
Hello.js 是一个客户端的 Javascript SDK,用于实现 OAuth2 认证(或者基于 OAuth 代理实现的 OAuth1)的 Web 服务和查询 REST API. HelloJS ...
- 【iScroll源码学习04】分离IScroll核心
前言 最近几天我们前前后后基本将iScroll源码学的七七八八了,文章中未涉及的各位就要自己去看了 1. [iScroll源码学习03]iScroll事件机制与滚动条的实现 2. [iScroll源码 ...
- SharePoint回环检查(Loopback Check)相关问题
Loopback Check(回环检查)本来不是一个SharePoint问题,是Windows Server为了增强自身安全性在Server 2003 SP1后引入的一个功能, 在近几个月中导致了一系 ...
- webbench 压力测试
原文 webbench最多可以模拟3万个并发连接去测试网站的负载能力,个人感觉要比Apache自带的ab压力测试工具好用,安装使用也特别方便,并且非常小. 主要是 -t 参数用着比较爽,下面参考了张宴 ...