Stanford nlp 斯坦福Corenlp中NER模型的非默认位置

Stanford nlp 斯坦福Corenlp中NER模型的非默认位置,stanford-nlp,Stanford Nlp,默认情况下,斯坦福Corenlp按以下顺序使用三种NER模型: 从中加载分类器 edu/stanford/nlp/models/ner/english.all.3class.distsim.crf.ser.gz。。。 完成[20.6秒]。从中加载分类器 edu/stanford/nlp/models/ner/english.conll.4class.distsim.crf.ser.gz ... 完成[16.4秒从中加载分类器 edu/stanford/nlp/models/ner/english

默认情况下,斯坦福Corenlp按以下顺序使用三种NER模型:

从中加载分类器 edu/stanford/nlp/models/ner/english.all.3class.distsim.crf.ser.gz。。。 完成[20.6秒]。从中加载分类器 edu/stanford/nlp/models/ner/english.conll.4class.distsim.crf.ser.gz ... 完成[16.4秒从中加载分类器 edu/stanford/nlp/models/ner/english.muc.7class.distsim.crf.ser.gz。。。 完成[18.2秒]

但是,如果我们想从我的计算机中的某个位置加载我们自己的模型,我们必须设置哪个属性

因为,如果我提取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
[java]添加注释器标记化
[java]添加注释器ssplit
[java]添加注释器位置
[java]阅读edu/stanford/nlp/models/POS-tagger/english-left3words/english-left3words-distsim.tagger中的POS-tagger模型…完成[13.2秒]。
[java]添加注释器引理
[java]添加注释器
[java]从edu/stanford/nlp/models/ner/ner-model-twitter.ser.gz…java.lang.ClassCastException加载分类器:java.util.ArrayList不能转换为edu.stan
ford.nlp.sequences.FeatureFactory
[java]位于edu.stanford.nlp.ie.crf.crfclassizer.loadClassifier(crfclassizer.java:3380)
[java]位于edu.stanford.nlp.ie.AbstractSequenceClassifier.loadClassifier(AbstractSequenceClassifier.java:1587)
[java]位于edu.stanford.nlp.ie.AbstractSequenceClassifier.loadClassifier(AbstractSequenceClassifier.java:1642)
[java]位于edu.stanford.nlp.ie.AbstractSequenceClassifier.loadClassifier(AbstractSequenceClassifier.java:1629)
[java]位于edu.stanford.nlp.ie.crf.crfclassizer.getClassifier(crfclassizer.java:3526)
[java]位于edu.stanford.nlp.ie.ClassifierCombiner.loadClassifierFromPath(ClassifierCombiner.java:133)
[java]位于edu.stanford.nlp.ie.ClassifierCombiner.loadClassifiers(ClassifierCombiner.java:117)
[java]位于edu.stanford.nlp.ie.ClassifierCombiner.(ClassifierCombiner.java:99)
[java]位于edu.stanford.nlp.ie.NERClassifierCombiner.(NERClassifierCombiner.java:62)
[java]位于edu.stanford.nlp.pipeline.StanfordCoreNLP$6.create(StanfordCoreNLP.java:555)
[java]位于edu.stanford.nlp.pipeline.AnnotatorPool.get(AnnotatorPool.java:81)
[java]位于edu.stanford.nlp.pipeline.StanfordCoreNLP.construct(StanfordCoreNLP.java:260)
[java]位于edu.stanford.nlp.pipeline.StanfordCoreNLP.(StanfordCoreNLP.java:127)
[java]位于edu.stanford.nlp.pipeline.StanfordCoreNLP.(StanfordCoreNLP.java:123)
[java]位于StanfordCoreNLPXMLServer.main(StanfordCoreNLPXMLServer.java:121)
[java]从edu/stanford/nlp/models/ner/ner-model-twitter.ser.gz加载分类器…线程“main”中的异常edu.stanford.nlp.io.RuntimeIOException:java.io.F
ileNotFoundException
[java]位于edu.stanford.nlp.pipeline.StanfordCoreNLP$6.create(StanfordCoreNLP.java:559)
[java]位于edu.stanford.nlp.pipeline.AnnotatorPool.get(AnnotatorPool.java:81)
[java]位于edu.stanford.nlp.pipeline.StanfordCoreNLP.construct(StanfordCoreNLP.java:260)
[java]位于edu.stanford.nlp.pipeline.StanfordCoreNLP.(StanfordCoreNLP.java:127)
[java]位于edu.stanford.nlp.pipeline.StanfordCoreNLP.(StanfordCoreNLP.java:123)
[java]位于StanfordCoreNLPXMLServer.main(StanfordCoreNLPXMLServer.java:121)
[java]原因:java.io.FileNotFoundException
[java]位于edu.stanford.nlp.ie.ClassifierCombiner.loadClassifierFromPath(ClassifierCombiner.java:143)
[java]位于edu.stanford.nlp.ie.ClassifierCombiner.loadClassifiers(ClassifierCombiner.java:117)
[java]位于edu.stanford.nlp.ie.ClassifierCombiner.(ClassifierCombiner.java:99)
[java]位于edu.stanford.nlp.ie.NERClassifierCombiner.(NERClassifierCombiner.java:62)
[java]位于edu.stanford.nlp.pipeline.StanfordCoreNLP$6.create(StanfordCoreNLP.java:555)
[java]…还有5个
[java]原因:java.lang.ClassCastException:java.util.ArrayList无法强制转换为edu.stanford.nlp.classify.LinearClassifier
[java]位于edu.stanford.nlp.ie.ner.CMMClassifier.loadClassifier(CMMClassifier.java:1074)
[java]位于edu.stanford.nlp.ie.AbstractSequenceClassifier.loadClassifier(AbstractSequenceClassifier.java:1587)
[java]位于edu.stanford.nlp.ie.AbstractSequenceClassifier.loadClassifier(AbstractSequenceClassifier.java:1642)
[java]位于edu.stanford.nlp.ie.AbstractSequenceClassifier.loadClassifier(AbstractSequenceClassifier.java:1629)
[java]位于edu.stanford.nlp.ie.ner.CMMClassifier.getClassifier(CMMClassifier.java:1114)
[java]位于edu.stanford.nlp.ie.ClassifierCombiner.loadClassifierFromPath(ClassifierCombiner.java:139)
[java]…还有9个
[java]java结果:1
建设成功
总时间:3分22秒

使用
-ner.model
选项将尝试在Java类路径上或作为文件系统路径查找文件。如果您为文件系统上的
ser.gz
文件提供绝对路径,它应该可以正常加载。

我认为FileNotFoundException是伪造的/误导性的,这里的问题是ClassCastExcept的第一个错误从ArrayList到FeatureFactory。我认为这表明您的类路径上有一个旧版本的CRFClassizer,从以前我们改装CRFClassizer以支持FeatureFactory的列表时开始。我会仔细检查您的类路径上有什么。

检查重新编译的models.jar是否有您通过提取props文件,在预期路径(edu/stanford/nlp/models/ner/)中创建自定义模型