IKAnalyzer分词工具的spring boot项目整合代码版
简介
IK Analyzer是什么呢,一个很轻量的中文分词工具,是基于java开发的轻量级的中文分词工具包。它是以开源项目Luence为主体的,结合词典分词和文法分析算法的中文分词组件。IK有很多版本,在2012版本中,IK实现了简单的分词歧义排除算法。
我们为什么选择IK作为我们的分词工具呢,这里我们简单介绍一下。这里我们采用了网上的一些介绍。
1、IK才用了特有的“正向迭代最细粒度切分算法”,支持细粒度和智能分词两种切分模式。
2、在系统环境:Core2 i7 3.4G双核,4G内存,window 7 64位, Sun JDK 1.6_29 64位 普通pc环境测试,IK2012具有160万字/秒(3000KB/S)的高速处理能力。
3、2012版的只能分词模式支持简单的分词排歧义处理和数量词合并输出。
4、用了多子处理器分析模式,支持 英文字母 数字 中文词汇等
5、优化词典存储,更小的内存占用。
IK的引入使用
在pom.xml中加入如下配置即可
<!-- ikanalyzer 中文分词器 -->
<dependency>
<groupId>com.janeluo</groupId>
<artifactId>ikanalyzer</artifactId>
<version>2012_u6</version>
<exclusions>
<exclusion>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-core</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-queryparser</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-analyzers-common</artifactId>
</exclusion>
</exclusions>
</dependency> <!-- lucene-queryparser 查询分析器模块 -->
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-queryparser</artifactId>
<version>7.3.0</version>
</dependency>
IK的两个重要词典
扩展词典:为的是让需要切分的字符串的词语 根据扩展词典里的词,不要切分开来。
例如:扩展词典中有:中国的台湾 。那么原本会切分成:中国 的 台湾 在 东海 。会切分成:中国的台湾 在 东海
停止词典:对比停止词典,直接删掉停止词典中出现的词语
IK的使用
项目:maven工程
resource目录下三个配置文件
1.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>
2.extend.dic 扩展词典
这是一个
巨大的墙
3.stopword.dic
一个
一
个
的
4.IKAnalyzerSupport.java
public class IKAnalyzerSupport {
private static final Logger LOGGER = LoggerFactory.getLogger(IKAnalyzerSupport.class);
/**
* IK分词
* @param target
* @return
*/
public static List<String> iKSegmenterToList(String target) throws Exception {
if (StringUtils.isEmpty(target)){
return Lists.newArrayList();
}
List<String> result = new ArrayList<>();
StringReader sr = new StringReader(target);
// 关闭智能分词 (对分词的精度影响较大)
IKSegmenter ik = new IKSegmenter(sr, false);
Lexeme lex;
while((lex=ik.next())!=null) {
String lexemeText = lex.getLexemeText();
result.add(lexemeText);
}
//LOGGER.info("company:{}, iKSegmenterToList:{}", target, JSON.toJSON(result));
return result;
}
}
测试
public static void main(String[] args) throws Exception {
String str="http://www.relaxheart.cn 是xx同学的个人兴趣分享网站";
System.out.println(iKSegmenterToList(str));
}
结果:
http, www.relaxheart.cn, www, relaxheart, cn, 是, 王, 琦, 同学, 的, 个人兴趣, 个人, 兴趣, 分享, 网站
IKAnalyzer分词工具的spring boot项目整合代码版的更多相关文章
- 使用spring tool suite(STS)工具创建spring boot项目和出现错误后的处理
一.先下载配置maven环境 1.下载地址:http://maven.apache.org/download.cgi windows下下载zip文件 2.解压后放到某个文件目录下 3.配置环境变量 ( ...
- Spring Boot 项目学习 (四) Spring Boot整合Swagger2自动生成API文档
0 引言 在做服务端开发的时候,难免会涉及到API 接口文档的编写,可以经历过手写API 文档的过程,就会发现,一个自动生成API文档可以提高多少的效率. 以下列举几个手写API 文档的痛点: 文档需 ...
- 使用Spring boot整合Hive,在启动Spring boot项目时,报错
使用Spring boot整合Hive,在启动Spring boot项目时,报出异常: java.lang.NoSuchMethodError: org.eclipse.jetty.servlet.S ...
- 【原】spring boot在整合项目依赖的问题
最近要开发新的项目,就花了几天时间看了下spring boot的相关资料,然后做了一个demo,不得不说开发效率确实很快,几行注解就完成了事务,aop,数据库等相关配置:但由于先前习惯了spring ...
- 用Gradle构建Spring Boot项目
相比起Maven的XML配置方式,Gradle提供了一套简明的DSL用于构建Java项目,使我们就像编写程序一样编写项目构建脚本.本文将从无到有创建一个用Gradle构建的Spring Boot项目, ...
- Spring Boot Security 整合 JWT 实现 无状态的分布式API接口
简介 JSON Web Token(缩写 JWT)是目前最流行的跨域认证解决方案.JSON Web Token 入门教程 - 阮一峰,这篇文章可以帮你了解JWT的概念.本文重点讲解Spring Boo ...
- spring boot 项目打成war包部署到服务器
这是spring boot学习的第二篇了,在上一篇已经整合了spring boot项目了,如果还有小伙伴没有看得可以先去看第一篇 基础整合spring boot项目 到这里的小伙伴应该都是会整合基本的 ...
- Spring boot Mybatis 整合(完整版)
个人开源项目 springboot+mybatis+thymeleaf+docker构建的个人站点开源项目(集成了个人主页.个人作品.个人博客) 朋友自制的springboot接口文档组件swagge ...
- Spring boot Mybatis 整合(注解版)
之前写过一篇关于springboot 与 mybatis整合的博文,使用了一段时间spring-data-jpa,发现那种方式真的是太爽了,mybatis的xml的映射配置总觉得有点麻烦.接口定义和映 ...
- Spring Boot 项目学习 (一) 项目搭建
0 引言 本文主要记录借用Idea 开发环境下,搭建 Spring Boot 项目框架的过程. 1 系列文档目录 Spring Boot 项目学习 (一) 项目搭建 Spring Boot 项目学习 ...
随机推荐
- golang 指定权限是 0o755 而不是 0755
在Go语言中,当指定文件权限时,使用前缀 0o 来明确表示八进制数是一种推荐的做法. 这是因为在Go语言中,八进制字面量必须以 0o 或 0O 开头,后跟八进制数字(0-7). 这种语法是从 Go 1 ...
- 后端开发学习敏捷需求-->产品价值的定位
产品价值的定位 为什么要写这一系列文章 2023年网上报名学习了,敏捷软件需求的培训课程 ,一直都没有进行回顾,回顾学习,总结 业务分析的能力偏弱,学习和了解关于业务需求相关的方法和理论 每一年都有一 ...
- 记一次 .NET某环境监测系统 崩溃分析
一:背景 1. 讲故事 前些天有位朋友找到我,说他们的程序崩溃了,也自己分析了下初步结果,让我帮忙再确认下,既然让我确认,那就开始dump分析之旅吧. 二:WinDbg 分析 1. 为什么会崩溃 wi ...
- MFC对话框程序:实现程序启动画面
MFC对话框程序:实现程序启动画面 对于比较大的程序,在启动的时候都会显示一个画面,以告诉用户程序正在加载,或者显示一些关于软件的信息,如Visual C++,Word, PhotoShop等.那么对 ...
- Spherical Voxelization
Spherical Voxelization 标签: voxelization AI 摘要: 文档介绍了球面体素化的过程,包括重要的类和方法,如ConvertToSphericalVoxel和sphe ...
- 编译器实现之旅——第十三章 if语句和while语句的代码生成器分派函数的实现
在上一章的旅程中,我们已经实现了表达式类代码生成器分派函数,而在这一章的旅程中,我们将要实现if语句和while语句的代码生成器分派函数.if语句和while语句是两种典型的带有跳转指令的语句.观察C ...
- 喜报!Fluent Editor 开源富文本迎来了第一位贡献者!
你好,我是 Kagol,个人公众号:前端开源星球. 2024年8月20日,刚开源一周的富文本 Fluent Editor 迎来了第一位贡献者:zzxming 1 Bug 描述 zzxming 同学修复 ...
- Maven的下载安装配置
Maven的下载安装配置 Maven是什么 Maven是基于项目对象模型(POM project object model),可以通过一小段描述信息(配置)来管理项目的构建,报告和文档的软件项目管理工 ...
- JSP中的JSTL 标签库
目录 JSTL 标签库 JSTL 标签库的使用步骤 core 核心库使用 <c:set /> (使用很少) <c:if /> <c:choose><c:whe ...
- 【YashanDB数据库】YAS-02024 lock wait timeout, wait time 0 milliseconds
[标题]错误码处理 [问题分类]锁等待超时 [关键字]YAS-02024 [问题描述]执行语句时候,因锁等待超时执行语句失败 [问题原因分析]数据库默认锁等待时间为0秒,如果执行语句存在锁等待过长会执 ...