Ich bin ein Anfänger mit Weka.Klassifizieren Sie einen Text mit Weka nachdem der Klassifikator trainiert wurde
Ich habe es geschafft, ein Dataset von der Festplatte zu importieren (ein Ordner nach Kategorie, alle Texte zu dieser Kategorie innerhalb des Ordners), StringToWordVector mit Tokenizer anwenden, ein Naive Multniomial-Kategorisierungsmodul trainieren ... Der Code ist unten (es ist C# aber Java ist natürlich ok)
Allerdings kann ich kaum Informationen finden, wie Sie das Kategorisierungsmodul für ein Projekt verwenden. Angenommen, ich habe einen Text mit unbekannter Kategorie, der von einem Benutzer eingegeben wurde. Wie kann ich das Kategorisierungsmodul nur auf diesen Text anwenden und daraus die Kategorie ableiten, zu der es gehört? (Code "// was hier unten zu tun ist"). Jede Hilfe sehr ;-) würde geschätzt
Vielen Dank im Voraus
Julien
string filepath = @"C:\Users\Julien\Desktop\Meal\";
ClassificationDatasetHelper classHelper = new ClassificationDatasetHelper();
weka.core.converters.TextDirectoryLoader tdl = new
weka.core.converters.TextDirectoryLoader();
tdl.setDirectory(new java.io.File(filepath));
tdl.setCharSet("UTF-8");
weka.core.Instances insts = tdl.getDataSet();
weka.filters.unsupervised.attribute.StringToWordVector swv = new weka.filters.unsupervised.attribute.StringToWordVector();
swv.setInputFormat(insts);
swv.setDoNotOperateOnPerClassBasis(false);
swv.setOutputWordCounts(true);
swv.setWordsToKeep(1000);
swv.setIDFTransform(true);
swv.setMinTermFreq(1);
swv.setDoNotOperateOnPerClassBasis(false);
swv.setPeriodicPruning(-1);
weka.core.tokenizers.NGramTokenizer tokenizer = new weka.core.tokenizers.NGramTokenizer();
tokenizer.setNGramMinSize(2);
tokenizer.setNGramMaxSize(2);
swv.setTokenizer(tokenizer);
insts = weka.filters.Filter.useFilter(insts, swv);
insts.setClassIndex(0);
weka.classifiers.Classifier cl = new weka.classifiers.bayes.NaiveBayesMultinomial();
int trainSize = insts.numInstances() * percentSplit/100;
int testSize = insts.numInstances() - trainSize;
weka.core.Instances train = new weka.core.Instances(insts, 0, trainSize);
cl.buildClassifier(train);
string s = "Try to classify this text";
weka.core.Instance instanceToClassify = new weka.core.Instance();
// what to do here
// ???
double predictedClass = cl.classifyInstance(instanceToClassify);
Dank