2016-05-16 7 views
2

JavaのMalletでドキュメント分類子を実装しようとしています。私はすでに、本質的な特徴値を含むファイルを持っています。だから私はraw text処理パイプライン全体を実行したくありません。私の機能ファイル内の行は、現時点では、このようになりますMallet:例外と一致しないアルファベット

(2つの機能、IDとNrOfToken、文書のラベルが「A」である)

ID=3 NrofTokens=279.0 A

私はこのファイルを読み込み、それを入れてみてくださいこのような分類器:

java.lang.IllegalArgumentException: Alphabets don't match: Instance: [6, null], InstanceList: [6, 0] 
    at cc.mallet.types.InstanceList.add(InstanceList.java:335) 
    at cc.mallet.types.InstanceList.addThruPipe(InstanceList.java:267) 
    at 

Pipe instancePipe = new SerialPipes(new Pipe[] { 
       new CharSequence2TokenSequence(), 
       new TokenSequence2FeatureSequence(), 
       new Target2Label(), 
     }); 

     InstanceList trainData = new InstanceList(instancePipe); 
     InstanceList testData = new InstanceList(instancePipe); 

     Reader trainFileReader = new InputStreamReader(new FileInputStream(fileTrain), "UTF-8"); 
     trainData.addThruPipe(new LineGroupIterator(trainFileReader, Pattern.compile("^\\s*$"), true)); 

     Reader testFileReader = new InputStreamReader(new FileInputStream(fileTest), "UTF-8"); 
     testData.addThruPipe(new LineGroupIterator(testFileReader, Pattern.compile("^\\s*$"), true)); 

     // Create a classifier trainer, and use it to create a classifier 
     @SuppressWarnings("rawtypes") 
     ClassifierTrainer naiveBayesTrainer = new NaiveBayesTrainer(); 
     Classifier classifier = naiveBayesTrainer.train(trainData); 

瞬間に私はこの例外を取得します

誰かがアルファベットが壊れている理由は誰ですか?

+0

このクエリで助けてもらえますか?また、http://mallet.cs.umass.edu/のトピックモデリングコードを実行しているときに問題に直面しています。 –

答えて

0

これは実際の回答ではありませんが、これまでのところ、Malletの例外はあまり有益ではありませんでした。私はまた、データラインを解析し、最後に空の行を削除する正規表現を変更することで、このエラーが発生しました。デバッグの一日の終わりに

すなわち、この部分での正規表現

CsvIterator reader = new CsvIterator(new FileReader(tempTrainPath), "(\\w+)\\s+(\\S+)\\s+(.*)", 3, 2, 1); 
testInstances.addThruPipe(reader); 

、私は実際の犯人だった2のどちら試すにはあまりにもイライラしました。しかし、おそらくこの情報は他の人に役立ちます。

関連する問題