2

指定されたベクトルで LDA を使用できるように、単語頻度値を mahout ベクトル表現に変換しようとしています。 mahout wiki に従っています。コード スニペストは、既存のベクトルを mahout ベクトルに変換する方法を提案しています。

https://cwiki.apache.org/MAHOUT/creating-vectors-from-text.html

これが私のコードです。VectorWriter を作成する場所で NullPointerException を取得しています。apache cwiki では、次の使用が推奨されています。

VectorWriter vectorWriter = SequenceFile.createWriter(filesystem, configuration, outfile, LongWritable.class, SparseVector.class);

しかし、org.apache.hadoop.io.SequenceFile に SequenceFile.createWriter が表示されません。

これは完全なコード セグメントです。

        fs = FileSystem.get(conf);
        //I"m using SeqeunceFile.Writer because SequenceFile.createWriter is not available.
        VectorWriter vectorWriter = (VectorWriter) new SequenceFile.Writer(fs, conf, path, LongWritable.class, RandomAccessSparseVector.class);

        ArrayList<Vector> weights = new ArrayList<Vector>();
        BufferedReader buffer = new BufferedReader(new FileReader("/home/hadoop/LDATest/LDAData/test"));
        String line = null;

        while((line = buffer.readLine()) != null)
        {    
            String[] data = line.split(" "); // split the term,weight data
            Vector weightVector = new RandomAccessSparseVector(1,1);
            weightVector.setQuick(0, Double.parseDouble(data[1])); // add the weight
            weights.add(weightVector);
        }


        vectorWriter.write(new VectorIterable(weights));

このエラー、

org.apache.hadoop.io.serializer.SerializationFactory.getSerializer(SerializationFactory.java:73) でのスレッド「メイン」での例外 java.lang.NullPointerException org.apache.hadoop.io.SequenceFile$Writer.init(SequenceFile.java) :910) org.apache.hadoop.io.SequenceFile$Writer で。(SequenceFile.java:843) org.apache.hadoop.io.SequenceFile$Writer で。(SequenceFile.java:831) org.apache.hadoop で。 io.SequenceFile$Writer.(SequenceFile.java:823) at kbsi.ideal.LDATest.iterableTest(LDATest.java:161) kbsi.ideal.LDATest.main(LDATest.java:194)

これについてご協力いただき、誠にありがとうございます。ありがとう

4

0 に答える 0