這款發布的淑珍分詞器版本是1.1.9,完全是基于字典分詞,在提供下載的壓縮包中含有編譯好的jar包和所有的源代碼,可以應用于Lucene3.0版本及以上中。
為了方便根據自己需要對分詞器進行修改,我這里介紹一下淑珍分詞器的核心數據結構,這個數據結構也是當初我在寫分詞器的時候,為了解決詞庫條目多和索引速度之間的相互制約而想出來的。
這個數據結構就是將詞庫中的每一個條目以一種特定的結構存儲在JDBM或內存中,比如,對一個很常見的條目例子:“男女搭配干活不累”來舉例子,在這種數據結構中,將被存儲為如下key-value鍵值對:
男->女
男女->搭
男女搭->配
男女搭配->干
男女搭配干->活
男女搭配干活->不
男女搭配干活不->累
男女搭配干活不累->$
那么這種數據存儲結構有什么好處呢?當我們在對字符進行分詞的時候,我們要根據詞庫條目來進行判斷我們要分的字符串是否是詞庫中的一個條目,這個時候就涉及到對詞庫中條目進行查找的問題,當采用這種數據結構的時候,我們在查找對比的時候就有很高的速度,這也是為什么淑珍分詞器在分詞時的速度與詞庫中條目數量無關的主要原因。
這個數據結構也是淑珍分詞器的核心所在。
這個核心處理是由KeysGroup.java這個類來完成的。
順便說點題外話,有的朋友一說起數據結構,可能就會把思維局限在了數據結構書籍里或現有的一些數據結構里,但淑珍分詞器所采用的這個數據結構卻完全是我自己獨立想出來的,當然了我不知道是否還有其他人早已想出了這個數據結構,我這里說這個的目的不是說我自己想出這個結構有多么的牛—完全不是這樣的,我只是想說的是那些書籍里所講述的數據結構也都是人想出來的,既然你也是人,那你為什么就不能試著去想出新的結構出來?
我覺得中國學生都不笨,但做事并不僅僅是靠聰明這一項因素的,在編程這一領域,我個人覺得還應當要有一種敢于突破的精神和思想。
以上也只是感慨之言吧。
目前這款分詞器已經應用在了一個搜索引擎網站中,雖然這個版本沒有在這個網站中使用的高,但其核心的東西卻都是一樣的,所以如果想要了解這個1.1.9版本的速度及性能如何,可以訪問這個搜索引擎網站進行了解:www.zihou.com
請理解我現在還不能將淑珍分詞器最新版本開源出來,我想能力高的朋友還是挺多,這個1.1.9版本其實也就是提供了一個基礎,在此基礎上,我相信,肯定會有能力強的朋友做出更好的分詞效果出來。
這款分詞器的開源我在年初就有了這個想法,不過事情一直很多,實在沒心情弄這個,最近幾天才稍微空閑了一些,才抽出了點時間將其發布了出來,也請高手們多指點。
下載地址:http://www.zihou.com/download/ShuzhenAnalyzer-1.1.9.rar