0

スタンフォード NLP ツールからの解析モデルの読み込みに問題があります。必要に応じてモデルファイルを逆シリアル化しますが、バイナリ文法部分に関しては失敗しますが、次の例外があります。

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 年のパーサー バージョンを使用していることがわかりました (ここでどのバージョンが使用されたかはまだ正確にはわかりません)。新しいモデル ファイルを使用すると問題が解決しました。お手数をおかけして申し訳ありません。

4

0 に答える 0