IKAnalyzer

咱們的項目中中文切詞使用的是mmseg,有一個不滿意的地方是jar包中的默認詞典必定會被加載進去,當我對有些term有意見時,沒法刪除。html

mmseg中Dictionary.java裏一段代碼保證了/data/words.dic的加載,我沒法提供本身的進行替換。java

//try load words.dic in jar
InputStream wordsDicIn = this.getClass().getResourceAsStream("/data/words.dic");
if(wordsDicIn != null) {
    File wordsDic = new File(this.getClass().getResource("/data/words.dic").getFile());
    loadWord(wordsDicIn, dic, wordsDic);
}

而IKAnalyzer就比較自由,既能夠增長本身的詞典,也能指定刪除默認詞典中的詞。this

        String text = "給我講一個黃色笑話";
        Configuration cfg = DefaultConfig.getInstance();
        Dictionary.initial(cfg);
        //將"黃色笑話"從默認詞典中刪除
        Dictionary.getSingleton().disableWords(Arrays.asList("黃色笑話"));

        StringReader sr = new StringReader(text);

        IKSegmenter ik = new IKSegmenter(sr, true);
        Lexeme lex;
        while ((lex = ik.next()) != null) {
            System.out.print(lex.getLexemeText() + "|");
        }

輸出:給我講一個|黃色|笑話xml

如何增長新詞呢?htm

DefaultConfig類會默認加載根目錄下的配置文件IKAnalyzer.cfg.xmlblog

<properties>

    <comment>IK Analyzer 擴展配置</comment>
    <!-- 用戶能夠在這裏配置本身的擴展字典 -->
    <entry key="ext_dict">ik.add.dic</entry>
    <!-- 用戶能夠在這裏配置本身的擴展中止詞字典    -->
    <!--entry key="ext_stopwords">/dicdata/ext_stopword.dic</entry-->

</properties>

其中ext_dict就是用於添加自定義的擴展詞典。  get

相關文章
相關標籤/搜索