智能语言-中科院分词系统ICTCLAS(NLPIR)

时间:2021-03-15 17:30:48

智能语言的处理中,第一个步骤就是分词。一个句子处理的第一步就是分词了,目前而言中文分词中效果最好的就是中科院分词系统。在2014版本以及之前称为ICTCLAS,之后的版本都更名为NLPIR。
我给出一个最简单的使用教程,能够帮助新手快速上手使用。
我使用的开发环境是eclipse,32位操作系统
首先是下载,下载两个压缩包,一个是分词包一个接口包,ICTCLAS是纯C编写,在java上使用需要JNI也就是c语言加一个java接口,NLPIR有java版本,我使用的是ICTCLAS加一个接口的方法。
点击转至下载地址,代码为U1115的是32位分词包U1105是64位。http://ictclas.nlpir.org/newsdownloads?DocId=384 下载JNI。
分别解压后待用。
解压开分词包,新建一个项目,将Data目录拷贝到file目录;解压开JNI包将NLPIR.dll动态链接库放到项目目录下,与file目录同级。想利用原有文献测试的话把test也复制过去。我的图传不上来,借用一张图。
智能语言-中科院分词系统ICTCLAS(NLPIR)
复制一点代码测试一下

public class TestUTF8 {
public static void main(String[] args) {
try {
testUTF8();
} catch (Exception e) {
e.printStackTrace();
}
}

static void testUTF8() throws Exception {
// 创建接口实例
NLPIR nlpir = new NLPIR();
if (!NLPIR.NLPIR_Init("./file/".getBytes("utf-8"), 1)) {
System.out.println("NLPIR初始化失败...");
return;
}
String temp = "每天的日报都记得要发送, 以配合经理掌握项目的进度情况.";
// 要统一编码, 否则分词结果会产生乱码
byte [] resBytes = nlpir.NLPIR_ParagraphProcess(temp.getBytes("UTF-8"), 1);
//byte [] resBytes = nlpir.NLPIR_ParagraphProcess(temp.getBytes("UTF-8"), 0);
System.out.println("分词结果: " + new String(resBytes, "UTF-8"));

String utf8File = "./test/test-utf8.TXT";
String utf8FileResult = "./test/test-utf8_result.TXT";
nlpir.NLPIR_FileProcess(utf8File.getBytes("utf-8"), utf8FileResult.getBytes("utf-8"), 1);
// nlpir.NLPIR_FileProcess(utf8File.getBytes("utf-8"), utf8FileResult.getBytes("utf-8"), 0);//不带有词性标注的分词结果
// 退出, 释放资源
NLPIR.NLPIR_Exit();
}
}

试试看,如果出现一行错误,那么恭喜你,你下载的分词包过期了^-^下载一个最新的版本,也就是NLPIR或者是ICTCLAS2015,把里面的data文件夹复制替换了,这里好多博客都写错了,并不完全是编码的问题data过期才是最主要的。