IKAnalyzer分詞

1、IKAnalyzer介紹

    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


2、使用說明

分詞中止詞詞典及數據庫相關詞典: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();

相關文章
相關標籤/搜索