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

需要首先說(shuō)明的是,不同于以前的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目錄下(最簡(jiǎn)單快捷的使用方式,或者你自己打成jar包,這樣無(wú)論放到哪里,都可以在build path里面導(dǎo)入這個(gè)jar包啦)。

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

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

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

}

}

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

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

This is OneMain

一塊/s 勤奮/a /u 漂亮/a /u /m /q 錢(qián)/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è)長(zhǎng)長(zhǎng)的String類(lèi)數(shù)據(jù),用空格區(qū)分出每個(gè)詞,每個(gè)詞還用/后面的英文標(biāo)號(hào)標(biāo)出了詞性。一起來(lái)看看幾個(gè)有趣的地方。

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

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

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

測(cè)試文本中的空格被完全忽略。

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