1. 程式人生 > >Java中文分詞工具AnsjSeg使用

Java中文分詞工具AnsjSeg使用

        中文分詞是進行中文文字分析的一個重要步驟。對於Java語言,有許多可選的分詞工具,如中科院計算所的NLPIR(原ICTCLASS)、盤古分詞、IKAnalyzer、PaodingAnalyzer,其中,試用過ICTCLASS及其後續版本,剛開始感覺不錯,但是Java呼叫C語言的方式實在是受不了,沒有原生Java編寫的用著方便,最近在處理一些論壇評論資料,資料質量很差,感覺用這個就錯得一塌糊塗,印象最不好的是以前做一個簡單專案,結果在最關鍵的最後階段,竟然顯示證書到期,最後雖然解決了,但實在是對ICTCLASS的印象越來越差,最後就嘗試其他的工具,試用了IKAnalyzer,很小,基本功能有,但附加功能好像較少,還有哈工大的分詞系統,線上的,原始碼試用時好像要發郵件才能獲得,嫌麻煩,呵呵,最後試用了AnsjSeg,專案在GitHub上,話說正逢GitHub被封還是怎麼的,廢了好一番功夫,最後總算用上了,感覺還不錯,作者介紹的文件很詳細,各種功能用起來很直接,雖然沒有ICTCLASS看起來正式,但要得就是接地氣,下面對相關的使用做一介紹:

        AnsjSeg,得名於作者的主頁ansj,作者名字是sj,So,就得了這個名字。這個工具可以講是ICTCLASS的Java實現,作者測試比原版速度快。AnsjSeg提供了四種分詞呼叫的方式:基本分詞(BaseAnalysis)、精準分詞(ToAnalysis)、NLP分詞(NlpAnalysis)、面向索引分詞(IndexAnalysis)。

1. 基本分詞方式,速度快;

官方示例:

List<Term> parse = BaseAnalysis.parse("讓戰士們過一個歡樂祥和的新春佳節。");
System.out.println(parse);

result:[讓/v, 戰士/n, 們/k, 過/ug, 一個/m, 歡樂/a, 祥和/a, 的/uj, 新春/t, 佳節/n, 。/w]

2. 精準分詞方式兼顧精度與速度,比較均衡;

官方示例:

List<Term> parse = ToAnalysis.parse("讓戰士們過一個歡樂祥和的新春佳節。");    
System.out.println(parse);

3. NLP分詞方式可是未登入詞,但速度較慢;

官方示例:

List<Term> parse = NlpAnalysis.parse("潔面儀配合潔面深層清潔毛孔 清潔鼻孔面膜碎覺使勁擠才能出一點點皺紋 臉頰毛孔修復的看不見啦 草莓鼻歷史遺留問題沒轍 臉和脖子差不多顏色的面板才是健康的 長期使用安全健康的比同齡人顯小五到十歲 28歲的妹子看看你們的魚尾紋");
System.out.println(parse);

4. 面向索引方式適合用在在lucene等文字檢索中用到。

官方示例:

List<Term> parse = IndexAnalysis.parse("主副食品");
System.out.println(parse);

result:[主副食品/n, 主副食, 副食, 副食品, 食品]

jar包中還有其他一些比較實用的功能,包括關鍵詞提取、詞性標註等,雖然感覺比較粗糙,但是還很實用。

AnsjSeg還可以設定使用者詞典與停用詞。