Je dispose déjà d'un modèle CRF que j'ai entraîné à l'aide de SimpleTagger.
SimpleTagger.main(new String[] {
"--train", "true",
"--model-file", "/Desktop/crfmodel",
"--threads", "8",
"--training-proportion", "0.8",
"--weights", "dense",
"--test", "lab",
// "--orders", "2",
"/Desktop/annotations.txt"
});
J'ai l'intention de charger ce modèle et de l'utiliser pour le marquage. J'utilise ce code.
public static void main(String[] args) throws Exception {
//DOCS http://mallet.cs.umass.edu/classifier-devel.php
Instance instance = getMyInstance();
Classifier classifier = loadClassifier(Paths.get("/Desktop/crfmodel").toFile());
Labeling labeling = classifier.classify(instance).getLabeling();
Label l = labeling.getBestLabel();
System.out.print(instance);
System.out.println(l);
}
private static Classifier loadClassifier(File serializedFile)
throws FileNotFoundException, IOException, ClassNotFoundException {
ObjectInputStream ois = new ObjectInputStream (new FileInputStream(serializedFile));
Classifier crf = (Classifier) ois.readObject();
ois.close();
return crf;
}
Lorsque j'essaie de faire ce qui précède, j'obtiens l'erreur suivante
Exception in thread "main" java.lang.ClassCastException: cc.mallet.fst.CRF cannot be cast to cc.mallet.classify.Classifier
at TagClassifier.loadClassifier(TagClassifier.java:77)
at TagClassifier.main(TagClassifier.java:64)
L'erreur se produit dans la ligne
Classifier crf = (Classifier) ois.readObject();
Puis-je savoir pourquoi cela se produit ? Par ailleurs, s'il existe une méthode correcte et documentée pour étiqueter une entrée à l'aide d'un modèle entraîné, pouvez-vous partager des liens/documentation ? Merci beaucoup par avance !!!