/ / Exception: Manque le fichier manifest.properties - java, exception, opennlp

Exception: manquant le fichier manifest.properties - java, exception, opennlp

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 № 1

Pour 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.