IK Analyzer 是一個開源的,基於java語言開發的輕量級的中文分詞工具包。從2006年12月推出1.0版開始, IKAnalyzer已經推出了4個大版本。最初,它是以開源項目Luence爲應用主體的,結合詞典分詞和文法分析算法的中文分詞組件。從3.0版本開 始,IK發展爲面向Java的公用分詞組件,獨立於Lucene項目,同時提供了對Lucene的默認優化實現。在2012版本中,IK實現了簡單的分詞 歧義排除算法,標誌着IK分詞器從單純的詞典分詞向模擬語義分詞衍化。
java
IK Analyzer 2012特性:算法
採用了特有的「正向迭代最細粒度切分算法「,支持細粒度和智能分詞兩種切分模式;數據庫
在系統環境:Core2 i7 3.4G雙核,4G內存,window 7 64位, Sun JDK 1.6_29 64位 普通pc環境測試,IK2012具備160萬字/秒(3000KB/S)的高速處理能力。工具
2012版本的智能分詞模式支持簡單的分詞排歧義處理和數量詞合併輸出。測試
採用了多子處理器分析模式,支持:英文字母、數字、中文詞彙等分詞處理,兼容韓文、日文字符優化
優化的詞典存儲,更小的內存佔用。支持用戶詞典擴展定義。特別的,在2012版本,詞典支持中文,英文,數字混合詞語。spa
IKAnalyzer 同時還有一個非官方的 .NET 版本 —— IKAnalyzer.NET.net
分詞中止詞詞典及數據庫相關詞典:code
例子1:內存
public class IKAnalyzer { /** * * @param text * @param type true: 智能分詞 false: 細粒度分詞 * @return words * @throws IOException */ public static Map<String, String> iKAnalyzer(String text, boolean type) throws IOException{ Map<String, String> words = new HashMap<String, String>(); StringReader sr = new StringReader(text); IKSegmenter ik = new IKSegmenter(sr, type); Lexeme lex = null; while ((lex = ik.next()) != null) { words.put(lex.getLexemeText(), lex.getLexemeText()); } return words; } }
IKAnalyzer用於Lucene5的文件:
IKAnalyzer最新版用於Lucene5的文件,不須要修改源代碼。在使用Lucene5時原有Analyzer analyzer = new IKAnalyzer();的地方代替換爲Analyzer analyzer = new IKAnalyzer5x();