斯坦福 NLP Lexparser loadModel()

Stanford NLP Lexparser loadModel()

我目前正在使用以下 C# 代码成功创建我的 Lexparser:

return LexicalizedParser.loadModel(projectDir + @"StanfordResources/lexparser/englishPCFG.ser.gz");

但由于部署原因,我宁愿将 'englishPCFG.ser.gz' 文件作为某种资源嵌入到程序集中或作为 Resource.resx.

所以我尝试这样读取我的 byte[] 文件:

ObjectInputStream stream = new ObjectInputStream(new ByteArrayInputStream(Resource.englishPCFG_ser));
        return LexicalizedParser.loadModel(stream);

但是我得到以下错误:

java.io.StreamCorruptedException: invalid stream header: 1F8B0800

除了从文件路径加载它还有其他方法吗?还是我在做傻事?

1F8B0800 是 GZIP header,考虑到您要读取的文件的名称,这是有道理的。所以你需要把 java.util.zip.GZIPInputStream 放在 ByteArrayInputStreamObjectInputStream 之间:

new ObjectInputStream(new GZIPInputStream(new ByteArrayInputStream(Resource.englishPCFG_ser)))