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 北大一级标注集
ICTCLAS的JNI调用接口说明相关推荐
- Android Jni 调用
Chap1:JNI完全手册... 3 Chap2:JNI-百度百科... 11 Chap 3:javah命令帮助信息... 16 Chap 4:用javah产生一个.h文件... 17 Chap5:j ...
- 【Android】JNI调用(完整版)
原文出处:http://blog.csdn.net/kangyaping/article/details/6584027#t0 Chap1:JNI完全手册... 3 Chap2:JNI-百度百科... ...
- jni 从c传递map到java_java_jni 本地调用接口DLL的编写样本,涉及数组传递,相关的 和C程序均已包括。 Develop 256万源代码下载- www.pudn.com...
文件名称: java_jni下载 收藏√ [ 5 4 3 2 1 ] 开发工具: Java 文件大小: 8055 KB 上传时间: 2016-04-16 下载次数: 0 提 供 者: 普云 ...
- ictclas包 java_ICTCLAS分词系统Java调用接口在Eclipse中的安装
ICTCLAS分词系统Java调用接口在Eclipse中的安装 实验环境:JDK1.5.Eclipse3.1.XP操作系统 分词系统Java接口解压包:d:\fenci(http://www.nlp. ...
- ictclas包 java_Java通过JNI调用ICTCLAS中文分词包的方法
1)从网络上下载ICTCLAS分词包的Java JNI版本 2)新建Java项目,类代码为: public class Exec { public static void main(String[] ...
- jni 调用java接口_JNI 调用 JAVA 接口
JNI 调用 JAVA 接口 介绍 JNI 是本地语言编程接口.它允许运行在JVM中的Java代码和用C.C++或汇编写的本地代码相互操作. 由于一些加密等情况的需要,需要在 so 层获取一些信息用于 ...
- Android通过jni调用本地c/c++接口方法总结
网上有网友问android的原生应用,上层java代码如何通过jni调用本地的c/c++接口或第三方动态库 ?之前搞过android应用开发和底层c/c++接口开发都是一个人搞定,觉得还是蛮简单的.其 ...
- java jni调用dll文件_Java通过jni调用动态链接库
(1)JNI简介 JNI是Java Native Interface的缩写,它提供了若干的API实现了Java和其他语言的通信(主要是C&C++).从Java1.1开始,JNI标准成为java ...
- java在主程序修改函数输出,Java通过JNI调用CUDA
--NG 这段时间因为工作需要,要用到在java中调用cuda程序,但是令人蛋疼的是网上这方面的资料几乎没有,所以只好我自己摸索.我的想法是通过java的JNI接口调用cuda,但是很明显正常情况下是 ...
最新文章
- 【PAT乙级】1049 数列的片段和 (20 分)
- 小区社交应用:如何打破近在眼前的物理障碍和陌生感?
- 计算机视觉中的自监督表示学习近期进展
- fetch vue读取json文件_前端笔记——尝试理解并在JavaScript中使用Fetch()
- 【 .NET Core 3.0 】框架之九 || 依赖注入 与 IoC
- 2021年微信视频号生态趋势调查报告
- 遇到了消息堆积,但是问题不大
- springboot细节挖掘(集成ElasticSearch)
- Delphi无法修改Clientdataset的字段的解决方法
- windows server 2003安装pc套件ovi套件全过程?
- NB50/60 TJ1/TK1 模具 黑苹果保姆级教程整理
- 全外显子捕获测序的杂交和封闭原理
- SM74HC595D电路级联教程
- 关闭Windows Defender工具
- 华为Mate40Pro和华为Mate40Pro+ 哪个好
- WebRTC 报错:Failed to set remote offer sdp: Called with SDP without DTLS fingerprint
- SPA项目开发之登录
- 在医疗行业中,FPGA扮演什么角色?
- 百度和360的关键词提交
- Clair助力Docker镜像安全