IKAnalyzer分词组件

打印 上一主题 下一主题

主题 973|帖子 973|积分 2919

IKAnalyzer是一个功能强盛、易于使用、性能优异的中文分词工具包,适用于各种需要进行中文分词的场景,如搜刮引擎、自然语言处置惩罚、文本挖掘等。
Springboot如何集成IKAnalyzer分词组件

引入IKAnalyzer分词组件包

  1. <dependency>
  2.     <groupId>org.apache.lucene</groupId>
  3.     <artifactId>lucene-core</artifactId>
  4.     <version>8.11.1</version>
  5. </dependency>
  6. <dependency>
  7.     <groupId>org.apache.lucene</groupId>
  8.     <artifactId>lucene-analyzers-common</artifactId>
  9.     <version>8.11.1</version>
  10. </dependency>
  11. <dependency>
  12.     <groupId>com.github.magese</groupId>
  13.     <artifactId>ik-analyzer</artifactId>
  14.     <version>8.5.0</version>
  15. </dependency>
复制代码
IkAnalyzer配置

  1. package com.example.demo.config;
  2. import org.apache.lucene.analysis.Analyzer;
  3. import org.springframework.context.annotation.Bean;
  4. import org.springframework.context.annotation.Configuration;
  5. import org.wltea.analyzer.lucene.IKAnalyzer;
  6. @Configuration
  7. public class IkAnalyzerConfig {
  8.     @Bean
  9.     public Analyzer ikAnalyzer() {
  10.         return new IKAnalyzer(true);
  11.     }
  12. }
复制代码
自定义IkAnalyzerService

  1. package com.example.demo.service;
  2. import lombok.extern.slf4j.Slf4j;
  3. import org.apache.lucene.analysis.Analyzer;
  4. import org.apache.lucene.analysis.TokenStream;
  5. import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
  6. import org.springframework.stereotype.Service;
  7. import javax.annotation.Resource;
  8. import java.io.IOException;
  9. import java.io.StringReader;
  10. import java.util.ArrayList;
  11. import java.util.List;
  12. @Slf4j
  13. @Service
  14. public class IkAnalyzerService {
  15.     @Resource
  16.     private Analyzer analyzer;
  17.     public List<String> textHandler(String text) {
  18.         List<String> result = new ArrayList<>();
  19.         // 将文本转换为Reader对象
  20.         StringReader reader = new StringReader(text);
  21.         try {
  22.             // 获取TokenStream对象
  23.             TokenStream tokenStream = analyzer.tokenStream("content", reader);
  24.             // 获取CharTermAttribute对象,用于获取分词结果
  25.             CharTermAttribute charTermAttr = tokenStream.addAttribute(CharTermAttribute.class);
  26.             // 重置TokenStream,准备读取分词结果
  27.             tokenStream.reset();
  28.             // 循环读取分词结果
  29.             while (tokenStream.incrementToken()) {
  30.                 result.add(charTermAttr.toString());
  31.             }
  32.             tokenStream.close();
  33.         } catch (IOException e) {
  34.             log.error("IkAnalyzerService.textHandler() IOException:{}", e.getMessage(), e);
  35.         }
  36.         return result;
  37.     }
  38. }
复制代码
验证

测试代码

  1. package com.example.demo;
  2. import com.alibaba.fastjson.JSON;
  3. import com.example.demo.service.IkAnalyzerService;
  4. import lombok.extern.slf4j.Slf4j;
  5. import org.junit.jupiter.api.Test;
  6. import org.springframework.boot.test.context.SpringBootTest;
  7. import javax.annotation.Resource;
  8. import java.util.List;
  9. @Slf4j
  10. @SpringBootTest
  11. public class ApplicationTests {
  12.     @Resource
  13.     private IkAnalyzerService ikAnalyzerService;
  14.     @Test
  15.     public void contextLoads() {
  16.         List<String> result = ikAnalyzerService.textHandler("这个电影很精彩,推荐!!!");
  17.         log.info("{}", JSON.toJSONString(result));
  18.         result = ikAnalyzerService.textHandler("他在家正发呆呢");
  19.         log.info("{}", JSON.toJSONString(result));
  20.         result = ikAnalyzerService.textHandler("人家都说他是个好领导,我们可以相信他吗");
  21.         log.info("{}", JSON.toJSONString(result));
  22.     }
  23. }
复制代码
运行结果



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

写过一篇

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表