斯坦福 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
放在 ByteArrayInputStream
和 ObjectInputStream
之间:
new ObjectInputStream(new GZIPInputStream(new ByteArrayInputStream(Resource.englishPCFG_ser)))
我目前正在使用以下 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
放在 ByteArrayInputStream
和 ObjectInputStream
之间:
new ObjectInputStream(new GZIPInputStream(new ByteArrayInputStream(Resource.englishPCFG_ser)))