需要首先说明的是,不同于以前的C++版提供的JNI调用,本次使用的是纯Java版本的ICTCLAS
好,假设你已经下载了我们需要使用的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啦。
测试文本中的空格被完全忽略。
好,十分简单对不对?去玩玩吧。
你可以看 一下下面的参考资料:qjhokwrnrx14244055242011-10-12 21:38:13[编辑本段]ICTCLAS简介 中文词法分析是中文信息处理的基础与关键。中国科学院计算技术研究所在多年研究工作积累的基础上,研制出了汉语词法分析系统ICTCLAS(Institute of Computing Technology, Chinese Lexical Analysis System),主要功能包括中文分词;词性标注;命名实体识别;新词识别;同时支持用户词典。我们先后精心打造五年,内核升级6次,目前已经升级到了ICTCLAS3.0。ICTCLAS3.0分词速度单机996KB/s,分词精度98.45%,API不超过200KB,各种词典数据压缩后不到3M,是当前世界上最好的汉语词法分析器。