中文分词器 ~ IK Analyzer

分词器常常用来做用户输入的分析,完后再检索数据库

一、IK Analyzer简介

  1. IK Analyzer是一个开源的,基于Java语言开发的轻量级的中文分词工具包;
  2. 最初,它是以开源项目Luence 为应用主体的,结合词典分词和文法分析算法的中文分词组件;从 3.0 版本开始,IK 发展为面向 Java 的公用分词组件,独立亍 Lucene 项目,同时提供了对 Lucene 的默认优化实现。在 2012 版本中,IK 实现了简单的分词歧义排除算法,标志着 IK 分词器从单纯的词典分词向模拟语义分词衍化;

二、IK的使用

  1. 添加Maven引用
    
        com.github.magese
        ik-analyzer
        7.5.0
    
    
  2. 添加配置文件
    • 添加字典文件:extword.dict,主要用来把一些想分出来的词添加到这里,还有一个添加辅助行词语的文件:stopword.dict,详见码云项目
    • IKAnalyzer.cfg.xml
      
      
      
          
          IK Analyzer 扩展配置
          
          classpath:extword.dict
          
          classpath:stopword.dic
      
      
      
  3. 编写代码
    package org.shreker.tools.ikanalyzer;
    
    import org.apache.lucene.analysis.Analyzer;
    import org.apache.lucene.analysis.TokenStream;
    import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
    import org.wltea.analyzer.lucene.IKAnalyzer;
    
    import java.io.IOException;
    import java.io.StringReader;
    
    public class IKWordSplition {
        
        private static String WordSplition(String sentence) throws IOException {
            StringBuilder text = new StringBuilder();
            // 创建分词对象
            Analyzer analyzer = new IKAnalyzer(true);
            StringReader reader = new StringReader(sentence);
            // 分词
            TokenStream tokenStream = analyzer.tokenStream("", reader);
            CharTermAttribute charTerm = tokenStream.getAttribute(CharTermAttribute.class);
            // 遍历分词数据
            tokenStream.reset();
            while (tokenStream.incrementToken()) {
                text.append(charTerm.toString()).append("|");
            }
            tokenStream.close();
            reader.close();
            return text.toString().trim() + "\n";
        }
        
        public static void main(String[] args) throws IOException {
            System.out.println(WordSplition("张北京儿童医院几年解决痘痘"));
        }
        
    }
    
    • 运行结果:
      Load extended dictionary:extword.dict
      Load stopwords dictionary:stopword.dic
      张|北京|儿童医院|几年|解决|痘痘|
      

三、代码

  • 见码云:https://gitee.com/QLTools/IKAnalyzer

你可能感兴趣的:(中文分词器 ~ IK Analyzer)