私はwekaの初心者です。クラシファイアが訓練された後、wekaでテキストを分類する
私は、ディスクからデータセットをインポートすることができました(フォルダごとに1つのフォルダ、フォルダ内のこのカテゴリに関連するすべてのテキスト)、StringToWordVectorをtokenizerに適用し、Naive Multniomialカテゴライザをトレーニングしました。 C#でもJavaはもちろんOK)
ただし、プロジェクトでカテゴライザを使用する方法に関する情報はほとんど見つかりません。ユーザーが入力した不明なカテゴリのテキストがあるとします。このテキストにカテゴライザを適用して、そのカテゴリが属するカテゴリを推測するにはどうすればよいですか。 (コード "//ここで何をすべきか")。 すべてのヘルプは大幅に事前に
ジュリアン
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);
おかげ