ictclas是中科院计算所出品的中文分词程序包,在国内一直有着良好的口碑和很高的使用率。之前一直只有 c 的版本提供,而现在c#,delphi和java版本已经纷纷出炉。下面用一个极小的例子,让大家10分钟之内就能用上ictclas ,从此也开始自己的文本分类和搜索引擎开发之路。

需要首先说明的是,不同于以前的c 版提供的jni调用,本次使用的是纯java版本的ictclas,下载地址在http://ictclas.org/down_opensrc.asp。

好,假设你已经下载了我们需要使用的java版本ictclas4j,现在把它解压缩,然后把data文件夹整个拷贝到eclipse项目的文件夹下,bin目录下的org文件夹整个拷贝到你eclipse项目的bin目录下,把src目录下的org文件夹整个拷贝到eclipse项目的src目录下(最简单快捷的使用方式,或者你自己打成jar包,这样无论放到哪里,都可以在build path里面导入这个jar包啦)。

现在就可以在你的项目里新建一个类来试试。我新建了一个类,代码如下:

import org.ictclas4j.bean.segresult;

import org.ictclas4j.segment.segtag;

public class onemain {

public static void main(string[] args) {

system.out.println("this is onemain");

segtag st = new segtag(1);

segresult sr = st

.split("一块勤奋地漂亮的一块钱,/打造经济的航空母舰。abcd.#$% hello world!\n又一段文本123 3.0");

system.out.println(sr.getfinalresult());

}

}

很显然文本“一块勤奋地漂亮的一块钱,/打造经济的航空母舰。abcd.#$% hello world!"n又一段文本123 3.0”就是我们用来测试的文本,其中包含了中文,英文,标点符号,乱七八糟符号(笑)及阿拉伯数字。

我们运行刚才的程序,看下输出结果:

this is onemain

一块/s 勤奋/a /u 漂亮/a /u /m /q /n ,/w //nx 打造/v 经济/n /u 航空母舰/n /w abcd.#$%/nx hello/nx world/nx !/w /d /m /q 文本/n 123/m /q

看到了么,分词的结果是一个长长的string类数据,用空格区分出每个词,每个词还用/后面的英文标号标出了词性。一起来看看几个有趣的地方。

原文中其实有两个“一块”,一处是“一块勤奋”,这里很正确的识别为了副词,而后面的“一块钱”中的“一块”也正确的识别为数量词。

阿拉伯数字正确识别为数词,包括小数形式的“3.0”。而英文和乱七八糟符号(包括那个不可见的换行符,你找到它在哪了吗?)则都被划为一类——/nx!(因为我也不知道ictclas内部人员管它叫什么啦,非法字符啊,还是无效字符啊,或者其它字符啊,名字可以自己取嘛)

测试文本中还有两个叹号,一个是英文半角的!,一个是中文全角的!,两者也都被正确识别为标点符号,但英文的句号“.“就被认为是/nx啦。

测试文本中的空格被完全忽略。

好,十分简单对不对?去玩玩吧。