玖叶教程网

前端编程开发入门

Java,搜索引擎,IK Analyzer,中文分析器,轻量级中文分词工具包

IK Analyzer

IK Analyzer,基于java开发的轻量级的中文分词工具包,是以开源项目Luence为主体的,结合词典分词和文法分析算法的中文分词组件。

IK拥有了特有的“正向迭代最细粒度切分算法”,支持细粒度和智能分词两种切分模式。

项目地址:https://github.com/wks/ik-analyzer

编译并且安装到本地的repository: mvn install -Dmaven.test.skip=true

IK的两个重要词典

扩展词典:需要切分的字符串的词语,根据扩展词典里的词,不要切分开来。

停止词典:对比停止词典,直接删掉停止词典中出现的词语。

代码案例

案例1:

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

import java.io.IOException;
import java.io.StringReader;

public class IKAnalyzerDemo01 {

    public static void main(String[] args) throws IOException {
        String text = "知识、智慧和能力:知识,客观存在的一种规律。智慧,知道在什么样的条件下应用什么样的知识。";
        StringReader stringReader = new StringReader(text);
        IKSegmenter ikSegmenter = new IKSegmenter(stringReader, true);
        Lexeme lexeme = null;
        // 遍历分词数据
        while ((lexeme = ikSegmenter.next()) != null) {
            System.out.print(lexeme.getLexemeText() + " | ");
        }
        System.out.println();
        stringReader.close();
        // 知识 | 智慧 | 和 | 能力 | 知识 | 客观存在 | 的 | 一种 | 规律 | 智慧 | 知道 | 在 | 什么样 | 的 | 条件下 | 应用 | 什么样 | 的 | 知识 |
    }

}

案例2:

src/main/resources/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">extend.dic;</entry>
    <!--配置自己的扩展停止词字典 -->
    <entry key="ext_stopwords">stopword.dic;</entry>
</properties>

src/main/resources/extend.dic

客观存在
一种规律

src/main/resources/stopword.dic

和
的
在
知道
条件下
什么样

案例代码

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 IKAnalyzerDemo02 {

    public static void main(String[] args) throws IOException {
        String text = "知识、智慧和能力:知识,客观存在的一种规律。智慧,知道在什么样的条件下应用什么样的知识。";
        // 创建分词对象
        Analyzer analyzer = new IKAnalyzer(true);
        StringReader stringReader = new StringReader(text);
        // 分词
        TokenStream ts = analyzer.tokenStream("", stringReader);
        ts.reset();
        CharTermAttribute term = ts.getAttribute(CharTermAttribute.class);
        // 遍历分词数据
        while (ts.incrementToken()) {
            System.out.print(term.toString() + " | ");
        }
        System.out.println();
        // 知识 | 智慧 | 能力 | 知识 | 客观存在 | 一种规律 | 智慧 | 应用 | 知识 |
        stringReader.close();
    }

}

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言