在将文本拆分成句子时,Stanford NLP的WordsToSentencesAnnotator的默认行为是什么?

时间:2015-06-16 04:31:47

标签: nlp stanford-nlp

查看WordToSentenceProcessor.javaDEFAULT_BOUNDARY_REGEX = "\\.|[!?]+";让我认为文本会根据.!?分成句子。

但是,如果我将字符串D R E L I N. Okay.作为输入传递,例如使用命令行界面:

java -cp "*" -Xmx2g edu.stanford.nlp.pipeline.StanfordCoreNLP 
             -annotators tokenize,ssplit  -file test.txt

它只返回一个句子D R E L I N. Okay.而不是两个句子['D R E L I N.', 'Okay.']。为什么呢?

1 个答案:

答案 0 :(得分:2)

它会对这些字符进行拆分,但只有当它们作为自己的令牌出现时才会出现,而不是在缩写的末尾,例如"等等。#34;。所以这里的问题不是句子分割器,而是认为" N."是缩写,因此不会拆分" N。"分成两个独立的代币。如果您事先知道您的文本不包含任何缩写,那么最简单的方法是在使用CoreNLP处理它们之前拆分包含句点的所有标记。

您的输入将为D R E L I N . Okay .

如果您的输入也包含缩写,则事情会更复杂,因为您必须编辑标记生成器的规则。见" stanford corenlp, splitting sentences, abbreviation exceptions"有关如何编辑标记生成器规则的高级描述。