查找句子边界的Java库

Mik*_*ler 7 java string nlp text-segmentation

有没有人知道处理查找句子边界的Java库?我认为这将是一个智能的StringTokenizer实现,它知道语言可以使用的所有句子终止符.

这是我对BreakIterator的体验:

这里使用示例:我有以下日语:

???????????????????????????????
Run Code Online (Sandbox Code Playgroud)

在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
Run Code Online (Sandbox Code Playgroud)

这是我更改的示例的一部分:static void sentenceExamples(){

  Locale currentLocale = new Locale ("ja","JP");
  BreakIterator sentenceIterator = 
     BreakIterator.getSentenceInstance(currentLocale);
  String someText = "???????????????????????????????";
Run Code Online (Sandbox Code Playgroud)

当我看到边界指数时,我看到了这个:

0|13|24|32
Run Code Online (Sandbox Code Playgroud)

但这些指数与任何句子终结者都不对应.

Fab*_*eeg 3

你写了:

我认为这将是一个智能 StringTokenizer 实现,它知道语言可以使用的所有句子终止符。

这里的一个基本问题是句子终止符取决于上下文,请考虑:

琼斯博士是如何计算出 5 的!没有递归?

这应该被识别为单个句子,但如果您只是拆分可能的句子终止符,您将得到三个句子。

所以这是一个比人们一开始想象的更复杂的问题。可以使用机器学习技术来接近它。例如,您可以查看OpenNLP项目,特别是SentenceDetectorME类。