为什么Stanford CoreNLP NER-annotator默认加载3个型号?

时间:2015-11-24 22:52:29

标签: stanford-nlp

当我添加" ner"我的StanfordCoreNLP对象管道的注释器,我可以看到它加载了3个模型,这需要花费很多时间:

Adding annotator ner
Loading classifier from edu/stanford/nlp/models/ner/english.all.3class.distsim.crf.ser.gz ... done [10.3 sec].
Loading classifier from edu/stanford/nlp/models/ner/english.muc.7class.distsim.crf.ser.gz ... done [10.1 sec].
Loading classifier from edu/stanford/nlp/models/ner/english.conll.4class.distsim.crf.ser.gz ... done [6.5 sec].
Initializing JollyDayHoliday for SUTime from classpath: edu/stanford/nlp/models/sutime/jollyday/Holidays_sutime.xml as sutime.binder.1.
Reading TokensRegex rules from edu/stanford/nlp/models/sutime/defs.sutime.txt
Reading TokensRegex rules from edu/stanford/nlp/models/sutime/english.sutime.txt
Reading TokensRegex rules from edu/stanford/nlp/models/sutime/english.holidays.sutime.txt

有没有办法只加载一个平等工作的子集?特别是,我不确定为什么它装载3级和4级NER车型时,它有7级车型,我想知道如果不加载这两个仍然可以工作。

1 个答案:

答案 0 :(得分:3)

您可以设置以这种方式加载的模型:

命令行:

-ner.model model_path1,model_path2

Java代码:

 props.put("ner.model", "model_path1,model_path2");

其中model_path1和model_path2应该类似于:

"edu/stanford/nlp/models/ner/english.all.3class.distsim.crf.ser.gz"

模型分层应用。运行第一个模型并应用其标签。然后是第二个,第三个,依此类推。如果你想要更少的模型,你可以在列表中放置1或2个模型而不是默认的三个模型,但这将改变系统的执行方式。

如果你设置" ner.combinationMode"到" HIGH_RECALL",将允许所有模型应用所有标签。如果你设置" ner.combinationMode"到" NORMAL",然后未来的模型不能应用以前模型设置的任何标签。

默认情况下,所有三个模型都针对不同的数据进行了培训。例如,3级训练的数据远远多于7级模型。因此,每个模型都在做不同的事情,并且它们的结果都被组合在一起以创建最终的标记序列。