2017-05-25 3 views
0

J'utilise actuellement le code ci-dessous C# pour créer mon Lexparser avec succès:Stanford PNL Lexparser loadModel()

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

Mais pour des raisons de déploiement je préférerais intégrer le fichier « englishPCFG.ser.gz » comme une sorte de ressource soit dans l'assemblage ou en tant que Resource.resx.

J'essaie de lire mon octet [] fichier comme ceci:

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

Mais je reçois l'erreur suivante:

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

Y at-il une autre façon de charger ce plutôt que d'un fichier chemin ou suis-je en train de faire une bêtise?

Répondre

0

1F8B0800 est l'en-tête GZIP, ce qui est logique, étant donné le nom du fichier que vous essayez de lire. Vous avez donc besoin de mettre java.util.zip.GZIPInputStream entre le ByteArrayInputStream et ObjectInputStream:

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

Smashing, merci. – Wurd