2015-02-06 96 views
1

斯坦福Corenlp默认NER模型的位置使用这三个NER模型按以下顺序:非默认斯坦福Corenlp

Loading classifier from edu/stanford/nlp/models/ner/english.all.3class.distsim.crf.ser.gz ... done [20.6 sec]. Loading classifier from edu/stanford/nlp/models/ner/english.conll.4class.distsim.crf.ser.gz ... done [16.4 sec Loading classifier from edu/stanford/nlp/models/ner/english.muc.7class.distsim.crf.ser.gz ... done [18.2 sec].

但是,如果我们想从一个位置加载我们自己的模型在我的电脑,我们必须设置哪个属性?

因为,如果我提取了stanford-corenlp-3.2.0-models.jar的内容并向其中添加了我的模型并重新创建了jar文件并重新编译了corenlp。但在加载新添加的分类,我得到以下错误:

 [java] Adding annotator tokenize 
    [java] Adding annotator ssplit 
    [java] Adding annotator pos 
    [java] Reading POS tagger model from edu/stanford/nlp/models/pos-tagger/english-left3words/english-left3words-distsim.tagger ... done [13.2 sec]. 
    [java] Adding annotator lemma 
    [java] Adding annotator ner 
    [java] Loading classifier from edu/stanford/nlp/models/ner/ner-model-twitter.ser.gz ... java.lang.ClassCastException: java.util.ArrayList cannot be cast to edu.stan 
ford.nlp.sequences.FeatureFactory 
    [java]  at edu.stanford.nlp.ie.crf.CRFClassifier.loadClassifier(CRFClassifier.java:3380) 
    [java]  at edu.stanford.nlp.ie.AbstractSequenceClassifier.loadClassifier(AbstractSequenceClassifier.java:1587) 
    [java]  at edu.stanford.nlp.ie.AbstractSequenceClassifier.loadClassifier(AbstractSequenceClassifier.java:1642) 
    [java]  at edu.stanford.nlp.ie.AbstractSequenceClassifier.loadClassifier(AbstractSequenceClassifier.java:1629) 
    [java]  at edu.stanford.nlp.ie.crf.CRFClassifier.getClassifier(CRFClassifier.java:3526) 
    [java]  at edu.stanford.nlp.ie.ClassifierCombiner.loadClassifierFromPath(ClassifierCombiner.java:133) 
    [java]  at edu.stanford.nlp.ie.ClassifierCombiner.loadClassifiers(ClassifierCombiner.java:117) 
    [java]  at edu.stanford.nlp.ie.ClassifierCombiner.<init>(ClassifierCombiner.java:99) 
    [java]  at edu.stanford.nlp.ie.NERClassifierCombiner.<init>(NERClassifierCombiner.java:62) 
    [java]  at edu.stanford.nlp.pipeline.StanfordCoreNLP$6.create(StanfordCoreNLP.java:555) 
    [java]  at edu.stanford.nlp.pipeline.AnnotatorPool.get(AnnotatorPool.java:81) 
    [java]  at edu.stanford.nlp.pipeline.StanfordCoreNLP.construct(StanfordCoreNLP.java:260) 
    [java]  at edu.stanford.nlp.pipeline.StanfordCoreNLP.<init>(StanfordCoreNLP.java:127) 
    [java]  at edu.stanford.nlp.pipeline.StanfordCoreNLP.<init>(StanfordCoreNLP.java:123) 
    [java]  at StanfordCoreNLPXMLServer.main(StanfordCoreNLPXMLServer.java:121) 
    [java] Loading classifier from edu/stanford/nlp/models/ner/ner-model-twitter.ser.gz ... Exception in thread "main" edu.stanford.nlp.io.RuntimeIOException: java.io.F 
ileNotFoundException 
    [java]  at edu.stanford.nlp.pipeline.StanfordCoreNLP$6.create(StanfordCoreNLP.java:559) 
    [java]  at edu.stanford.nlp.pipeline.AnnotatorPool.get(AnnotatorPool.java:81) 
    [java]  at edu.stanford.nlp.pipeline.StanfordCoreNLP.construct(StanfordCoreNLP.java:260) 
    [java]  at edu.stanford.nlp.pipeline.StanfordCoreNLP.<init>(StanfordCoreNLP.java:127) 
    [java]  at edu.stanford.nlp.pipeline.StanfordCoreNLP.<init>(StanfordCoreNLP.java:123) 
    [java]  at StanfordCoreNLPXMLServer.main(StanfordCoreNLPXMLServer.java:121) 
    [java] Caused by: java.io.FileNotFoundException 
    [java]  at edu.stanford.nlp.ie.ClassifierCombiner.loadClassifierFromPath(ClassifierCombiner.java:143) 
    [java]  at edu.stanford.nlp.ie.ClassifierCombiner.loadClassifiers(ClassifierCombiner.java:117) 
    [java]  at edu.stanford.nlp.ie.ClassifierCombiner.<init>(ClassifierCombiner.java:99) 
    [java]  at edu.stanford.nlp.ie.NERClassifierCombiner.<init>(NERClassifierCombiner.java:62) 
    [java]  at edu.stanford.nlp.pipeline.StanfordCoreNLP$6.create(StanfordCoreNLP.java:555) 
    [java]  ... 5 more 
    [java] Caused by: java.lang.ClassCastException: java.util.ArrayList cannot be cast to edu.stanford.nlp.classify.LinearClassifier 
    [java]  at edu.stanford.nlp.ie.ner.CMMClassifier.loadClassifier(CMMClassifier.java:1074) 
    [java]  at edu.stanford.nlp.ie.AbstractSequenceClassifier.loadClassifier(AbstractSequenceClassifier.java:1587) 
    [java]  at edu.stanford.nlp.ie.AbstractSequenceClassifier.loadClassifier(AbstractSequenceClassifier.java:1642) 
    [java]  at edu.stanford.nlp.ie.AbstractSequenceClassifier.loadClassifier(AbstractSequenceClassifier.java:1629) 
    [java]  at edu.stanford.nlp.ie.ner.CMMClassifier.getClassifier(CMMClassifier.java:1114) 
    [java]  at edu.stanford.nlp.ie.ClassifierCombiner.loadClassifierFromPath(ClassifierCombiner.java:139) 
    [java]  ... 9 more 
    [java] Java Result: 1 

BUILD SUCCESSFUL 
Total time: 3 minutes 22 seconds 

回答

1

-ner.model选项将尝试找到Java类路径作为一个文件系统路径的文件。如果您给文件系统上的ser.gz文件提供绝对路径,则它应该正常加载。

0

我认为FileNotFoundException是假的/误导性的,这里的问题是从ArrayList到FeatureFactory的ClassCastException的第一个错误。我认为这表明你已经在你的类路径上并且正在运行一个旧的版本的CRFClassifier,从之前我们加装CRFClassifier到支持具有FeaturyFactory的列表。我会仔细检查你的类路径上的内容。

0

检查重新编译的models.jar是否将您的自定义模型与预期路径(edu/stanford/nlp/models/ner /)中的props文件解压缩。