需要首先说明的是,不同于以前的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啦。
测试文本中的空格被完全忽略。
好,十分简单对不对?去玩玩吧。
只能说还行吧,反正饿不死也发不了财,可伸缩扩展性比较强,JAVA EE就业面最广,其次是Android,在然后是JAVA SE跟JAVA ME,反正只要JAVA基础够硬的话,那就加入JAVA行业吧,建议从JAVA EE搞起,然后转Android,JAVA SE或是ME,或者ASP.NET,PHP等都比较容易。若果一开始走的Android或是JAVA SE得话,估计后期转JAVAEE 比较困难。JAVA EE要学的东西还是比较多,趁现在还没毕业,好好的巩固下基础。推荐几本书:JAVA基础方面:《head first java》《thinking in java》《JAVA与设计模式》《head first 设计模式》《JAVA核心技术 卷II:高级特征》
框架方面:《Spring in action》《hibernate in action》《struts in action》《ibatis in action》
JS:《JavaScript 编程精解》《JavaScript 语言精粹》《Jquery in action》《Ext JS权威指南》
WEB:《构建高性能的WEB站点》
CSS+DIV,html等。
上面这些书,每本都是很有含金量的,都有点深度,也不是很容易读懂,还是多思考,多琢磨吧。