IK分詞器(ikAnalyzer)簡單使用


分詞器簡單使用:

1.首先在pom文件中添加如下坐標

       <!-- 有可能一次導入本地倉庫不成功,需要多嘗試幾次 -->
     <dependency> <groupId>com.janeluo</groupId> <artifactId>ikanalyzer</artifactId> <version>2012_u6</version> </dependency>

2.在資源文件夾下添加如下添加 IKAnalyzer.cfg.xml配置文件,並指定擴展詞典配置的位置和擴展停詞詞典的位置。擴展文件的位置是在resource目錄下建立ikConf目錄,並添加兩個擴展配置文件。

擴展詞典:在我們漢語中本身有很多的常見詞語,但是在一些專業領域方面有些專業的詞語是不包含在常見詞語中的,這時候我們可以通過這個配置文件進行配置。(數據湖,苯溴馬隆)這些詞想作為詞組就直接添加在這個配置文件中。

擴展停詞詞典:停止詞,是由英文單詞:stopword翻譯過來的,原來在英語里面會遇到很多a,the,or等使用頻率很多的字或詞,常為冠詞、介詞、副詞或連詞等。如果搜索引擎要將這些詞都索引的話,那么幾乎每個網站都會被索引,也就是說工作量巨大。可以毫不誇張的說句,只要是個英文網站都會用到a或者是the。那么這些英文的詞跟我們中文有什么關系呢? 在中文網站里面其實也存在大量的stopword,我們稱它為停止詞。比如,我們前面這句話,“在”、“里面”、“也”、“的”、“它”、“為”這些詞都是停止詞。這些詞因為使用頻率過高,幾乎每個網頁上都存在,所以搜索引擎開發人員都將這一類詞語全部忽略掉。如果我們的網站上存在大量這樣的詞語,那么相當於浪費了很多資源。原本可以添加一個關鍵詞,排名就可以上升一名的,為什么不留着添加為關鍵詞呢?停止詞對SEO的意義不是越多越好,而是盡量的減少為宜。

 

 

 主程序:放便我們去查看ik分詞器幫我分詞后的效果。

package com.zhp.ikanalyzer.test;

import org.wltea.analyzer.core.IKSegmenter;
import org.wltea.analyzer.core.Lexeme;

import java.io.StringReader;
import java.util.HashSet;
import java.util.Set;

public class Main {
    public static void main(String[] args) throws Exception {
        Set<String> segment = (Set<String>) segment("@車@險理賠@able,baby ll.bbbb,學a習");
        for (String s : segment){
            System.out.println(s);
        }
    }

    private static Set segment(String text) throws Exception{
        Set<String> set = new HashSet<>();
        StringReader re = new StringReader(text.trim());
        IKSegmenter ik= new IKSegmenter(re,true);
        Lexeme lex;
        while((lex = ik.next())!=null){
            set.add(lex.getLexemeText());
        }
        return set;

    }
}

構建IKSegmenter對象源碼中可以看到加載配置文件是在classes路徑下。因此我們在resources目錄下創建IKAnalyzer.cfg.xml,maven功能編譯之后會把resources目錄下的文件放在classes目錄下。

    public IKSegmenter(Reader input, boolean useSmart) {
        this.input = input;
        this.cfg = DefaultConfig.getInstance();
        this.cfg.setUseSmart(useSmart);
        this.init();
    }
public class DefaultConfig implements Configuration {
    private static final String PATH_DIC_MAIN = "org/wltea/analyzer/dic/main2012.dic";
    private static final String PATH_DIC_QUANTIFIER = "org/wltea/analyzer/dic/quantifier.dic";
    private static final String FILE_NAME = "IKAnalyzer.cfg.xml";
    private static final String EXT_DICT = "ext_dict";
    private static final String EXT_STOP = "ext_stopwords";
    private Properties props = new Properties();
    private boolean useSmart;

    public static Configuration getInstance() {
        return new DefaultConfig();
    }

    private DefaultConfig() {
        InputStream input = this.getClass().getClassLoader().getResourceAsStream("IKAnalyzer.cfg.xml");
        if (input != null) {
            try {
                this.props.loadFromXML(input);
            } catch (InvalidPropertiesFormatException var3) {
                var3.printStackTrace();
            } catch (IOException var4) {
                var4.printStackTrace();
            }
        }

    }

 


免責聲明!

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



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