首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenNLP --这个(1.5.3)版本的OpenNLP不支持1.6.0版本

OpenNLP --这个(1.5.3)版本的OpenNLP不支持1.6.0版本
EN

Stack Overflow用户
提问于 2017-01-12 02:42:57
回答 1查看 319关注 0票数 0

目前,我正在尝试在代码中使用经过自定义培训的OpenNLP名称查找器模型。我的项目使用OpenNLP 1.6.0,是使用Eclipse开发的。使用OpenNLP 1.6.0对模型进行了训练。

然而,我得到了这个恼人的错误:

代码语言:javascript
复制
java.lang.IllegalArgumentException : opennlp.tools.util.InvalidFormatException: Model version 1.6.0 is not supported by this (1.5.3) version of OpenNLP!

here提出了一个类似的问题,并回答说,问题是由于OpenNLP模型正在使用与使用中的模型相同的版本进行培训(即使用1.6.0对模型进行培训,并在也使用1.6.0的项目中使用)。不过,我还有其他使用OpenNLP 1.6.0的项目,它们能够成功地加载模型,所以我认为这不适用于我。

我的项目的.classpath还显示该项目引用的是OpenNLP 1.6.0库。

我知道这个问题相当模糊,但是如果有人对为什么会发生这种事有任何见解,请告诉我!

总结:由于明显的OpenNLP版本不兼容,无法在代码中加载经过自定义训练的OpenNLP名称查找器模型。模型在OpenNLP 1.6.0中进行了培训,我的项目也使用了该模型。其他也使用1.6.0的项目能够成功地加载模型。

EN

回答 1

Stack Overflow用户

发布于 2017-01-15 11:09:48

我已经指出了错误的来源--我的项目也在使用ApacheTika1.13库,它包含自己的OpenNLP 1.5.3实现。

因此,类路径包含多个JAR,这些JAR包含它们自己版本的OpenNLP类。

编辑16/1/2017:根据我的发现,加载库的顺序很重要.

请纠正我的错误:在Java (以及其他语言)中,一旦一个依赖组件加载到内存中,那么在默认情况下,即使以后需要另一个版本,也不会再次加载它。

由于这个原因,如果Tika库是在 1.6.0库之前加载的,那么OpenNLP 1.5.3将首先加载,尽管随后加载了1.6.0,程序仍将“坚持”到1.5.3。类似地,如果发生了相反的情况(1.6.0在Tika之前加载),则程序将“坚持”到1.6.0,而不是.。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41604271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档