当前位置: 首页 > 知识库问答 >
问题:

Stanford Corenlp中NER模型的非缺省定位

冯德佑
2023-03-14

Stanford 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.done[16.4秒从edu/stanford/nlp/models/ner/english.muc.7class.distsim.crf.ser.gz.done[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

共有1个答案

阎丰
2023-03-14

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

 类似资料:
  • 我是NLP领域的新手,正在使用入门。 我在这里看了一些留档中给出的命令:https://opennlp.apache.org/documentation/manual/opennlp.html (我正在使用命令行界面开始) 我使用已经可用的示例模型来试验不同的工具,最后决定创建一个自定义NER模型。 我遵循了上述链接中给出的说明。 将给出的例句复制到文件(我只是创建了一个具有该扩展名的新文件,并将

  • 问题内容: 我正在尝试使用斯坦福大学的OpenIE(版本3.6.0)基于我在化学领域训练的NER模型提取关系三元组。但是,我无法让OpenIE根据我自己的NER模型提取关系三元组。看来OpenIE仅基于软件包中提供的默认NER模型提取关系三元组。 以下是我训练和部署NER模型所做的工作: 根据http://nlp.stanford.edu/software/crf-faq.html#a训练NER模

  • 我们有一个报告编写工具,我们正在尝试添加搜索功能。基本上,用户可以输入一个问题,并根据句子中的标准返回一份报告。我们正在尽可能地保持开放性,不需要特定的句子结构,这就是为什么我们想尝试OpenNLP-NER。 例如: “上季度的艺术出勤率是多少?” 标记为: 我们试着用不同的部门,不同的过滤器等提出不同的问题。。我们还没有达到15k,只有14.6k,所以我们还在努力。 就分析问题而言,这是问题的开

  • 问题内容: 我已经创建了自己的NER模型与斯坦福大学“斯坦福大学NER”软件,并按照这些方向。 我知道CoreNLP按照以下顺序开箱即用地加载了三个NER模型: 我现在想将我的NER模型包括在上面的列表中,并先用NER模型标记文本。 我已经找到了关于该主题的两个以前问题,它们是“使用自定义NER模型的Stanford OpenIE[”和“为什么Stanford CoreNLP NER注释器默认加载

  • null 我发现了之前关于这个主题的两个StackOverflow问题,它们是“Stanford OpenIE使用定制的NER模型”和“为什么Stanford CoreNLP NER-annotator默认加载3个模型?” 这两个帖子都有很好的答案。答案的一般信息是,您必须在文件中编辑代码。 使用自定义NER模型的斯坦福OpenIE 是否需要修改或添加此代码到CoreNLP软件中的特定类文件中?

  • 我一直在尝试与斯坦福核心NLP合作。我希望训练我自己的NER模型。从论坛上的SO和官网上描述了如何使用一个属性文件来实现这一点。我将如何通过API实现它?。 怎么做