当我添加" 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级车型,我想知道如果不加载这两个仍然可以工作。
答案 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级模型。因此,每个模型都在做不同的事情,并且它们的结果都被组合在一起以创建最终的标记序列。