zoukankan      html  css  js  c++  java
  • IKAnalyzer 独立使用 配置扩展词典

    有三点要注意(要不然扩展词典始终不生效):

    1. 后缀名.dic的词典文件,必须如使用文档里所说的 无BOM的UTF-8编码保存的文件。如果不确定什么是  无BOM的UTF-8编码,最简单的方式就是 用Notepad++编辑器打开,Encoding->选择 Encoding in UTF-8 without BOM,然后保存。
    2. 项目preferences 里 编码选择 utf8。
    3. 词典和IKAnalyzer.cfg.xml配置文件的路径问题。IKAnalyzer.cfg.xml必须在src根目录下。词典可以任意放,但是在IKAnalyzer.cfg.xml里要配置对。如下:我的两个词典文件my.dic 和 mine.dic 放在src下的com.org.config包下,注意com前面一定不要加/,否则是绝对路径找不到。
    <?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/org/config/my.dic;com/org/config/mine.dic;</entry> 
    <!--用户可以在这里配置自己的扩展停止词字典-->
    <entry key="ext_stopwords">/com/org/config/stopword.dic</entry> 
    </properties>
     
    IKAnalyzer 独立使用的代码:
    package com.org;
     
    import java.io.ByteArrayInputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.Reader;
    import org.wltea.analyzer.core.IKSegmenter;
    import org.wltea.analyzer.core.Lexeme;
     
    public class IKAnalyzerTest {
    public static void main(String[] args) {
    String str = "最希望从企业得到的是独家的内容或销售信息,获得打折或促销信息等;最不希望企业进行消息或广告轰炸及访问用户的个人信息等。这值得使用社会化媒体的企业研究";
     
    IKAnalysis(str);
    }
     
    public static String IKAnalysis(String str) {
    StringBuffer sb = new StringBuffer();
    try {
    // InputStream in = new FileInputStream(str);//
    byte[] bt = str.getBytes();// str
    InputStream ip = new ByteArrayInputStream(bt);
    Reader read = new InputStreamReader(ip);
    IKSegmenter iks = new IKSegmenter(read, true);
    Lexeme t;
    while ((t = iks.next()) != null) {
    sb.append(t.getLexemeText() + " , ");
     
    }
    sb.delete(sb.length() - 1, sb.length());
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    System.out.println(sb.toString());
    return sb.toString();
     
    }
    }
    运行结果:
    加载扩展词典:com/org/config/my.dic
    加载扩展词典:com/org/config/mine.dic
    加载扩展停止词典:/com/org/config/stopword.dic
    最希望 , 从 , 企业 , 得到 , 的 , 是 , 独家 , 的 , 内容或销售信息 , 获得 , 打折 , 或 , 促销信息 , 等 , 最不 , 希望 , 企业 , 进行 , 消息 , 或 , 广告 , 轰炸 , 及 , 访问 , 用户 , 的 , 个人信息 , 等 , 这 , 值得 , 使用 , 社会化媒体 , 的 , 企业研究 ,
     
    加粗的词是扩展词典里的词。
    IKAnalyzer <wbr>独立使用 <wbr>配置扩展词典
     

    以下是proj的目录结构。

    IKAnalyzer <wbr>独立使用 <wbr>配置扩展词典

    附加:手动添加相关词库

        public static void main(String[] args) throws IOException {
            String s = "中文分词工具包";
            Configuration cfg = DefualtConfig.getInstance();  //加载词库
            cfg.setUseSmart(true); //设置智能分词
            Dictionary.initial(cfg);

            Dictionary dictionary = Dictionary.getSingleton();
            // List<String> words = new ArrayList<String>();
            // words.add("基础班");
            // words.add("高级会计实务");
            // dictionary.addWords(words);  //自动添加自定义词

            System.out.println(cfg.getMainDictionary()); // 系统默认词库
            System.out.println(cfg.getQuantifierDicionary());

            Hit hit = dictionary.matchInMainDict("基础班".toCharArray());
            System.out.println(hit.isMatch());

            System.out.println(queryWords(s));

        }

        /**
         * IK 分词
         *
         * @param query
         * @return
         * @throws IOException
         */
        public static List<String> queryWords(String query) throws IOException {
            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()) {
                list.add(lexeme.getLexemeText());
            }

            return list;
        }

  • 相关阅读:
    cf359D Pair of Numbers
    cf671B Robin Hood
    [暑假集训--数位dp]hdu5787 K-wolf Number
    [暑假集训--数位dp]UESTC250 windy数
    [暑假集训--数位dp]LightOj1205 Palindromic Numbers
    [暑假集训--数位dp]LightOJ1140 How Many Zeroes?
    [暑假集训--数位dp]LightOj1032 Fast Bit Calculations
    [暑假集训--数位dp]hdu5898 odd-even number
    [暑假集训--数位dp]cf55D Beautiful numbers
    [暑假集训--数位dp]hdu3709 Balanced Number
  • 原文地址:https://www.cnblogs.com/likai198981/p/3860423.html
Copyright © 2011-2022 走看看