汉语分词一直来说都是进行文本分析的瓶颈,这里介绍一个汉语分词系统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文件夹中,以供调用,如下:
- Data目录:主要存放系统自带的各个词典文件、词性标注映射集及用户自定义词典等,在初始化时会根据配置文件的配置信息加载本目录下的词典
- Configure.xml文件:系统配置文件,主要有data目录的路径信息、日志文件信息、词典修改信息等
- usr.lic:授权文件,缺少合法的授权文件将无法成功加载
- ICTCLAS50.dll:ICTCLAS的动态链接库,各个接口的实现
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{
}
}
}
结果如下: