斯坦福corenlp暂停并继续注释管道

时间:2015-12-15 00:32:17

标签: java stanford-nlp

通常当您使用corenlp注释管道来表示NER时,您将编写以下代码

Properties props = new Properties();
props.put("annotators", "tokenize, ssplit, pos, lemma, ner");
StanfordCoreNLP pipeline = new StanfordCoreNLP(props);
pipeline.annotate(document);

我想在上面的管道中执行句子拆分,即ssplit。但是在我继续管道的其余部分之前,我想删除太久的句子。我一直在做的是执行句子分割,按长度过滤句子,然后通过应用整个管道即tokenize, ssplit, pos, lemma, ner来执行NER。基本上我已经两次执行了tokenizessplit。有更有效的方法吗?例如,执行tokenizessplit然后暂停管道以删除过长的句子,然后使用poslemmaner恢复管道。

1 个答案:

答案 0 :(得分:1)

您可以创建两个管道对象,第二个管道对象使用后面的注释器。所以:

Properties props = new Properties();
props.put("annotators", "tokenize, ssplit");
StanfordCoreNLP pipeline = new StanfordCoreNLP(props);
pipeline.annotate(document);

其次是:

Properties props = new Properties();
props.put("annotators", "pos, lemma, ner");
StanfordCoreNLP pipeline = new StanfordCoreNLP(props, false);
pipeline.annotate(document);

当然,请注意,如果删除中间句子,某些注释(例如字符偏移)将不直观。