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

加载NER时出错。bin文件作为openNLP::Maxent_Entity_Annotator()的模型参数

鞠晋
2023-03-14

我使用ApacheOpenNLP的命令行工具创建了一个模型来识别命名实体。下面的代码使用文件语句4OpenNLP创建了模型。txt作为训练集。

opennlp TokenNameFinderTrainer -type maxent -model C:\Users\Documents\en-ner-org.bin -lang en -data C:\Users\Documents\apache-opennlp-1.6.0\sentences4OpenNLP.txt -encoding UTF-8

我在命令行中通过向tag传递语句对模型进行了测试,该模型似乎运行良好。然而,我无法成功地使用R中的模型。我正在尝试使用以下几行创建组织注释功能。使用相同的代码加载从OpenNLP下载的模型效果很好。

modelNER <- "C:/Users/Documents/en-ner-org.bin"
oa <- openNLP::Maxent_Entity_Annotator(language = "en",
                                  kind = "organization",
                                  probs = TRUE,
                                  model = modelNER)

当上面的代码运行时,我收到一个错误:

Could not instantiate the opennlp.tools.namefind.TokenNameFinderFactory. The initialization throw an exception.
opennlp.tools.util.ext.ExtensionNotLoadedException: Unable to find implementation for opennlp.tools.util.BaseToolFactory, the class or service opennlp.tools.namefind.TokenNameFinderFactory could not be located!
     at opennlp.tools.util.ext.ExtensionLoader.instantiateExtension(ExtensionLoader.java:97)
     at opennlp.tools.util.BaseToolFactory.create(BaseToolFactory.java:106)
     at opennlp.tools.util.model.BaseModel.initializeFactory(BaseModel.java:254)
Error in .jnew("opennlp.tools.namefind.TokenNameFinderModel", .jcast(.jnew("java.io.FileInputStream",  : 
java.lang.IllegalArgumentException: opennlp.tools.util.InvalidFormatException: Could not instantiate the opennlp.tools.namefind.TokenNameFinderFactory. The initialization throw an exception.
     at opennlp.tools.util.model.BaseModel.loadModel(BaseModel.java:237)
     at opennlp.tools.util.model.BaseModel.<init>(BaseModel.java:181)
     at opennlp.tools.namefind.TokenNameFinderModel.<init>(TokenNameFinderModel.java:110)

任何关于如何修复错误的建议都会大有帮助。提前谢谢。

共有1个答案

洪和风
2023-03-14

解决了错误。R函数openNLP::Maxent_Entity_Annotator与openNLP 1.6.0生成的命名实体识别(NER)模型不兼容。使用OpenNLP 1.5.3构建NER模型后,OpenNLP::Maxent_Entity_Annotator运行无误。

 类似资料:
  • 我正在使用OpenNLP 1.5.3,我想对英文文本中的位置名称执行NER。为此,我从下一个url下载了相应的模型(en ner location.bin): http://opennlp.sourceforge.net/models-1.5/ 问题是,当我尝试使用以下命令使用此模型在文本中执行NER时: 我得到以下错误: 我的命令中有什么错误吗?还是OpenNLP 1.5.3中的这个模型有缺陷?

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

  • 我是一个相当新的java程序员。我只有大约五周的经验,从零开始,如果在Scene Builder中创建的javafx fxml文件与controller类不在同一个文件夹中,我就会遇到问题,无法正确加载这些文件。 我正在使用 我试着自己研究这个问题,但我没有得到太多,这里的几个答案似乎相似,似乎没有帮助,或者我太密集和/或没有经验,弄不明白它们的意义。它们是JavaFX2.0加载带有事件处理程序的

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

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

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