咱們的項目中中文切詞使用的是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