我目前正试图在代码中使用一个经过定制培训的OpenNLP名称查找器模型。我的项目使用OpenNLP1.6.0,并使用EclipseIDE开发。该模型还使用OpenNLP 1.6.0进行了训练。
然而,我遇到了一个恼人的错误:
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训练模型,并在同样使用1.6.0的项目中使用它)。然而,我也有其他使用OpenNLP1.6.0的Java项目,他们能够成功加载模型,所以我认为这不适用于我。
这个我的项目的classpath还显示,该项目正在引用OpenNLP 1.6.0库。
我知道这个问题相当模糊,但是如果有人知道为什么会发生这种情况,请告诉我!
总而言之:由于OpenNLP版本明显不兼容,无法在代码中加载经过定制培训的OpenNLP名称查找器模型。模型是在OpenNLP1.6.0中训练的,我的项目也使用OpenNLP1.6.0。其他也使用1.6.0的项目能够成功加载模型。
我已经确定了错误的来源——我的项目也在使用Apache Tika 1.13库,其中包含它自己的OpenNLP 1.5.3实现。
因此,类路径包含多个JAR,这些JAR包含各自版本的OpenNLP类。
2017年1月16日编辑:根据我的发现,加载库的顺序很重要。
如果我错了,请纠正我:在Java(以及其他语言)中,一旦一个依赖组件加载到内存中,那么默认情况下,即使以后需要另一个版本,也不会再次加载它。
因此,如果Tika库在OpenNLP 1.6.0库之前加载,那么OpenNLP 1.5.3将首先加载,并且程序将“坚持”到1.5.3,尽管随后加载了1.6.0。类似地,如果发生相反的情况(Tika之前加载了1.6.0),程序将“坚持”到1.6.0。
我正在尝试使用OpenNLP在手册中的一个示例(第一次使用它)。 出于某种原因: 获取一个错误: 我一点也不知道为什么会这样。。。这里说,OpenNLP的0.0.0-SNAPSHOT版本在加载任何模型时都不会失败。 到目前为止,我还没有找到关于这个错误的任何其他信息。可能是我用进口货做的?或者我正在使用的模型(我从OpenNLP网站下载了它——找不到任何其他版本)?不管怎样,我不知道怎么了。。。
我训练OpenNLP NER模型来检测一个新实体,但当我使用这个模型时,我遇到了以下异常: 我使用的是OpenNLP 1.6.0版,源代码如下: 谁能帮我解决这个问题。。
我试图编译GLSL着色器在LWJGL使用OpenGL。我在MacOS Sierra上。 尝试编译着色器时出现以下错误: 着色器代码在Windows上工作,但在macOS上测试时却不能。下面是着色器代码: 下面是我如何加载着色器。。。 print语句返回正确的输出,但它仍然给我错误。 我在stackoverflow上下搜索了一个解决方案,但每个人都说他们在编译它时没有换行符,我有。我不明白为什么会这
我得到了一个错误时,打开铬与硒,它打开和关闭窗口后立即打开。下面是我的代码:
我使用的是IntelliJ IDEA Ultimate 2019.3.1。每当我尝试启动任何简单的Java Maven项目(甚至可能是一个简单的Hello World)时,我都会得到以下错误: 通过终端运行,得到以下输出: 通过终端运行,得到以下输出:
我正在使用OpenNLP 1.5.3,我想对英文文本中的位置名称执行NER。为此,我从下一个url下载了相应的模型(en ner location.bin): http://opennlp.sourceforge.net/models-1.5/ 问题是,当我尝试使用以下命令使用此模型在文本中执行NER时: 我得到以下错误: 我的命令中有什么错误吗?还是OpenNLP 1.5.3中的这个模型有缺陷?