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