最近使用ictclas2013版,又名NLPIR汉语分词系统。在分词过程中,总会出现分词不准确的原因,造成很多本来是应该在一起的词,变成了拆分开了的词语,造成了提取关键词的非常不便利。不过幸好ictclas2013版有个新词添加功能。如果不知道怎么加入ictclas2013到项目中,请参考
中科院分词ictclas2013使用java调用
首先查看NLPIR分词系统接口说明文档: NLPIR_AddUserWord(byte[] str) ,这个就是加入新词的方法。如果按照上面的介绍,以及参考了网上一些相关的介绍,但是始终没有配置成功。仔细想想,str.getBytes();方法是有编码格式的,而记得java调用分词都是设置了编码格式为:"GB2312",所以新词添加一定要记得设置编码格式。
public static void main(String[] args) { try { String sInput = "张华平推出的NLPIR分词系统,又名ICTCLAS2013,新增新词识别、关键词提取、微博分词功能。"; NLPIR testNLPIR = new NLPIR(); String argu = "./file/"; System.out.println("初始化ictclas2013分词系统"); if (testNLPIR.NLPIR_Init(argu.getBytes("GB2312"),0) == false) { System.out.println("Init Fail!"); return; } /** * 1.添加新词,注意\t是tab键,你也可以用tab键:"分词系统 nn" * 2.getBytes的编码格式统一设置GB2312,否则无法识别新词 * 3.新词的词性可以自己添加,这里nn表示了新词 */ String s = "分词系统\tnn"; byte[] ret = s.getBytes("GB2312"); testNLPIR.NLPIR_AddUserWord(ret); /** * 1.这是永久保存在用户字典中,UserDIct.pdat会增加大小 */ // testNLPIR.NLPIR_SaveTheUsrDic(); /** * 1.去除新词,只需要使用:"分词系统" * 2.去除新词编码格式也必须:"GB2312",否则无法移除新词 */ // String ss = "分词系统"; // byte[] ress = ss.getBytes("GB2312"); // testNLPIR.NLPIR_DelUsrWord(ress); //执行分词过程 byte nativeBytes[] = testNLPIR.NLPIR_ParagraphProcess(sInput.getBytes("GB2312"), 1); String nativeStr = new String(nativeBytes, 0, nativeBytes.length, "GB2312"); System.out.println("分词结果为: " + nativeStr); testNLPIR.NLPIR_Exit(); } catch (Exception ex) { ex.printStackTrace(); } }