2016-04-07 6 views
0

Ich bin gelerntes Modell SerialisierungClasscast in LingPipe

TradNaiveBayesClassifier classifier = new TradNaiveBayesClassifier(categories,tokenizerFactory,categoryPrior,tokenInCategoryPrior,lengthNorm); 

dann mit trainierte ich es und es

zusammengestellt mit
AbstractExternalizable.compileTo(classifier,new File(modelPath)); 

Als ich im Modell

mit lesen
TradNaiveBayesClassifier decompClassifier = (TradNaiveBayesClassifier)AbstractExternalizable.readObject(new File(modelPath));{ 

I Erhalte eine ClassCastException. Irgendwelche Ideen?

+0

Die Ausnahme, die ich bekommen ist: 'Exception in thread "main" java.lang.ClassCastException: com.aliasi.classify.TradNaiveBayesClassifier $ CompiledBinaryTradNaiveBayesClassifier kann nicht auf com.aliasi.classify.TradNaiveBayesClassifier \t bei com.wlodarczak.twitter gegossen werden .BayesClassifier.evaluate (BayesClassifier.java:102) \t bei com.wlodarczak.twitter.BayesClassifier.run (BayesClassifier.java:158) \t bei com.wlodarczak.twitter.BayesClassifier.main (BayesClassifier.java:163) ' – user3032707

Antwort

0

Ich habe es funktioniert. Ich musste BaseClassifier upCast:

 BaseClassifier<CharSequence> eval = (BaseClassifier<CharSequence>)AbstractExternalizable.readObject(new File(modelPath)); 
     evaluator = new BaseClassifierEvaluator<CharSequence>(eval, cat, storeInputs); 

Dann kann ich nicht den JointClassifierEvaluator verwende mehr, ich hatte den BaseClassifierEvaluator zu verwenden.

+0

Wenn Sie den Typ eines deserialisierten Objekts nicht kennen, können Sie es mit 'Object.getClass()' überprüfen. –