Java调用IK分词器进行分词,封装工具类

目录

使用场景

导入依赖

分词的使用

封装工具类


使用场景

        在大数据的场景下,一般用于统计关键词出现的频率,因此我们需要对一些数据文本进行分词,得到我们想要的关键词。

导入依赖

<dependency>
            <groupId>com.janeluo</groupId>
            <artifactId>ikanalyzer</artifactId>
            <version>2012_u6</version>
        </dependency>

分词的使用

ArrayList<String> result = new ArrayList<>();
// 创建一个reader对象
StringReader reader = new StringReader(keyword);
// 创建一个分词对象
IKSegmenter ikSegmenter = new IKSegmenter(reader, true);
Lexeme next = ikSegmenter.next();

while ( next != null ) {
      // 获取分词的结果
      result.add(next.getLexemeText());
      next = ikSegmenter.next();
}
return result;

分词结果

useSmart = true时的结果,一个词不会重复出现

 useSmart = false时的结果,词会多次出现

 显然useSmart = false效果好点

封装工具类

package com.cw.util;

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

import java.io.IOException;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.List;

/**
 * @author CW
 * @version 1.0
 * @date 2023/3/1 8:41
 * @desc ik分词工具类
 */
public class IKUtil {

    /**
     *  分词
     * @param keyword 需要分词的文本
     * @return
     */
    public static List<String> splitKeyWord(String keyword) throws IOException {

        ArrayList<String> result = new ArrayList<>();
        // 创建一个reader对象
        StringReader reader = new StringReader(keyword);
        // 创建一个分词对象
        IKSegmenter ikSegmenter = new IKSegmenter(reader, false);
        Lexeme next = ikSegmenter.next();

        while ( next != null ) {
            // 获取分词的结果
            result.add(next.getLexemeText());
            next = ikSegmenter.next();
        }
        return result;
    }
}

猜你喜欢

转载自blog.csdn.net/m0_55868614/article/details/129273885