问题描述
我们正在尝试通过遵循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 "速い | 茶色 | の | キツネ | は | 怠惰 | な | 犬 | を | 飛び越え | ます"
}
}