我正在尝试使用core-nlps的DocumentPreprocessor方法将给定的文本分成句子。

下面是我正在使用的代码。

List<String> splitSentencesList = new ArrayList<>();
Reader reader = new StringReader(inputText);
DocumentPreprocessor dp = new DocumentPreprocessor(reader);
 for(List<HasWord> sentence :dp){
               splitSentencesList.add(Sentence.listToString(sentence).toLowerCase().replace(" .", ""));}

这适用于大多数情况。但是,我们如何处理一个句子中的连词呢?

例如:
I like coffee and donuts for my breakfast.

理想情况下,应进一步处理为:
I like coffee for my breakfast.
I like donuts for my breakfast.

一种选择是做一个基于正则表达式的规则来进一步划分它们。在core-nlp中是否有任何内置方法可以实现此目的。

任何对此的指针表示赞赏。

最佳答案

简单的答案是:您不能使用DocumentPreprocessor做到这一点。它旨在根据标点符号拆分句子。当存在连词(如和)时,没有办法告诉它拆分一个句子(或重复一个句子)。

您使用正则表达式的想法可能只是最简单的方法。您还可以使用CoreNLP的依赖关系解析,并检查连接两个直接对象的连接。

java - 使用core-nlp的DocumentPreprocessor分割句子时处理连词-LMLPHP

对于上述句子,如果句子变得更复杂,那么简单的正则表达式就可以解决问题,而依赖关系解析可能会派上用场。

10-05 23:08
查看更多