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