目次
使用するシーン
ビッグデータのシナリオでは、通常、キーワードの頻度をカウントするために使用されるため、必要なキーワードを取得するには、いくつかのデータ テキストをセグメント化する必要があります。
依存関係をインポートする
<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;
}
}