ICTCLAS是中科院計(jì)算所出品的中文分詞程序包,在國內(nèi)一直有著良好的口碑和很高的使用率。之前一直只有 C++的版本提供,而現(xiàn)在C#,Delphi和Java版本已經(jīng)紛紛出爐。下面用一個(gè)極小的例子,讓大家10分鐘之內(nèi)就能用上ICTCLAS ,從此也開始自己的文本分類和搜索引擎開發(fā)之路。

需要首先說明的是,不同于以前的C++版提供的JNI調(diào)用,本次使用的是純Java版本的ICTCLAS,下載地址在http://ictclas.org/Down_OpenSrc.asp。

好,假設(shè)你已經(jīng)下載了我們需要使用的Java版本ictclas4j,現(xiàn)在把它解壓縮,然后把Data文件夾整個(gè)拷貝到Eclipse項(xiàng)目的文件夾下,bin目錄下的org文件夾整個(gè)拷貝到你Eclipse項(xiàng)目的bin目錄下,把src目錄下的org文件夾整個(gè)拷貝到Eclipse項(xiàng)目的src目錄下(最簡單快捷的使用方式,或者你自己打成jar包,這樣無論放到哪里,都可以在build path里面導(dǎo)入這個(gè)jar包啦)。

現(xiàn)在就可以在你的項(xiàng)目里新建一個(gè)類來試試。我新建了一個(gè)類,代碼如下:

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("一塊勤奮地漂亮的一塊錢,/打造經(jīng)濟(jì)的航空母艦。ABCD.#$% Hello World!\n又一段文本123 !3.0");

System.out.println(sr.getFinalResult());

}

}

很顯然文本“一塊勤奮地漂亮的一塊錢,/打造經(jīng)濟(jì)的航空母艦。ABCD.#$% Hello World!"n又一段文本123 !3.0”就是我們用來測試的文本,其中包含了中文,英文,標(biāo)點(diǎn)符號(hào),亂七八糟符號(hào)(笑)及阿拉伯?dāng)?shù)字。

我們運(yùn)行剛才的程序,看下輸出結(jié)果:

This is OneMain

一塊/s 勤奮/a /u 漂亮/a /u /m /q /n ,/w //nx 打造/v 經(jīng)濟(jì)/n /u 航空母艦/n 。/w ABCD.#$%/nx Hello/nx World/nx !/w /d /m /q 文本/n 123/m /q

看到了么,分詞的結(jié)果是一個(gè)長長的String類數(shù)據(jù),用空格區(qū)分出每個(gè)詞,每個(gè)詞還用/后面的英文標(biāo)號(hào)標(biāo)出了詞性。一起來看看幾個(gè)有趣的地方。

原文中其實(shí)有兩個(gè)“一塊”,一處是“一塊勤奮”,這里很正確的識(shí)別為了副詞,而后面的“一塊錢”中的“一塊”也正確的識(shí)別為數(shù)量詞。

阿拉伯?dāng)?shù)字正確識(shí)別為數(shù)詞,包括小數(shù)形式的“3.0”。而英文和亂七八糟符號(hào)(包括那個(gè)不可見的換行符,你找到它在哪了嗎?)則都被劃為一類——/nx!(因?yàn)槲乙膊恢?/span>ICTCLAS內(nèi)部人員管它叫什么啦,非法字符啊,還是無效字符啊,或者其它字符啊,名字可以自己取嘛)

測試文本中還有兩個(gè)嘆號(hào),一個(gè)是英文半角的!,一個(gè)是中文全角的!,兩者也都被正確識(shí)別為標(biāo)點(diǎn)符號(hào),但英文的句號(hào)“.“就被認(rèn)為是/nx啦。

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

好,十分簡單對(duì)不對(duì)?去玩玩吧。