当前位置: 代码网 > it编程>编程语言>Java > Java调用IK分词器进行分词方式,封装工具类

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

2024年08月12日 Java 我要评论
使用场景在大数据的场景下,一般用于统计关键词出现的频率,因此我们需要对一些数据文本进行分词,得到我们想要的关键词。导入依赖<dependency> <group

使用场景

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

导入依赖

<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;
    }
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com