现在的位置: 首页 > 综合 > 正文

ICTCLAS2011_JNI学习笔记-ICTCLAS_ImportUserDictFile及ICTCLAS_SaveTheUsrDic接口

2013年02月07日 ⁄ 综合 ⁄ 共 3572字 ⁄ 字号 评论关闭

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就看不出来了~_~,希望看到的朋友可以留言赐教一下!)

调用示例:

 

 

Java代码  收藏代码
  1. package ICTCLAS.I3S.test;  
  2.   
  3. import java.io.BufferedReader;  
  4. import java.io.IOException;  
  5. import java.io.InputStreamReader;  
  6. import java.io.UnsupportedEncodingException;  
  7.   
  8. import ICTCLAS.I3S.AC.ICTCLAS50;  
  9.   
  10. public class Test_ImportUsrDict {  
  11.   
  12.     /** 
  13.      * @param args 
  14.      */  
  15.     public static void main(String[] args) {  
  16.         // TODO Auto-generated method stub  
  17.         ICTCLAS50 ictclas = new ICTCLAS50();  
  18.         String useage = "Useage : java Test_ICTCLAS_ParagraphProcess sPath [nPOSmap]";  
  19.         if (args.length < 1) {  
  20.             System.err.println(useage);  
  21.             return;  
  22.         }  
  23.         try {  
  24.             if (!ictclas.ICTCLAS_Init(args[0].getBytes("GB2312"))) {  
  25.                 System.err.println("Initial failed!");  
  26.                 return;  
  27.             }  
  28.             System.out.println("Initial successed!");  
  29.             String input = "中国科学院计算技术研究所在多年研究工作积累的基础上,研制出了汉语词法分析系统ICTCLAS。";  
  30.   
  31.             /* 设置词性标注集(0 计算所二级标注集,1 计算所一级标注集,2 北大二级标注集,3 北大一级标注集) */  
  32.             int nPosmap = args.length == 2 ? Integer.valueOf(args[1]) : 1;  
  33.             ictclas.ICTCLAS_SetPOSmap(nPosmap);  
  34.   
  35.             /* 导入用户词典前 */  
  36.             byte nativeBytes[] = ictclas.ICTCLAS_ParagraphProcess(input  
  37.                     .getBytes("GB2312"), 01);  
  38.             String nativeStr = new String(nativeBytes, 0, nativeBytes.length,  
  39.                     "GB2312");  
  40.             System.out.println("未导入用户词典的分词结果:" + nativeStr);  
  41.   
  42.             int nCount = 0;  
  43.             BufferedReader reader = new BufferedReader(new InputStreamReader(  
  44.                     System.in, "GB2312"));  
  45.             System.out.print("input the src file:");  
  46.             String usrdir = reader.readLine();  
  47.             // 第一个参数为用户字典路径,第二个参数为用户字典的编码类型(0:type  
  48.             // unknown;1:ASCII码;2:GB2312,GBK,GB10380;3:UTF-8;4:BIG5)  
  49.             nCount = ictclas.ICTCLAS_ImportUserDictFile(usrdir  
  50.                     .getBytes("GB2312"), 2);  
  51.             System.out.println("导入用户词个数" + nCount);  
  52.   
  53.             // 导入用户字典后再分词  
  54.             byte nativeBytes1[] = ictclas.ICTCLAS_ParagraphProcess(input  
  55.                     .getBytes("GB2312"), 01);  
  56.             String nativeStr1 = new String(nativeBytes1, 0,  
  57.                     nativeBytes1.length, "GB2312");  
  58.             System.out.println("导入用户词典:" + nativeStr1);  
  59.             ictclas.ICTCLAS_SaveTheUsrDic(); /* 保存用户词典 */  
  60.         } catch (UnsupportedEncodingException e) {  
  61.             // TODO Auto-generated catch block  
  62.             e.printStackTrace();  
  63.         } catch (IOException e) {  
  64.             // TODO Auto-generated catch block  
  65.             e.printStackTrace();  
  66.         } finally {  
  67.             // 释放分词组件资源  
  68.             ictclas.ICTCLAS_Exit();  
  69.         }  
  70.     }  
  71.   
  72. }  

 

抱歉!评论已关闭.