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

为什么自我训练的NER模型与OpenNLP版本不兼容?

汪丁雷
2023-03-14

我训练OpenNLP NER模型来检测一个新实体,但当我使用这个模型时,我遇到了以下异常:

Exception in thread "main" java.lang.IllegalArgumentException: 
opennlp.tools.util.InvalidFormatException: 
   Model version 1.6.0 is not supported by this (1.5.3) version of OpenNLP!

我使用的是OpenNLP 1.6.0版,源代码如下:

String [] sentences = Fragmentation.getSentences(Document);
InputStream modelIn = new FileInputStream("Models/en-ner-cvskill.bin");
TokenNameFinderModel model = new TokenNameFinderModel(modelIn);
NameFinderME nameFinder = new NameFinderME(model);
String[] tokens = null;
Span nameSpans[] = null;
int i=0; 
for (String sentence : sentences) {
    tokens = null;
    nameSpans = null;

    System.out.println("Sentences: "+(++i)+"\n" + sentence);
    tokens = Fragmentation.getTokens(sentence);
    for(String token: tokens){
          System.out.println("Token:-------------------: "+token);
    }
    nameSpans = nameFinder.find(tokens);
    String SkillName = Arrays.toString(Span.spansToStrings(nameSpans, tokens));
    for(Span name:nameSpans){
          System.out.println("Skills: "+ name.toString());
    }

    System.out.println("Names-------------------:"+SkillName);
}
nameFinder.clearAdaptiveData();                      

谁能帮我解决这个问题。。

共有1个答案

昝唯
2023-03-14

我已经找到问题了...实际上我正在训练opennlp 1.6.0的名称查找器,并且在同一个版本中使用,这与当前版本(1.6.0)的opennlp是不可能的。现在我训练了opennlp 1.5.3的模型,并且正在使用opennlp 1.6.0,它工作正常!

 类似资料:
  • 我正在尝试为多个实体训练自定义NER模型。以下是示例训练数据: 方法采用字符串参数。这个参数有什么用途?还有,我如何为多个实体(例如,在我的例子中,,,)训练一个模型 }

  • 我想训练用于提取人名的模型(NER系统的一部分),但我想使这个模型无大小写(我的意思是,该模型不会考虑字母大小写,大写字母和小写字母之间没有区别),因为我有嘈杂的文本。 那么训练步骤中是否有任何参数可以做到这一点,或者任何其他方式?

  • 我的代码是: 我的数据如下: 我的结果是: 两个时代后它就卡在那里了。我能做些什么来防止它这么快卡住?

  • 大家已经提到了这个,这个,这个和这个,但是仍然发现很难建立一个自定义的名字查找器模型。。以下是代码: 我在尝试执行命令行时不断出现错误: 让我把论点1改为 然后我收到一个运行时错误,说你不能强制转换这个。这是我在线程“main”中强制转换 第二个问题是: 给出一个语法错误。不确定这里出了什么问题。如果有任何帮助,我将不胜感激,因为我已经尝试了上述链接上的所有代码片段。 祝好

  • 我发现很难创建自己的openNLP模型。谁能告诉我,如何拥有自己的模型。培训应该如何进行。 输入应该是什么,输出模型文件将存储在哪里。

  • 我刚开始使用OpenNLP。我需要创建一个简单的训练模型来识别名称实体。