使用BreakIterator在Java中将日语文本拆分为单词

问题描述

我们正在尝试通过遵循this question中的代码,使用BreakIterator将日语句子分解为单词。该代码仅适用于问题中给出的文本,当我们尝试输入其他文本时,例如“速い茶色のキツネは懒惰な犬を飞び越えます”,则无法将其弄乱。

可能是什么问题?

解决方法

this question 中的

BreakIterator.getSentenceInstance(Locale.JAPAN) 将日语脚本分解为句子,而不是单词。通常,日语中没有标点符号来分隔单词。

您必须使用形态分析器将句子分解为单词。例如,您可以使用 Java port of TinySegmenter

import java.util.List;
import jp.toastkid.libs.tinysegmenter.TinySegmenter;

public class Test {
  public static void main(String[] args) {
      TinySegmenter ts = TinySegmenter.getInstance();
      List<String> list = ts.segment("速い茶色のキツネは怠惰な犬を飛び越えます。");
      System.out.println(String.join(" | ",list));
      // You will get "速い | 茶色 | の | キツネ | は | 怠惰 | な | 犬 | を | 飛び越え | ます"
  }
}