package ICTCLAS.I3S.Test;
import java.io.UnsupportedEncodingException;
import ICTCLAS.I3S.AC.ICTCLAS50;
public class Test_UserDic {
/**
* @param args
* @throws UnsupportedEncodingException
*/
public static void main(String[] args) throws UnsupportedEncodingException {
ICTCLAS50 ictclas = new ICTCLAS50();
//initial
String argu = "."; //当前目录
if (ictclas.ICTCLAS_Init(argu.getBytes("UTF-8")) == false) {
System.err.println("Initail fail!");
return;
}
System.out.println("Initial success!");
String input = "中国科学院计算技术研究所在多年研究工作积累的基础上,研制出了汉语词法分析系统ICTCLAS。千万科学家";
//未添加词典前分词
System.out.println(input);
ictclas.ICTCLAS_SetPOSmap(ictclas.PKU_POS_MAP_FIRST);
byte nativeBytes[] = ictclas.ICTCLAS_ParagraphProcess(input.getBytes("UTF-8"), 0, 1);
String result = new String(nativeBytes, 0, nativeBytes.length, "UTF-8");
System.out.println("未导入用户词典的分词结果是:\t" + result);
//添加用户词典分词
int count = 0;
String userDir = "userDict.txt"; //用户词典路径
byte[] userDirb = userDir.getBytes();
count = ictclas.ICTCLAS_ImportUserDictFile(userDirb, 3);
System.out.println("\n导入用户词个数:\t" + count);
count = 0;
//导入用户词典后再分词
byte[] nativeBytes1 = ictclas.ICTCLAS_ParagraphProcess(input.getBytes("UTF-8"), 0, 1);
String result1 = new String(nativeBytes1, 0, nativeBytes1.length, "UTF-8");
System.out.println("导入用户词典后的分词结果是:\t" + result1);
//退出,释放分词组件资源
ictclas.ICTCLAS_Exit();
}
}
用户词典如下:
舟曲县城@@ZQXC
连夜@@LY
中国科学院@@v
工作@@t
研究@@nb
国科@t
万科@y
结果如下:
Initial success!
中国科学院计算技术研究所在多年研究工作积累的基础上,研制出了汉语词法分析系统ICTCLAS。千万科学家
未导入用户词典的分词结果是: 中国科学院/n 计算技术/n 研究/v 所/u 在/v 多年/m 研究/v 工作/v 积累/v 的/u 基础/n 上/f ,/w 研制/v 出/v 了/u 汉语/n 词法分析/n 系统/n ICTCLAS/x 。/w 千/m 万/m 科学家/n
导入用户词个数: 7
导入用户词典后的分词结果是: 中国科学院/n 计算技术/n 研究/v 所/u 在/v 多年/m 研究/v 工作/v 积累/v 的/u 基础/n 上/f ,/w 研制/v 出/v 了/u 汉语/n 词法分析/n 系统/n ICTCLAS/x 。/w 千/m 万/m 科学家/n
没有变化!
看到网上有说用户词典是优先的,(2,用户词典的词的优先级貌似太高了。我在用户词典里加了“万科”这个词,结果测试语句“千万科学家”也被分成了“千/ 万科/ 学/ 家”)
但是我这里分词结果没有变化?自己来顶一下吧!你好!我最近也在看中文分词,我想请问LZ,这里面自己建的词典格式是什么样的?