入力フォーマットを使用してclassification
を使用しており、NaiveBayes
クラシファイアを使用しています。しかし、私はNumberFormatException
を取得します。私はSVMLightを使うときに文字列の機能をどのように使うことができるのだろうかと思っています。ガイドライン1で読んだとおり、機能を文字列にすることもできます。Malletの正しいsvmlight入力形式は何ですか?
誰かが自分のコードや入力に間違っていることを教えていただけますか?ここで
は私のコードです:public void trainMalletNaiveBayes() throws Exception {
ArrayList<Pipe> pipes = new ArrayList<Pipe>();
pipes.add(new SvmLight2FeatureVectorAndLabel());
pipes.add(new PrintInputAndTarget());
SerialPipes pipe = new SerialPipes(pipes);
//prepare training instances
InstanceList trainingInstanceList = new InstanceList(pipe);
trainingInstanceList.addThruPipe(new CsvIterator(new FileReader("/tmp/featureFiles_svm.csv"), "^(\\S*)[\\s,]*(.*)$", 2, 1, -1));
//prepare test instances
InstanceList testingInstanceList = new InstanceList(pipe);
testingInstanceList.addThruPipe(new CsvIterator(new FileReader("/tmp/test_set.csv"), "^(\\S*)[\\s,]*(.*)$", 2, 1, -1));
ClassifierTrainer trainer = new NaiveBayesTrainer();
Classifier classifier = trainer.train(trainingInstanceList);
そして、ここに私の入力ファイルの最初の3行です:
No f1:NP f2:NN f3:1 f4:1 f5:0 f6:0 f7:0 f8:0.0 f9:1 f10:true f11:false f12:false f13:false f14:false f15:ROOT f16:NN f17:NOTHING
No f1:NP f2:NN f3:8 f4:4 f5:0 f6:0 f7:1 f8:4.127134385045092 f9:8 f10:true f11:false f12:false f13:false f14:false f15:ROOT f16:DT f17:NOTHING
Yes f1:NP f2:NN f3:4 f4:3 f5:0 f6:0 f7:0 f8:0.0 f9:4 f10:true f11:false f12:false f13:false f14:false f15:NP f16:DT f17:NN
最初の列は、残りのデータがあるインスタンスのラベルであり、機能とその値が含まれています。たとえば、NN
はフレーズの先頭語のPOS
を示します。
その間、NN
(NumberFormatException: For input string: "NN"
)の例外が発生します。私はなぜそれが前に来るNP
で何の問題もないが、NN
で停止するのだろうかと思っています。
感謝を。そして、ラインに0の値を持つ他のすべてのフィーチャを追加する必要があります。たとえば、フィーチャのNP値がある場合、VP、S、FRAGなどではないことを意味します。f2_VP:0、f3_S:0なども追加する必要がありますか?つまり、数値フィーチャの機能?そして、私は本当にまばらな特徴ベクトルを持つでしょう。右? – user1419243
カテゴリーをフィーチャーに変換し、0の値を持つものは除外し、効率的に処理します。 –
ありがとうございます。今度はエラーなしで動作します:) 上記の書式と書かれたコードを使ってもう1つの質問があります。名前はcsvline:1 ターゲット:f1_NP:1 入力:f2(0)= 0.0 f3(1)= 0.0 f4(2)= 2.65 ... ターゲットが正しく読み込まれていてターゲットとして機能していないようです。私のコードや入力形式が間違っているか、PrintInputAndTarget()がSVMLightで動作しません。これは他の形式のものですか? – user1419243