IKAnalyzer分词组件

news2024/12/28 18:59:53

IKAnalyzer是一个功能强大、易于使用、性能优异的中文分词工具包,适用于各种需要进行中文分词的场景,如搜索引擎、自然语言处理、文本挖掘等。

Springboot如何集成IKAnalyzer分词组件

引入IKAnalyzer分词组件包

<dependency>
    <groupId>org.apache.lucene</groupId>
    <artifactId>lucene-core</artifactId>
    <version>8.11.1</version>
</dependency>

<dependency>
    <groupId>org.apache.lucene</groupId>
    <artifactId>lucene-analyzers-common</artifactId>
    <version>8.11.1</version>
</dependency>

<dependency>
    <groupId>com.github.magese</groupId>
    <artifactId>ik-analyzer</artifactId>
    <version>8.5.0</version>
</dependency>

IkAnalyzer配置

package com.example.demo.config;

import org.apache.lucene.analysis.Analyzer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.wltea.analyzer.lucene.IKAnalyzer;

@Configuration
public class IkAnalyzerConfig {

    @Bean
    public Analyzer ikAnalyzer() {
        return new IKAnalyzer(true);
    }

}

自定义IkAnalyzerService

package com.example.demo.service;

import lombok.extern.slf4j.Slf4j;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.io.IOException;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.List;

@Slf4j
@Service
public class IkAnalyzerService {

    @Resource
    private Analyzer analyzer;

    public List<String> textHandler(String text) {

        List<String> result = new ArrayList<>();

        // 将文本转换为Reader对象
        StringReader reader = new StringReader(text);

        try {

            // 获取TokenStream对象
            TokenStream tokenStream = analyzer.tokenStream("content", reader);

            // 获取CharTermAttribute对象,用于获取分词结果
            CharTermAttribute charTermAttr = tokenStream.addAttribute(CharTermAttribute.class);

            // 重置TokenStream,准备读取分词结果
            tokenStream.reset();

            // 循环读取分词结果
            while (tokenStream.incrementToken()) {
                result.add(charTermAttr.toString());
            }

            tokenStream.close();
        } catch (IOException e) {
            log.error("IkAnalyzerService.textHandler() IOException:{}", e.getMessage(), e);
        }

        return result;
    }
}

验证

测试代码

package com.example.demo;

import com.alibaba.fastjson.JSON;
import com.example.demo.service.IkAnalyzerService;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import javax.annotation.Resource;
import java.util.List;

@Slf4j
@SpringBootTest
public class ApplicationTests {

    @Resource
    private IkAnalyzerService ikAnalyzerService;

    @Test
    public void contextLoads() {
        List<String> result = ikAnalyzerService.textHandler("这个电影很精彩,推荐!!!");
        log.info("{}", JSON.toJSONString(result));
        result = ikAnalyzerService.textHandler("他在家正发呆呢");
        log.info("{}", JSON.toJSONString(result));
        result = ikAnalyzerService.textHandler("人家都说他是个好领导,我们可以相信他吗");
        log.info("{}", JSON.toJSONString(result));
    }
}

运行结果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2267065.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

微信小程序 不同角色进入不同页面、呈现不同底部导航栏

遇到这个需求之前一直使用的小程序默认底部导航栏&#xff0c;且小程序默认入口页面为pages/index/index&#xff0c;要使不同角色呈现不同底部导航栏&#xff0c;必须要在不同页面引用不同的自定义导航栏。本篇将结合分包&#xff08;subPackages&#xff09;展开以下三步叙述…

输入框去掉角标

前言 正常情况下&#xff0c;HTML textarea 多行文本输入框会存如下图所示图标&#xff0c; 用户可拉动它改变高度&#xff0c;这是我们不想看到的&#xff0c;所以要去掉它。 去掉后&#xff1a; 解决方案 设置 resize 属性即可&#xff0c;如下代码所示&#xff1a; <…

ping指令的实现与icmp协议的讲解

icmp协议 icmp属于一个网络层的协议&#xff0c;一般被封装到IP报文中&#xff0c;主要功能是如果IP报文出现目的地不可达&#xff0c;时间超过等情况出现时&#xff0c;就会将返回一个差错检测报文&#xff0c;里面包括了IP报文丢失的原因 常见的报错信息有 目的地不可达时间…

Log4j2的Policies详解、SizeBasedTriggeringPolicy、TimeBasedTriggeringPolicy

文章目录 一、Policies二、SizeBasedTriggeringPolicy:基于文件大小的滚动策略2.1、文件达到指定大小就归档 三、TimeBasedTriggeringPolicy&#xff1a;基于时间间隔的滚动策略3.1、验证秒钟归档场景3.2、验证分钟场景3.3、验证小时场景 四、多策略组合使用五、扩展知识5.1、S…

SpringCloudAlibaba实战入门之路由网关Gateway初体验(十一)

Spring Cloud 原先整合 Zuul 作为网关组件,Zuul 由 Netflix 公司提供的,现在已经不维护了。后面 Netflix 公司又出来了一个 Zuul2.0 网关,但由于一直没有发布稳定版本,所以 Spring Cloud 等不及了就自己推出一个网关,已经不打算整合 zuul2.0 了。 一、什么是网关 1、顾明…

#渗透测试#漏洞挖掘#红蓝攻防#常见未授权访问漏洞汇总

免责声明 本教程仅为合法的教学目的而准备&#xff0c;严禁用于任何形式的违法犯罪活动及其他商业行为&#xff0c;在使用本教程前&#xff0c;您应确保该行为符合当地的法律法规&#xff0c;继续阅读即表示您需自行承担所有操作的后果&#xff0c;如有异议&#xff0c;请立即停…

Fast adaptively balanced min-cut clustering

#0.论文信息 标题&#xff1a;Fast adaptively balanced min-cut clustering期刊&#xff1a;Pattern Recognition作者: Feiping Nie , Fangyuan Xie , Jingyu Wang ,Xuelong Li机构: China Telecom, Northwestern Polytechnic al University.代码链接&#xff1a; #1.摘要 …

【C++】——精细化哈希表架构:理论与实践的综合分析

先找出你的能力在哪里&#xff0c;然后再决定你是谁。 —— 塔拉韦斯特弗 《你当像鸟飞往你的山》 目录 1. C 与哈希表&#xff1a;核心概念与引入 2. 哈希表的底层机制&#xff1a;原理与挑战 2.1 核心功能解析&#xff1a;效率与灵活性的平衡 2.2 哈希冲突的本质&#x…

前端技术(26) : 全年排班日历

来源: 通义千问 效果图 代码 <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><title>年度日历</title><style>body {font-family: Arial, sans-serif;}.calendar-container {margin: 20px au…

QT-------认识QT

QT简介 QT是一个跨平台的C图形用户界面应用程序框架&#xff0c;由挪威Trolltech公司于1991年开发并发布。它为开发者提供了一套丰富的类库和工具&#xff0c;用于创建各种类型的应用程序&#xff0c;包括桌面应用、移动应用、嵌入式系统应用等。QT具有高度的可定制性和可扩展…

Hive 部署

1 下载并安装 1.1 Hadoop安装 参考另一篇博客&#xff1a;Hadoop 部署 1.2 安装包下载 可通过下面网站下载&#xff1a; 官网&#xff1a;https://dlcdn.apache.org/hive/。清华源&#xff1a;https://mirrors.tuna.tsinghua.edu.cn/apache/hive/。 比如下载apache-hive-4…

Linux中QT应用IO状态设置失效问题

问题&#xff1a;在进入freeze休眠前需要设置特定IO关闭电源灯操作&#xff0c;唤醒后需要将特定IO恢复原来正常工作状态&#xff0c;此时出现偶然性&#xff08;概率很低&#xff09;的IO控制失效问题&#xff1b;【平台&#xff1a;君正X1600HN】 一、问题点分析 1、电路 …

empire靶机

打开靶机 我们先查看页面源代码&#xff0c;发现什么也没有 再去用nmap扫描 nmap -sV -p- 192.168.95.144 发现也没什么用 我们在用dirb扫一下 dirb http://192.168.95.144 我们发现了robots.txt并且响应码是200&#xff0c;去访问一下 又得到了一个目录&#xff0c;去访问…

三层交换原理及图示

大概 三层交换原理 需要提前掌握的&#xff08;VLAN基础知识&#xff09; 【Info-Finder 参考链接&#xff1a;什么是VLAN】 三层是IP层&#xff0c;即网络层。为了方便记忆的&#xff1a;“先有网络&#xff0c;才有传输”、“传输是为了验证有网络”、“IP不是Transfer”…

当AI遇见大数据:决策优化的下一个风口

引言 在信息化时代的浪潮中&#xff0c;数据已成为企业决策的重要资产。随着大数据技术的发展&#xff0c;企业积累了海量的用户行为数据、市场动态和内部运营信息&#xff0c;这些数据背后蕴藏着巨大的价值。然而&#xff0c;数据的价值并非天然显现&#xff0c;它需要通过有效…

sizeof和strlen区分,(好多例子)

sizeof算字节大小 带\0 strlen算字符串长度 \0之前

SmartAIChain荣获重要认可

2024年12月21日&#xff0c;洛杉矶尔湾市——在今年的圣诞艺术交流会上&#xff0c;黄荣先生的SmartAIChain项目获得了重要认可。此次活动汇聚了来自各地的艺术家以及社区代表&#xff0c;共同庆祝这一创新性艺术的时刻。 在活动中&#xff0c;核桃市议员伍立伦(Allen Wu)代表D…

【Compose multiplatform教程12】【组件】Box组件

查看全部组件文章浏览阅读493次&#xff0c;点赞17次&#xff0c;收藏11次。alignment。https://blog.csdn.net/b275518834/article/details/144751353 Box 功能说明&#xff1a;简单的布局组件&#xff0c;可容纳其他组件&#xff0c;并依据alignment属性精确指定内部组件的对…

RT-DETR学习笔记(3)

九、损失函数 整理所需参数 decoder的输出结果&#xff1a;6层decoderlayer的类别以及bbox预测 将500个query拆分成300&#xff08;300个query&#xff09;200(denoising query) 1. 最后一层的decoder的输出的300部分&#xff0c;单独存储到out中的"pred_logits"和“…

处理元素卡在视野边界,滚动到视野内

效果图如下&#xff1a; 本示例处理场景&#xff1a;点击底部的折叠面板&#xff0c;展开后移动端滚动条位置不变&#xff0c;导致展开内容在视图外。造成面板展开无内容的错觉。 处理核心API: IntersectionObserver 此API可绑定元素并监听元素是否在视野内。若在视野外​​​…