У меня уже есть обученная модель CRF, которую я обучил с использованием 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"
});
Я планирую загрузить эту модель и использовать ее для тегирования. Я использую этот код.
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;
}
Когда я пытаюсь сделать выше, я получаю следующую ошибку
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)
Ошибка происходит в строке
Classifier crf = (Classifier) ois.readObject();
Могу ли я знать, почему это происходит. Кроме того, если есть правильный документированный способ маркировки ввода с использованием обученной модели, не могли бы вы поделиться какими-либо ссылками / документацией? Заранее большое спасибо !!!