`
andyliuxs
  • 浏览: 136733 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

ICTCLAS2011_JNI学习笔记-ICTCLAS_ImportUserDictFile及ICTCLAS_SaveTheUsrDic接口

 
阅读更多

1、int ICTCLAS_ImportUserDictFile(byte[] sPath, int eCodeType)接口:

     * Method:     ICTCLAS_ImportUserDictFile<! 导入用户词典文件>
     * Parameter:  byte[] sPath<! 用户词典路径名称>
     * Parameter:  int eCodeType<!词典编码类型>
     * Returns:      ICTCLAS_API int<! 成功导入的词汇数量>
     * Description: 用户导入词汇文件格式如下:
                         1.词语与词性用'@@'间隔。例如:“中科院@@nr;
                         2.一行一词;
                         3.词性可省略

2、int ICTCLAS_SaveTheUsrDic()接口:

     * Method:     ICTCLAS_SaveTheUsrDic<!保存用户词典>
     * Description:1.本接口将会覆盖原有/data/文件夹用户相关词典。 
                           2.用户可在配置文件中,指定下次是否使用该词典。

 

 

 其中,ICTCLAS_ImportUserDictFile接口用来以文件的形式来导入用户自定义词典,导入后可以选择性的调用ICTCLAS_SaveTheUsrDic接口用以将其保存在data目录下,这时目录下面会多出UserDict.map、UserDict.pos、UserDict.pdat三个文件,并且可以通过修改configure.xml配置文件选择是否加载该用户词典。(这三个文件的具体含义,我还说不清楚,从后缀名来看的话.map文件应该是词性映射文件,.pos文件或是词性标注文件,.pdat就看不出来了~_~,希望看到的朋友可以留言赐教一下!)

调用示例:

 

 

package ICTCLAS.I3S.test;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;

import ICTCLAS.I3S.AC.ICTCLAS50;

public class Test_ImportUsrDict {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		ICTCLAS50 ictclas = new ICTCLAS50();
		String useage = "Useage : java Test_ICTCLAS_ParagraphProcess sPath [nPOSmap]";
		if (args.length < 1) {
			System.err.println(useage);
			return;
		}
		try {
			if (!ictclas.ICTCLAS_Init(args[0].getBytes("GB2312"))) {
				System.err.println("Initial failed!");
				return;
			}
			System.out.println("Initial successed!");
			String input = "中国科学院计算技术研究所在多年研究工作积累的基础上,研制出了汉语词法分析系统ICTCLAS。";

			/* 设置词性标注集(0 计算所二级标注集,1 计算所一级标注集,2 北大二级标注集,3 北大一级标注集) */
			int nPosmap = args.length == 2 ? Integer.valueOf(args[1]) : 1;
			ictclas.ICTCLAS_SetPOSmap(nPosmap);

			/* 导入用户词典前 */
			byte nativeBytes[] = ictclas.ICTCLAS_ParagraphProcess(input
					.getBytes("GB2312"), 0, 1);
			String nativeStr = new String(nativeBytes, 0, nativeBytes.length,
					"GB2312");
			System.out.println("未导入用户词典的分词结果:" + nativeStr);

			int nCount = 0;
			BufferedReader reader = new BufferedReader(new InputStreamReader(
					System.in, "GB2312"));
			System.out.print("input the src file:");
			String usrdir = reader.readLine();
			// 第一个参数为用户字典路径,第二个参数为用户字典的编码类型(0:type
			// unknown;1:ASCII码;2:GB2312,GBK,GB10380;3:UTF-8;4:BIG5)
			nCount = ictclas.ICTCLAS_ImportUserDictFile(usrdir
					.getBytes("GB2312"), 2);
			System.out.println("导入用户词个数" + nCount);

			// 导入用户字典后再分词
			byte nativeBytes1[] = ictclas.ICTCLAS_ParagraphProcess(input
					.getBytes("GB2312"), 0, 1);
			String nativeStr1 = new String(nativeBytes1, 0,
					nativeBytes1.length, "GB2312");
			System.out.println("导入用户词典:" + nativeStr1);
			ictclas.ICTCLAS_SaveTheUsrDic(); /* 保存用户词典 */
		} catch (UnsupportedEncodingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			// 释放分词组件资源
			ictclas.ICTCLAS_Exit();
		}
	}

}

 

0
2
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics