MyException - 我的异常网
当前位置:我的异常网» 综合 » 汉语言分词工具 ICTCLAS2013 Java版本的使用

汉语言分词工具 ICTCLAS2013 Java版本的使用

www.myexceptions.net  网友分享于:2013-04-10  浏览:134次
中文分词工具 ICTCLAS2013 Java版本的使用

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


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


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++版本中的bin文件夹下面一个NLPIR.dll扔到工程之外其他地方(我扔进工程里面,后面的import步骤报错,原因未知。)然后在工程中导入这个玩意,如何导入看这里点击打开链接,不然工程运行时候报错:no .... in java.library.path

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


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

        String argu = "../../";  ==>    String argu = "./file/";            (注意我是根据我自己建文件夹的地方修改的) 

================================现在运行的话,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);


2楼L2HL2H昨天 15:33
运行的时,初始化总是失败。是不是data路径写错了呢
Re: hellonlp昨天 15:51
回复L2HL2Hnok 加你
1楼L2HL2H昨天 15:20
路径也没错啊!!因为定义的路径能获取到目录下面的所有文件名。n String argu = "./data/";n File file = new File(argu);n file.isDirectory()==truen。跪求指导QQ:842817794

文章评论

软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有