2015-11-24 49 views
4

當我添加了「NER」註釋我StanfordCoreNLP對象的管道,我可以看到它加載3種型號,這需要大量的時間:斯坦福大學CoreNLP NER-annotator爲什麼默認加載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 

有沒有辦法,只是加載一個子集,它會平等地工作?特別是,我不確定爲什麼它有7級模型時加載3級和4級NER模型,我想知道是否不加載這兩個模型仍然可以工作。

回答

2

您可以設置該款機型以這種方式加載:

命令行:

-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」,則未來的模型不能應用以前模型設置的任何標籤。

默認情況下的所有三種模型都根據不同的數據進行了訓練。例如,三級車的訓練數據要比七級車的數據多得多。所以每個模型都做了一些不同的事情,並且他們的結果都被結合起來以創建最終的標籤序列。

+0

謝謝!真的很感激它! –