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啦。

測試文本中的空格被完全忽略。

好,十分簡單對不對?去玩玩吧。