Bet*_*ish 5 java regex stanford-nlp
我正在尝试使用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(" .", ""));}
Run Code Online (Sandbox Code Playgroud)
这适用于大多数情况。但是,我们如何处理句子中的连词?
例如:
I like coffee and donuts for my breakfast.
Run Code Online (Sandbox Code Playgroud)
理想情况下,应进一步处理为:
I like coffee for my breakfast.
I like donuts for my breakfast.
Run Code Online (Sandbox Code Playgroud)
一种选择是做一个基于正则表达式的规则来进一步划分它们。在core-nlp中是否有任何内置方法可以实现此目的。
任何对此的指针表示赞赏。
简单的答案是:您不能使用 DocumentPreprocessor 来做到这一点。它旨在根据标点符号分割句子。当存在连词(如and )时,无法告诉它分割句子(或者更确切地说是复制句子) 。
您使用正则表达式的想法可能是最简单的方法。您还可以使用 CoreNLP 的依赖解析并检查连接两个直接对象的连接。
对于上面描述的句子,一个简单的正则表达式可能就可以解决问题,而如果你的句子变得更复杂,依赖解析可能会派上用场。
| 归档时间: |
|
| 查看次数: |
396 次 |
| 最近记录: |