IKAnalyzer 添加擴展詞庫和自定義詞


原文鏈接http://blog.csdn.net/whzhaochao/article/details/50130605

IKanalyzer分詞器

IK分詞器源碼位置 http://git.oschina.net/wltea/IK-Analyzer-2012FF

IKanalyzer源碼基本配置

這里寫圖片描述

如圖所示是IKanlyzer加載默認配置的路徑

項目中配置擴展詞庫

這里寫圖片描述

如圖所示,當我們導入Ikanlyzer jar包后,使用擴展詞庫只需要在項目的src根目錄下建立IKAnalyzer.cfg.xml文件,文件中配置擴展詞庫和停用詞庫的路徑,具體配置如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
    <comment>IK Analyzer 擴展配置</comment>
    <!--用戶可以在這里配置自己的擴展字典 -->
    <entry key="ext_dict">com/zhaochao/ikconf/ext.dic;com/zhaochao/ikconf/mine.dic;</entry>
    <!--用戶可以在這里配置自己的擴展停止詞字典 -->
    <entry key="ext_stopwords">/com/zhaochao/ikconf/stopword.dic</entry>
</properties>

測試結果

當我們不添加任何自定義詞時分詞結果如下圖所示:

java|是|一個|好|語言|從到|2015年|12月|1日|它|已經有|20|年的歷史|了|

當我們添加如下自定義詞時
這里寫圖片描述

分詞結果為:

java|是|一個好語言|從到|2015年12月1日|它|已經有|20年的歷史了|

測試代碼:

    public static void main(String[] args) throws IOException {
        String s = "JAVA是一個好語言,從到2015年12月1日它已經有20年的歷史了";
         queryWords(s);
    }

    public static void queryWords(String query) throws IOException {
        Configuration cfg = DefaultConfig.getInstance();
        System.out.println(cfg.getMainDictionary()); // 系統默認詞庫
        System.out.println(cfg.getQuantifierDicionary());
        List<String> list = new ArrayList<String>();
        StringReader input = new StringReader(query.trim());
        IKSegmenter ikSeg = new IKSegmenter(input, true);   // true 用智能分詞 ,false細粒度
        for (Lexeme lexeme = ikSeg.next(); lexeme != null; lexeme = ikSeg.next()) {
            System.out.print(lexeme.getLexemeText()+"|");
        }

    }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM