ICTCLAS的JNI调用接口说明

1.  ICTCLAS_Init


    功能:初始化分析器并根据配置文件为ICTCLAS准备必要的数据.


    方法:boolean  ICTCLAS_Init(byte[]  sPath);


    返回:如果初始化成功则返回true,否则返回false;


    参数:sPath:初始化词典路径,Configure.xml和Data文件夹储存的位置


    说明:在使用ICTCLAS的任何操作前这个方法必须被引用,ICTCLAS_Exit方法用来退出分析器,如果初始化不成功的话,ICTCLAS的任何操作都会失败。


初始化失败主要可能是下边两个原因:1)所需的数据不兼容或丢失2)配置文件丢失或者sPath参数无效。当然,还可以从ICTCLAS的log fie(日志文件)中找出问题。


 


2.  ICTCLAS_Exit


    功能:退出程序,释放所有资源,释放在ICTCLAS中使用的所有缓冲器。


    方法:boolean  ICTCLAS_Exit();


    返回:如果释放成功则返回true,否则返回false;


    参数:没有参数


    说明:在不使用ICTCLAS时,必须使用该函数退出分词器,调用ICTCLAS_Init函数再次使用ICTCLAS.


 


3.  ICTCLAS_ImportUserDict


     功能:从一个文本文件中导入用户用户自定义词典


     方法:int  ICTCLAS_ImportUserDict(byte[]  sPath);


     返回:成功导入的词汇条目数量


     参数:用户词典的文本文件的路径


    说明:只有激活这个功能时,用户定义的词典才管用,如果你在配置文件中设置UserDict为”on”是ICTCLAS就会自动导入这些词汇,如果设置为”off”,用户自定义的词汇就不会被应用。


 


4.  ICTCLAS_ParagraphProcess


     功能:处理一段文字,返回结果


    方法:byte[]  ICTCLAS_ParagraphProcess(byte[]  sSrc,bPosTagged);


     返回:字节数组


     参数:sSrc:源文本,待处理的文本


           bPosTagged:判断是否需要词性标注,0表示不标注,1表示标注。


         说明:无。


 


5.  ICTCLAS_FileProcess


     功能:处理一个文本文件


    方法:boolean ICTCLAS_FileProcess(byte[] sSrcFilename,byte[] sDestFilename,int bPOSTagged);


    返回:如果处理成功返回true,否则返回false.


    参数:sSrcFilename:待分析的文件的文件名


          sDestFilename:处理后的结果储存的文件名


          bPosTagged:是否需要词性标注,0表示不标注,1表示标注。


    说明:输出的格式(output format)有配置文件(configure.xml)来定义。


 


6.  ICTCLAS_IsWord


     功能:在词典中查找,确定这个单词是否在核心词汇中列出


     方法:boolean  ICTCLAS_IsWord(byte[]  sWord);


     返回:如果存在则返回true,否则返回false


     参数:sWord:要搜索的单词


     例子:(只给出片段,方便理解,testICTCLAS是ICTCLAS2010的一个实例)


        String str="中国";


        boolean bExist=testICTCLAS.ICTCLAS_IsWord(str.getBytes("GB2312"));


        System.out.println(str+" exists?"+bExist);


        float dProb=testICTCLAS.ICTCLAS_GetUniProb(str.getBytes("GB2312"));


        System.out.println(str+" Probability= "+dProb);


 


        testICTCLAS.ICTCLAS_Exit();


        结果输出:


        中国 exists?true


        中国 Probability= 0.0022491838


 


7.  ICTCLAS_GetUniProb


    功能:获取给定单词的unigram概率


    方法:float ICTCLAS_GetUniProb(byte[]  sWord);


    返回:返回概率值


    参数:sWord:需要求值的单词


 


8.  nativeProcAPara


    方法:public native byte[] nativeProcAPara(byte[] src);


        struct result_t{


            int start; //start position,词语在输入句子中的开始位置


            int length; //length,词语的长度


            char  sPOS[POS_SIZE];//word type,词性ID值,可以快速的获取词性表


            int iPOS;//词性


 


            int word_ID; //如果是未登录词,设成或者-1


 


            int word_type; //区分用户词典:1是用户词典中的词0非用户词典中的词


 


            int weight;// word weight


       };


     返回:结构向量的指针,由系统管理,用户不干预。


    参数:src:源文本


    例子:见第12个方法中


 


9.   ICTCLAS_AddUserWord


    功能:添加一个单词到用户词典


    方法:int ICTCLAS_AddUserWord(const char *sWord);


    返回:成功则返回1,否则返回0


    参数:sWord:要添加的单词


    例子:


        ICTCLAS_AddUserWord(“爱思客 n”);//添加词:爱思客\t词性。其中“爱思客”为要添加的词,“n”为词的词性,”\t”为分隔符


 


10.  ICTCLAS_SaveTheUsrDic


    功能:将用户词典保存在硬盘上


    方法:public native int ICTCLAS_SaveTheUsrDic();


    返回:保存成功则返回1,否则返回0;


    例子:(部分代码,testICTCLAS是ICTCLAS2010的一个实例)


        //动态添加用户词


         String str = "爱思客";


         testICTCLAS.ICTCLAS_AddUserWord(str.getBytes("GB2312"));   


        testICTCLAS.ICTCLAS_SaveTheUsrDic();//保存用户词典


 


11.  ICTCLAS_DelUsrWord


    功能:从用户词典中删除一个单词


    方法:public native int ICTCLAS_DelUsrWord(byte[]  sWord);


    返回:如果该单词在用户词典中不存在,则返回1,否则返回删除该单词的handle


    参数:要删除的单词


    例子:


        String str = "iThinker";


        testICTCLAS.ICTCLAS_AddUserWord(str.getBytes("GB2312"));


        testICTCLAS.ICTCLAS_DelUsrWord(str.getBytes("GB2312"));


        testICTCLAS.ICTCLAS_SaveTheUsrDic();//保存用户词典 


 


12.  ICTCLAS_KeyWord


    功能:从一段话中抽取出关键字


    方法:public int ICTCLAS_KeyWord(byte[] resultKey, int  nCountKey);


    返回:返回键号(the key number);


    参数:resultKey:the returned key word


          nCountKey:the returned key num,可以从以下方式获得:


              nativeBytes = testICTCLAS.nativeProcAPara(str.getBytes("GB2312"));


              int nativeElementSize = 4 *6+8;//size of result_t in native code,depend on the complie


    说明:用这个方法之前必须执行nativeProcAPara方法


    例子:


            //关键词提取


            int nCountKey = 0;


           str = "点击下载超女纪敏佳深受观众喜爱。禽流感爆发在非典之后。";


            nativeBytes =testICTCLAS.nativeProcAPara(str.getBytes("GB2312"));


 


           int nativeElementSize = 4 * 6 +8;//size of result_t in native code


           int nElement = nativeBytes.length / nativeElementSize;


           ByteArrayInputStream(nativeBytes));


 


           nativeBytes = new byte[nativeBytes.length];


           nCountKey = testICTCLAS.ICTCLAS_KeyWord(nativeBytes, nElement);


 


           Result[] resultArr = new Result[nCountKey];


           DataInputStream dis = new DataInputStream(new ByteArrayInputStream(nativeBytes));


           for (int i = 0; i < nCountKey; i++){


               resultArr[i] = new Result();


               resultArr[i].start = Integer.reverseBytes(dis.readInt());


               resultArr[i].length = Integer.reverseBytes(dis.readInt());


               dis.skipBytes(8);


               resultArr[i].posId = Integer.reverseBytes(dis.readInt());


               resultArr[i].wordId = Integer.reverseBytes(dis.readInt());


               resultArr[i].word_type = Integer.reverseBytes(dis.readInt());


               resultArr[i].weight = Integer.reverseBytes(dis.readInt());


           }


           dis.close();


 


            for (int i = 0; i < resultArr.length; i++){


                System.out.println("start=" + resultArr[i].start + ",length=" + resultArr[i].length + "pos=" + resultArr[i].posId + "word=" + resultArr[i].wordId + "  weight=" + resultArr[i].weight);


            }


 


            testICTCLAS.ICTCLAS_Exit();


 


12.  ICTCLAS_FingerPrint


    功能:从段落中提取出一个指纹(the finger print)


    返回:失败则返回0,否则返回返回内容的指纹(the finger print)


    参数:无


    说明:必须在nativeProcAPara方法调用之后


    例子:


            str = "点击下载超女纪敏佳深受观众喜爱。禽流感爆发在非典之后。";


            nativeBytes = testICTCLAS30.nativeProcAPara(str.getBytes("GB2312"));


 


           long finger = testICTCLAS30.ICTCLAS_FingerPrint();//指纹提取


 


            testICTCLAS30.ICTCLAS_Exit();


 


13.  ICTCLAS_SetPOSmap


    功能:设置要使用的磁性标注集


    方法:public native int ICTCLAS_SetPOSmap(int  nPOSmap);


    返回:返回1如果执行成功的话,否则返回0


    参数:nPOSmap:


         ICT_POS_MAP_FIRST  计算所一级标注集


         ICT_POS_MAP_SECOND  计算所二级标注集


         PKU_POS_MAP_SECOND   北大二级标注集


         PKU_POS_MAP_FIRST     北大一级标注集
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值