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进行整合了。

posted @ 2015-12-23 13:16  √珞珈搬砖工√  阅读(219)  评论(0)    收藏  举报