【问题标题】:non-default location of NER models in Stanford Corenlp斯坦福 Corenlp 中 NER 模型的非默认位置
【发布时间】:2015-04-07 01:44:44
【问题描述】:

Stanford Corenlp 默认按以下顺序使用三个 NER 模型:

从加载分类器 edu/stanford/nlp/models/ner/english.all.3class.dissim.crf.ser.gz ... 完成 [20.6 秒]。从加载分类器 edu/stanford/nlp/models/ner/english.conll.4class.dissim.crf.ser.gz ... 完成 [16.4 秒加载分类器来自 edu/stanford/nlp/models/ner/english.muc.7class.dissim.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

【问题讨论】:

    标签: stanford-nlp


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      我认为 FileNotFoundException 是虚假/误导性的,这里的问题是 ClassCastException 从 ArrayList 到 FeatureFactory 的第一个错误。我认为这表明你在你的类路径上并且正在运行一个版本的 CRFClassifier,从之前我们改造 CRFClassifier 以支持拥有一个 FeaturyFactory 的列表。我会仔细检查你的类路径上有什么。

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 2019-03-17
          • 2020-08-30
          • 1970-01-01
          • 2017-11-27
          • 1970-01-01
          • 1970-01-01
          • 2017-06-06
          • 1970-01-01
          • 2017-06-02
          相关资源
          最近更新 更多