posts - 431,  comments - 344,  trackbacks - 0
          轉(zhuǎn)載地址:http://www.javaeye.com/news/9637

          1. 基本介紹:

          paoding :Lucene中文分詞“庖丁解牛” Paoding Analysis
          imdict :imdict智能詞典所采用的智能中文分詞程序
          mmseg4j : 用 Chih-Hao Tsai 的 MMSeg 算法 實現(xiàn)的中文分詞器
          ik :采用了特有的“正向迭代最細(xì)粒度切分算法“,多子處理器分析模式

           

           

          2. 開發(fā)者及開發(fā)活躍度:

          paodingqieqie.wang, google code 上最后一次代碼提交:2008-06-12,svn 版本號 132
          imdictXiaoPingGao, 進入了 lucene contribute,lucene trunk 中 contrib/analyzers/smartcn/ 最后一次提交:2009-07-24,
          mmseg4jchenlb2008,google code 中 2009-08-03 (昨天),版本號 57,log為:mmseg4j-1.7 創(chuàng)建分支
          iklinliangyi2005,google code 中 2009-07-31,版本號 41

           

           

          3. 用戶自定義詞庫:

          paoding :支持不限制個數(shù)的用戶自定義詞庫,純文本格式,一行一詞,使用后臺線程檢測詞庫的更新,自動編譯更新過的詞庫到二進制版本,并加載
          imdict :暫時不支持用戶自定義詞庫。但 原版 ICTCLAS 支持。支持用戶自定義 stop words
          mmseg4j :自帶sogou詞庫,支持名為 wordsxxx.dic, utf8文本格式的用戶自定義詞庫,一行一詞。不支持自動檢測。 -Dmmseg.dic.path
          ik : 支持api級的用戶詞庫加載,和配置級的詞庫文件指定,無 BOM 的 UTF-8 編碼,\r\n 分割。不支持自動檢測。

           

           

          4. 速度(基于官方介紹,非自己測試)

          paoding :在PIII 1G內(nèi)存?zhèn)€人機器上,1秒 可準(zhǔn)確分詞 100萬 漢字
          imdict483.64 (字節(jié)/秒),259517(漢字/秒)
          mmseg4j : complex 1200kb/s左右, simple 1900kb/s左右
          ik :具有50萬字/秒的高速處理能力

           

           

          5. 算法和代碼復(fù)雜度

          paoding :svn src 目錄一共1.3M,6個properties文件,48個java文件,6895 行。使用不用的 Knife 切不同類型的流,不算很復(fù)雜。
          imdict :詞庫 6.7M(這個詞庫是必須的),src 目錄 152k,20個java文件,2399行。使用 ICTCLAS HHMM隱馬爾科夫模型,“利用大量語料庫的訓(xùn)練來統(tǒng)計漢語詞匯的詞頻和跳轉(zhuǎn)概率,從而根據(jù)這些統(tǒng)計結(jié)果對整個漢語句子計算最似然(likelihood)的切分”
          mmseg4j : svn src 目錄一共 132k,23個java文件,2089行。MMSeg 算法 ,有點復(fù)雜。
          ik : svn src 目錄一共6.6M(詞典文件也在里面),22個java文件,4217行。多子處理器分析,跟paoding類似,歧義分析算法還沒有弄明白。

           

           

          6. 文檔

          paoding :幾乎無。代碼里有一些注釋,但因為實現(xiàn)比較復(fù)雜,讀代碼還是有一些難度的。
          imdict : 幾乎無。 ICTCLAS 也沒有詳細(xì)的文檔,HHMM隱馬爾科夫模型的數(shù)學(xué)性太強,不太好理解。
          mmseg4jMMSeg 算法 是英文的,但原理比較簡單。實現(xiàn)也比較清晰。
          ik : 有一個pdf使用手冊,里面有使用示例和配置說明。

           

           

          7. 其它

          paoding :引入隱喻,設(shè)計比較合理。search 1.0 版本就用的這個。主要優(yōu)勢在于原生支持詞庫更新檢測。主要劣勢為作者已經(jīng)不更新甚至不維護了。
          imdict :進入了 lucene trunk,原版 ictclas 在各種評測中都有不錯的表現(xiàn),有堅實的理論基礎(chǔ),不是個人山寨。缺點為暫時不支持用戶詞庫。
          mmseg4j : 在complex基礎(chǔ)上實現(xiàn)了最多分詞(max-word),但是還不成熟,還有很多需要改進的地方。
          ik :  針對Lucene全文檢索優(yōu)化的查詢分析器IKQueryParser

           

           

          8. 結(jié)論

          個人覺得,可以在 mmseg4j 和 paoding 中選一個。關(guān)于這兩個分詞效果的對比,可以參考:

          http://blog.chenlb.com/2009/04/mmseg4j-max-word-segment-compare-with-paoding-in-effect.html

          或者自己再包裝一下,將 paoding 的詞庫更新檢測做一個單獨的模塊實現(xiàn),然后就可以在所有基于詞庫的分詞算法之間無縫切換了。

           

           

          ps,對不同的 field 使用不同的分詞器是一個可以考慮的方法。比如 tag 字段,就應(yīng)該使用一個最簡單的分詞器,按空格分詞就可以了。

          posted on 2009-08-09 10:15 周銳 閱讀(1253) 評論(0)  編輯  收藏 所屬分類: JavaLucene
          主站蜘蛛池模板: 开远市| 阿拉尔市| 天峻县| 安乡县| 宁都县| 府谷县| 东港市| 霍山县| 嘉善县| 莱州市| 唐河县| 大余县| 泗阳县| 罗山县| 开化县| 澎湖县| 靖边县| 鹤山市| 大丰市| 东光县| 富顺县| 鹰潭市| 阿瓦提县| 庄河市| 留坝县| 新巴尔虎右旗| 昔阳县| 延津县| 呼图壁县| 漳州市| 区。| 林甸县| 宜丰县| 拉萨市| 鄂托克前旗| 南漳县| 仙桃市| 台山市| 弋阳县| 浦城县| 铅山县|