Java は単語分割のために IK トークナイザーを呼び出し、ツール クラスをカプセル化します。

目次

使用するシーン

依存関係をインポートする

分詞の使用

梱包ツール


使用するシーン

        ビッグデータのシナリオでは、通常、キーワードの頻度をカウントするために使用されるため、必要なキーワードを取得するには、いくつかのデータ テキストをセグメント化する必要があります。

依存関係をインポートする

<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;
    }
}

おすすめ

転載: blog.csdn.net/m0_55868614/article/details/129273885