Je suis nouveau à opennlp, Je reçois Manquer les manifest.properties! exception lorsque j'exécute le code suivant, s'il vous plaît dites-moi suggestion pour éviter cela.
public class PrePostProcessing_Peregrine {
public Map<String,Set<String>> btntMap;
public Map<String, String> fishMap;
public SentenceModel sModel;
public SentenceDetectorME sentDet;
public Map<String,Set<String>> topBottomTermSet;
public PrePostProcessing_Peregrine() throws IOException {
FileInputStream str=new FileInputStream("/home/rajendraprasad.yk/Desktop/data/en-sent.bin");
System.out.println(str+"===================>");
SentenceModel sModel = new SentenceModel(str);
System.out.println("===================model =================>"+sModel);
sentDet = new SentenceDetectorME(sModel);
System.out.println("===================>sentDet "+sentDet);
System.err.println("Sentence Detector Initialized");
L'exception est:
opennlp.tools.util.InvalidFormatException: Missing the manifest.properties!
at opennlp.tools.util.model.BaseModel.validateArtifactMap(BaseModel.java:217)
at opennlp.tools.sentdetect.SentenceModel.validateArtifactMap(SentenceModel.java:78)
at opennlp.tools.util.model.BaseModel.<init>(BaseModel.java:142)
at opennlp.tools.sentdetect.SentenceModel.<init>(SentenceModel.java:73)
at com.molcon.Text_Mining.PrePostProcessing_Peregrine.<init>(PrePostProcessing_Peregrine.java:66)
at com.molcon.Text_Mining.TextMining.peregrineRun(TextMining.java:207)
at com.molcon.Text_Mining.TextMining.process_journals_for_Mining(TextMining.java:108)
J'ai fait erreur à FileInputStream modelIn = new FileInputStream("/home/rajendraprasad.yk/Desktop/data/en-sent.bin");
maintenant j'ai changé pour InputStream modelIn = new FileInputStream("/home/rajendraprasad.yk/Desktop/data/en-sent.bin");
à partir de cela change je ne reçois aucune exception mais pas capable de charger le fichier de SentenceModel.
quand j'exécute cette ligne SentenceModel sModel = new SentenceModel(modelIn);
je ne reçois pas de réponse, aidez s'il vous plaît
Réponses:
1 pour la réponse № 1Pour ce que je sais, il y a deux causes possibles:
- le modèle que vous utilisez est corrompu, essayez de le télécharger à nouveau
- la version du modèle et de l'OpenNLPLa bibliothèque que vous utilisez ne correspond pas. Comme je l'ai lu sur le site officiel, les modèles sont spécifiques à la version. Vous devez donc essayer de comprendre si tel est votre cas et agir en conséquence.
1 pour la réponse № 2
Si vous vérifiez ce constructeur tu vas voir ça manifest.properties
n'est pas un fichier, c'est un ensemble de propriétés codées en dur:
Properties manifest = new Properties();
manifest.setProperty(MANIFEST_VERSION_PROPERTY, "1.0");
...
artifactMap.put("manifest.properties", manifest);
Quand vous le comparez à la InputStream
constructeur tu peux voir ça manifest.properties
est introuvable, seulement loadModel(in)
ce qui conduit à la conclusion que manifest.properties
devrait être dans le fichier de modèle.
Pourquoi cela fonctionne-t-il dans une application autonome et non dans Tomcat nécessite un débogage?
Comme @ 5agado l'a suggéré, la version de votre modèle peut être différente de celle de la bibliothèque.