使用场景
在大数据的场景下,一般用于统计关键词出现的频率,因此我们需要对一些数据文本进行分词,得到我们想要的关键词。
导入依赖
<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; } }
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论