ICTCLAS2013 Java版本的使用方法

这个工具是什么?先看看他的官方介绍吧:


NLPIR汉语分词系统(又名ICTCLAS2013),主要功能包括中文分词;词性标注;命名实体识别;用户词典功能;支持GBK编码、UTF8编码、BIG5编码。新增微博分词、新词发现与关键词提取;张华平博士先后倾力打造十余年,内核升级10次。


[最近试用日期:2013-12-15]


ICTCLAS2013 c++版本的使用方法:点击打开链接

ICTCLAS2014 c++版本的使用方法:点击打开链接


Java32位版本下载地址:点击打开链接

介绍时候说:

        NLPIR汉语分词系统(又名ICTCLAS2013),在Windows环境下,32位,供Java调用的API,具体见示例。

        说明:本下载包仅仅是补充包,还需要下载 NLPIR汉语分词系统(又名ICTCLAS2013版)下载包 ,替换其中的dll即可。


“替换其中的dll即可”这句话还害的我折腾了一下午,我一直没有弄清楚到底如何操作。

后来我自己弄,弄OK了。很简单,很傻的方法。废话不多说,开始吧。

一,下载Java32位的版本,上面已经给出了。然后下载他的c++版本,里面有些东西需要用到的点击打开链接。


二,(可选)在eclipse中新建一个工程,就命令ICT吧,然后将Java32位的版本的rar解压文件中Win-32bit-JNI-lib文件夹下面的kevin文件夹和TestNLPIR.java文件(看图1)扔到工程ICT的src文件夹下面。记得将上述扔进去的东西添加到工程的build path。不会的话看这里:点击打开链接。不然工程运行时候报错:editor does not contain a main type



  图1.需要扔进ICT工程src的文件。

=========================如果就这么运行的话,会报错的。


三,上图剩下的那个玩意NLPIR_JNI.dll和c++版本(32位下载点击打开链接 文件名:20131115123549_nlpir_ictclas2013_u20131115_release.zip)中的bin文件夹下面一个NLPIR.dll扔到工程之外其他地方(我扔进工程里面,后面的import步骤报错,原因未知。)然后在工程中导入这个玩意,如何导入看这里点击打开链接,不然工程运行时候报错:no .... in java.library.path

================================现在运行的话,TestNLPIR.java运行37行就不能继续了。

[注意 如果机器版本是64位的,请下载64位NLPIR.dll  下载地址:点击打开链接 下载文件名:20131105115102_win64.zip  2013.12.15]


四,将c++版本的Data文件夹(是整个文件夹)放到ICT工程下面(我自己新建一个file文件夹,放入这个地方,形成路径“项目名/file/Data/***.**”)。然后修改TestNLPIR.java的31行这句:

        String argu = "../../";  ==>    String argu = "./file/";            (注意我是根据我自己建文件夹的地方修改的,这里指向Data文件夹,而不是Data里的文件)

================================现在运行的话,TestNLPIR.java运行43行就不能继续了


五,将c++版本的test文件夹扔进ICT工程下面(我是自己扔进去的),然后修改TestNLPIR.java的48 49两行:

String argu1 = "E:/NLPIR/test/test.TXT";
String argu2 = "E:/NLPIR/test/test_result1.TXT";

                ==>

String argu1 = "./test/test.TXT";
String argu2 = "./test/test_result1.TXT";                 (注意我是根据我自己建文件夹的地方修改的) 


继续修改76行

argu2 = "E:/NLPIR/test/test_result2.TXT";  ==>      argu2 = "./test/test_result2.TXT"; 


然后运行吧,可以看看ICT工程下面的test文件夹里面多一个test_result1.TXT文件,就是test.TXT分完词加词性后的结果。好像这个对一个句子分完词后自己加了一个空行。

截个图看看吧,图2 test.TXT 的一部分。 图3 test_result1.TXT一部分


图2 test.TXT 的一部分



图3 test_result1.TXT一部分


到此,已经正确运行。中间有一些问题我也没有解决,还有他的分词输出如何不加词性什么的我也没去研究。先到这里为止吧。

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

如果不要词性,修改第63行:

testNLPIR.NLPIR_FileProcess(argu1.getBytes("GB2312"), argu2.getBytes("GB2312"), 1);

==> testNLPIR.NLPIR_FileProcess(argu1.getBytes("GB2312"), argu2.getBytes("GB2312"), 0)

函数原型在NLPIR.java中public native   boolean NLPIR_FileProcess(byte[] sSrcFilename,byte[] sDestFilename,int bPOSTagged);



/-------------------------添加用户字典---------------------------------------/ 2013-5-28/

内存方式添加用户字典:

拿原文件中句子举例子:

待分词的句子:张华平推出的NLPIR分词系统,又名ICTCLAS2013,新增新词识别、关键词提取、微博分词功能。

原始(未加字典)分词结果:


可以在39行  //导入用户词典前下面试着加这么几句话:
    

String s = "分词系统	NN";
    byte[] ret = s.getBytes();
    testNLPIR.NLPIR_AddUserWord(ret);
现在的分词结果是这样的


                                                               ----------- "分词系统"被切分在一起了。

如果不想要这个单词了。

就删掉前面加的那些句子,新加入这么几句话:

String s = "分词系统";
    byte[] ret = s.getBytes();
    testNLPIR.NLPIR_DelUsrWord(ret);
现在的分词结果又如以前:




注意事项:1>添加单词的时候中间是tab键隔开。String s = "分词系统    NN";

          2>删除单词的时候千万不要带词性,仅删除单词。String s = "分词系统";

以上加入用户词典部分参考点击打开链接

你可能感兴趣的:(java,NLP)