有没有人知道处理查找句子边界的Java库?我认为它将是一个智能的StringTokenizer实现,它知道语言可以使用的所有句子终止符。
以下是我使用BreakIterator的经历:
使用示例here: 我有以下日语:
今日はパソコンを買った。高性能のマックは早い!とても快適です。
在ascii中,它看起来像这样:
\ufeff\u4eca\u65e5\u306f\u30d1\u30bd\u30b3\u30f3\u3092\u8cb7\u3063\u305f\u3002\u9ad8\u6027\u80fd\u306e\u30de\u30c3\u30af\u306f\u65e9\u3044\uff01\u3068\u3066\u3082\u5feb\u9069\u3067\u3059\u3002
以下是我更改的示例部分: static void sentenceExamples(){
Locale currentLocale = new Locale ("ja","JP");
BreakIterator sentenceIterator =
BreakIterator.getSentenceInstance(currentLocale);
String someText = "今日はパソコンを買った。高性能のマックは早い!とても快適です。";
当我查看边界指数时,我看到了这一点:
0|13|24|32
但这些指数与任何句子终止符不对应。
答案 0 :(得分:4)
您想要查看国际化的BreakIterator类。 sentence boundaries的一个很好的起点。
答案 1 :(得分:3)
您写道:
我认为它是一个智能的StringTokenizer实现,它知道语言可以使用的所有句子终止符。
这里的一个基本问题是句子终止符取决于上下文,请考虑:
琼斯博士如何计算5!没有递归?
这应该被认为是一个单句,但如果你只是分开可能的句子终止符,你将得到三个句子。
因此,这是一个比人们在开始时想到的更复杂的问题。可以使用机器学习技术来处理它。例如,您可以查看OpenNLP项目,尤其是SentenceDetectorME类。