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啦。
测试文本中的空格被完全忽略。
好,十分简单对不对?去玩玩吧。