这个工具是什么?先看看他的官方介绍吧:
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 = "分词系统";
以上加入用户词典部分参考点击打开链接