【问题标题】:Handling conjunctions when splitting sentences using core-nlp's DocumentPreprocessor使用 core-nlp 的 DocumentPreprocessor 拆分句子时处理连词
【发布时间】:2017-07-18 11:08:18
【问题描述】:

我正在尝试使用 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 中是否有任何内置方法可以实现这一点。

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

【问题讨论】:

    标签: java regex stanford-nlp


    【解决方案1】:

    简单的答案是:使用 DocumentPreprocessor 无法做到这一点。它旨在根据标点符号拆分句子。当出现连词(如 and)时,无法告诉它拆分句子(或者更确切地说是复制它)。

    您使用正则表达式的想法可能只是最简单的方法。您还可以使用 CoreNLP 的 Dependency Parsing 并检查连接两个直接对象的连接。

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

    【讨论】:

      猜你喜欢
      • 2020-11-06
      • 2012-09-03
      • 1970-01-01
      • 2018-08-21
      • 2017-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多