OpenSource NLPIR/ICTCLAS Java Application和Web Application下使用
一、Java Application下使用:
新建某个Java 项目,假设名为NLPIR_Test;
第一步:下载ICTCLAS的Java版本(2013)版本,然后解压出Data和NLPIR_JNI.dll两个文件,都放在NLPIR_Test下面,也就是与src目录同级别;
第二步:把NLPIR.java原封不动的拷出来,然后放到src目录中,注意这个package名称是kevin.zhang.(千万注意,这个包名不能修改,否则会出现错误)
然后调整NLPIR.java里面的dll加载路径
代码如下:
package kevin.zhang; import java.io.File; public class NLPIR { public static String dllPath = "NLPIR_JNI"; static { /** * load() load an absolute path * "F:\\Workspaces2015Job\\nlp\\NLPIR_JNI.dll"; * "NLPIR_JNI.dll" * in JAVA Application * loadLibrary() load an relative path * "C:\\Program Files\\Tomcat 7.0\\lib\\NLPIR_JNI.dll" */ /*if (new File(dllPath).exists()) { System.load(dllPath); }else{ System.loadLibrary(dllPath); }*/ dllPath = "F:\\Workspaces2015Job\\nlp\\NLPIR_JNI.dll"; System.load(dllPath); } public static native boolean NLPIR_Init(byte[] paramArrayOfByte1, int paramInt, byte[] paramArrayOfByte2); public static native boolean NLPIR_Exit(); public native int NLPIR_ImportUserDict(byte[] paramArrayOfByte); public native float NLPIR_GetUniProb(byte[] paramArrayOfByte); public native boolean NLPIR_IsWord(byte[] paramArrayOfByte); public native byte[] NLPIR_ParagraphProcess(byte[] paramArrayOfByte, int paramInt); public native boolean NLPIR_FileProcess(byte[] paramArrayOfByte1, byte[] paramArrayOfByte2, int paramInt); public native byte[] nativeProcAPara(byte[] paramArrayOfByte); public native int NLPIR_AddUserWord(byte[] paramArrayOfByte); public native int NLPIR_SaveTheUsrDic(); public native int NLPIR_DelUsrWord(byte[] paramArrayOfByte); public native int NLPIR_SetPOSmap(int paramInt); public native int NLPIR_GetElemLength(int paramInt); public native byte[] NLPIR_GetKeyWords(byte[] paramArrayOfByte, int paramInt, boolean paramBoolean); public native byte[] NLPIR_GetFileKeyWords(byte[] paramArrayOfByte, int paramInt, boolean paramBoolean); public native byte[] NLPIR_GetNewWords(byte[] paramArrayOfByte, int paramInt, boolean paramBoolean); public native byte[] NLPIR_GetFileNewWords(byte[] paramArrayOfByte, int paramInt, boolean paramBoolean); public native boolean NLPIR_NWI_Start(); public native int NLPIR_NWI_AddFile(byte[] paramArrayOfByte); public native boolean NLPIR_NWI_AddMem(byte[] paramArrayOfByte); public native boolean NLPIR_NWI_Complete(); public native byte[] NLPIR_NWI_GetResult(boolean paramBoolean); public native int NLPIR_NWI_Result2UserDict(); }
特别说明:最好选择System.load()的方式加载,System.load()是以绝对路径来加载,System.loadLibary()是以相对路径来加载;
以相对路径加载必须得在java.library.path的路径下,而且不需要dll后缀名,可以通过System.getProperty(“java.library.path”)来查看该路径;
当然在当前项目的class-path下面也是可以通过相对路径来加载,也可以通过修改cmd下的path(或者编辑环境变量)来修改这个java.library.path,但是修改完之后最好重启一下MyEclipse或者Eclipse编辑器,以便使修改生效,总之不推荐使用相对路径来加载。
第三步:就是把TestNLPIR.java拷贝出来,放到src目录下,然后就可以随便写个测试文件来运行了。
特别注意:如果出现“Not valid license or your license expired! ”这样的错误,那就把最新的Data下的NLPIR.user替换掉当前的NLPIR.user文件即可。
如果依然出现这样的问题,那么
1、将授权文件拷贝到项目的Data文件夹下,重启项目即可 2、非商用永久免费,为确保我们大家拿到最新版本,非商用授权为1月;授权到期后,可以访问网站获得最新授权与最新的程序包;如果需要长期授权,请联系商用授权。 开发者:张华平/Dr. Kevin Zhang</br> NLPIR官方网站:<http://www.nlpir.org/> 在线演示网址: http://ictclas.nlpir.org/nlpir/ 联系方式: 张华平 博士 副教授 研究生导师 北京理工大学网络搜索挖掘与安全实验室 主任 地址:北京海淀区中关村南大街5号 100081 手机:13681251543 电话:+86-10-68918642 Email:kevinzhang@bit.edu.cn MSN: pipy_zhang@msn.com; 网站: http://www.nlpir.org (自然语言处理与信息检索共享平台) 博客:http://hi.baidu.com/drkevinzhang/ 微博:http://www.weibo.com/drkevinzhang/ Dr. Kevin Zhang (张华平,Zhang Hua-Ping) Associate Professor, Graduate Supervisor Director, Web Search,Mining and Security Lab. Beijing Institute of Technology Add: No.5, South St.,Zhongguancun,Haidian District,Beijing,P.R.C PC:100081 Mobile:+86-13681251543 Tel: +86-10-68918642 Email:kevinzhang@bit.edu.cn
很有可能就是这个一个月的试用期过了,你要获得新的license才能运行了,显然这个工具不是一个适合开源项目长期使用的。
二、Web Application下使用:
如果是在web项目下使用的话,可能会有一些改变:
第一步:新建一个Web_Test项目,然后把Data放在WebROOT->WEB-INF->classes下面;
第二步:采用相对加载的方式,System.loadLibrary(),把NLPIR_JNI.dll放置到Tomcat下面的bin目录下;如果实在不行,就把Tomcat下面的bin目录添加到Path中;
第三步:其它的基本上不用改变,然后就可以运行了。然后也可以和Spring进行整合了。

浙公网安备 33010602011771号