java - 使用开源版本的CoreNLP时无法加载OpenIE模型

标签 java serialization nlp stanford-nlp

我从this page下载了coreNLP的源码以及 README 文件中推荐的型号。我在 Eclipse 中创建一个新项目并尝试运行 openie,它返回以下异常:

Exception in thread "main" edu.stanford.nlp.io.RuntimeIOException: Could not load clause splitter model at edu/stanford/nlp/models/naturalli/clauseSearcherModel.ser.gz
    at edu.stanford.nlp.naturalli.OpenIE.<init>(OpenIE.java:201)
    at edu.stanford.nlp.pipeline.AnnotatorImplementations.openie(AnnotatorImplementations.java:272)
    at edu.stanford.nlp.pipeline.AnnotatorFactories$20.create(AnnotatorFactories.java:654)
    at edu.stanford.nlp.pipeline.AnnotatorPool.get(AnnotatorPool.java:89)
    at edu.stanford.nlp.pipeline.StanfordCoreNLP.construct(StanfordCoreNLP.java:403)
    at edu.stanford.nlp.pipeline.StanfordCoreNLP.<init>(StanfordCoreNLP.java:142)
    at edu.stanford.nlp.pipeline.StanfordCoreNLP.<init>(StanfordCoreNLP.java:138)
    at edu.stanford.nlp.naturalli.demo.Demo.main(Demo.java:37)
Caused by: java.io.InvalidClassException: edu.stanford.nlp.naturalli.ClauseSplitterSearchProblem$8; local class incompatible: stream classdesc serialVersionUID = 4145523451314579506, local class serialVersionUID = -7360029270983346606
    at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:621)
    at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1623)
    at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1518)
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1774)
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
    at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:371)
    at edu.stanford.nlp.io.IOUtils.readObjectFromURLOrClasspathOrFileSystem(IOUtils.java:325)
    at edu.stanford.nlp.naturalli.ClauseSplitter.load(ClauseSplitter.java:283)
    at edu.stanford.nlp.naturalli.OpenIE.<init>(OpenIE.java:196)
    ... 7 more

最佳答案

我已完成以下步骤:

  1. 从 GitHub 克隆存储库:https://github.com/stanfordnlp/CoreNLP.git

  2. 下载最新的模型 jar:http://nlp.stanford.edu/software/stanford-corenlp-models-current.jar

  3. cd CoreNLP ; Ant

  4. 此时您应该已经在 GitHub 上构建了最新版本的代码

  5. 设置 CLASSPATH 以包含 CoreNLP/classes、CoreNLP/lib 和最新模型 jar

  6. 运行此命令:java -Xmx4g edu.stanford.naturalli.OpenIE

它运行良好,所以我认为我们当前分发的内容没有任何问题。

关于java - 使用开源版本的CoreNLP时无法加载OpenIE模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37199227/

相关文章:

java - 在 Spring 中动态注入(inject)类

Delphi:将对象传输到远程计算机

c# - 如何使用 ISO 8601 格式的 DateTime 字段将 JSON 文本反序列化为 BsonDocument?

Java 序列化 - java.io.InvalidClassException 本地类不兼容

java - Jape 文件以查找句子中的模式

python - NLTK - 何时规范化文本?

java - 在 Java 中,我应该为不同类型的输入使用不同的 Scanner 实例吗?

java - FindBugs:重写 equals() 导致静态代码分析错误 EQ_CHECK_FOR_OPERAND_NOT_COMPATIBLE_WITH_THIS

python - 获取选定的特征名称 TFIDF Vectorizer

java - 如何在 Spring 3 MVC 应用程序中对文件上传实现病毒扫描