Stanford NLP:加载解析模型失败

时间:2012-07-14 18:51:22

标签: java nlp stanford-nlp

从Stanford NLP工具加载Parse模型时遇到问题。 我像我应该的那样对模型文件进行反序列化,但是当涉及到二进制语法部分时它会失败,除了这个例外:

Exception in thread "main" java.lang.NullPointerException
at edu.stanford.nlp.parser.lexparser.BinaryGrammar.init(BinaryGrammar.java:216)
at edu.stanford.nlp.parser.lexparser.BinaryGrammar.readObject(BinaryGrammar.java:203)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1849)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1871)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
...

有没有人遇到过类似的错误?可能是什么原因?

修改

这里是代码(没什么好奇怪的,只是简单的反序列化)。

        ObjectInputStream in;
    InputStream is = null;
    try {
        is = aUrl.openStream();

        in = new ObjectInputStream(new BufferedInputStream(new GZIPInputStream(is)));

        ParserData parserdata = (ParserData) in.readObject();
        in.close();
        return parserdata;
    } catch (ClassNotFoundException e) {
        throw new IOException(e);
    } finally {
        is.close();
    }

我不确定我使用的版本,因为我从私有存储库获取库(就像我做模型一样),但我会检查那里有哪些版本。

EDIT2:

在检查版本后,我发现我使用了2011年的模型和2012年的解析器版本(仍不完全确定这里使用的是哪个版本)。使用较新的模型文件解决了这个问题,很抱歉打扰你。

0 个答案:

没有答案