最近使用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();
}
}