在运行时更改CoreNLP设置

时间:2015-04-02 08:40:26

标签: java nlp stanford-nlp

我使用的是Stanford CoreNLP管道,我想知道是否有办法在不重新启动整个工具的情况下编辑基本设置(避免重新加载模型)。

现在我有:

Properties props = new Properties();
props.setProperty("tokenize.whitespace", "true");
props.setProperty("annotators", "tokenize, ssplit, pos, ...");
StanfordCoreNLP stanfordPipeline = new StanfordCoreNLP(props);

我希望动态更改tokenize.whitespace设置,而无需重新启动所有内容。有可能吗?

1 个答案:

答案 0 :(得分:1)

您应该只使用其他属性创建一个新的StanfordCoreNLP实例;所有常见的注释器及其模型都不会被重新加载,因为StanfordCoreNLP使用静态AnnotatorPool(参见src code,第103行),其中AnnotatorPool是:

  

用于跟踪注释器的对象。典型的用途是允许   多个管道共享任何共同注释器。

     

例如,如果存在多个管道,则它们都需要一个   ParserAnnotator,加载两个这样的注释器会很糟糕   记忆。相反,AnnotatorPool将只创建一个Annotator   并允许两个管道共享它。

(摘自javadoc