汉语分词一直来说都是进行文本分析的瓶颈,这里介绍一个汉语分词系统ICTCLAS,全球很受欢迎的汉语分词开源系统,曾获得首界国际分词大赛综合排名第一,国家973评测第一名;支持词典,多级词性标注,支持人名、地名、组织名,分词速500KB/s左右,分词精度98.45%,API不超过100KB,各种词典数据压缩后不到3M。一个非常优秀的分词系统,具体下载地址:http://ictclas.org/
下面是它的可视化界面:
该分词系统是开源的,可以供多种程序语言API进行调用 ,下面介绍一个java调用方法:
首先,下载java相应的win平台下的api,网址:http://ictclas.org/ictclas_feedback.aspx?packetid=50&packeturl=down/50/ICTCLAS50_Windows_32_JNI.rar
然后,解压打开API文件夹,里面共有8个文件
新建一个java项目,除ICTCLAS文件夹外,所有的文件均拷到java项目的根目录下,ICTCLAS文件夹整个拷到java项目中的src文件夹中,以供调用,如下:
ICTCLAS_Init及ICTCLAS_Exit接口之所以放在一块是因为,无论在什么程序下,这两个接口都应该被调用。
1、ICTCLAS_Init(byte[] sPath)接口:
* Method: ICTCLAS_Init<!读取配置文件,加载词典等>
* Parameter: byte[] sPath<!配置文件configure.xml,授权文件user.lic及data文件夹所在路径的字节编码 >
* Returns: bool<!初始化是否成功>
* Description: 调用其它任何接口前,必须保证本接口调用成功!
2、ICTCLAS_Exit()接口:
* Method: ICTCLAS_Exit<! 退出,释放相关资源>
* Returns: ICTCLAS_API bool<! 退出是否成功>
* Description: 所有操作完成后,请调用本接口释放相关资源!
下面是给出的测试代码:
package tokenization; import ICTCLAS.I3S.AC.ICTCLAS50; public class test { public static void main(String[] args) { ICTCLAS50 testICTCLAS50 = new ICTCLAS50(); try { //分词所需库的路径 String argu = "."; //初始化 if (testICTCLAS50.ICTCLAS_Init(argu.getBytes("GB2312")) == false){ System.out.println("Init Fail!"); return; } else { System.out.println("Init Succeed!"); } String sInput="点击下载超女纪敏佳深受观众喜爱。禽流感爆发在非典之后。"; byte nativeBytes[] = testICTCLAS50.ICTCLAS_ParagraphProcess(sInput.getBytes("GB2312"), 0, 1); System.out.println(nativeBytes.length); String nativeStr = new String(nativeBytes, 0, nativeBytes.length, "GB2312"); System.out.println("The result is :" + nativeStr); testICTCLAS50.ICTCLAS_Exit(); } catch (Exception ex) { } finally{ } } }