首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用openNLP分块程序时出现错误

使用openNLP分块程序时出现错误
EN

Stack Overflow用户
提问于 2014-02-17 11:42:15
回答 1查看 278关注 0票数 0

我尝试这样使用openNLP分块:

代码语言:javascript
复制
Gate.getCreoleRegister().registerDirectories( new File(Gate.getGateHome().getAbsolutePath()
                                         + "/plugins/OpenNLP").toURI().toURL());
ProcessingResource chunkPr = (ProcessingResource) Factory.createResource("gate.opennlp.OpenNlpChunker", Factory.newFeatureMap());
annieController.add(chunkPr);

然而,我得到了以下异常:

代码语言:javascript
复制
Exception in thread "main" java.lang.NoSuchMethodError: opennlp.maxent.io.BinaryGISModelReader.getModel()Lopennlp/maxent/GISModel;
at gate.opennlp.OpenNlpChunker.getModel(OpenNlpChunker.java:59)
at gate.opennlp.OpenNlpChunker.init(OpenNlpChunker.java:190)

我想不出如何摆脱这个异常。

EN

回答 1

Stack Overflow用户

发布于 2014-02-18 04:16:51

有两种方法可以解决它。

切换到更高的GATE版本。在最新的gate构建中,它工作得很好。我使用gate-7.2-SNAPSHOT-build4745-ALL对其进行了测试。你可以从Jenkins continuous integration server上取一个。我没有测试latest stable release,但我相信它也会对你有帮助。

第二名:

如果你受制于现有的GATE版本(我猜大概是5.1...6),这会让事情变得更加复杂。

如果在GATE安装中有OpenNLPPlugun的源代码,只需使用Ant重新构建插件即可。您可以在$GATE_HOME$/ build.xml /OpenNLP文件夹中找到Ant。

第3位(最坏情况。如果第一种和第二种方法不起作用):

通常,您必须解决两个(或更多)之间依赖关系冲突。不同版本的OpenNLP库。

问题是你的OpenNLPChunker是来自Ontotext的GATE处理资源的非常旧的版本。它取决于特定版本的opennlp.maxent.io.BinaryGISModelReader类。如果没有关于GATE配置的详细信息,很难准确地说出在您的计算机上发生了什么。但事情通常会以以下方式发生:

在运行时,类路径中有多个版本的OpenNLP库。一些附加插件或其他模块依赖于OpenNLP库。插件(或任何代码)加载另一个版本的opennlp.maxent.io.BinaryGISModelReader类作为依赖项。在此之后,您将尝试加载OpenNLPChunker,它获取了错误版本的opennlp.maxent.io.BinaryGISModelReader类(已由ClassLoader加载)。在尝试调用"getModel()“方法的过程中,您得到了NoSuchMethodError异常。您必须确保只有一个OpenNLP库。

PS:

在后来的GATE版本中,Ian Roberts重写了OpenNLPChunker,并且不依赖于opennlp.maxent.io.BinaryGISModelReader类的版本。因此,第一种选择将是最简单的解决方案。

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

https://stackoverflow.com/questions/21820320

复制
相关文章

相似问题

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