我正在尝试使用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的依赖关系解析,并检查连接两个直接对象的连接。
对于上述句子,如果句子变得更复杂,那么简单的正则表达式就可以解决问题,而依赖关系解析可能会派上用场。