1

Mahout を使用して Naive Bayes 分類器をトレーニングしようとしています。

最初によくわからないのは、トレーニング データがどのように見えるかということです。私のデータセットは意見で構成され、それが肯定的か否定的か (肯定の場合は 1、否定の場合は -1) で構成されます。Mahout in Action ブックの分類に関する章から理解した内容から、トレーニング データを次のように設定しました。 :

 1   'Content of positive opinion'
-1   'Content of negative opinion'

seqdirectory を使用してこのデータをシーケンス ファイルに変換し、次のコマンドで分類器をトレーニングしています。

$MAHOUT_HOME/bin/mahout trainnb -i seq_data/chunk-0 -o bmodel -ow

このエラーを出力します:

Exception in thread "main" java.io.FileNotFoundException: File temp/labelIndex does not exist.

trainnb で受け入れられるオプションを調べると、 --labelIndex オプションが見つかりました。これが何をするのか正確にはわかりませんが、これについて明確にすることができます。

次に、次のようにコマンドを実行しました(lindexは作成したファイルです):

$MAHOUT_HOME/bin/mahout trainnb -i seq_data/chunk-0 -o bmodel -ow -li lindex

このエラーを出力します:

java.lang.ClassCastException: org.apache.hadoop.io.Text cannot be cast to org.apache.mahout.math.VectorWritable
    at org.apache.mahout.classifier.naivebayes.training.IndexInstancesMapper.map(IndexInstancesMapper.java:29)
    at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:144)
    at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:764)
    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:370)
    at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:212)

私のアプローチが間違っている場合、ここで何が間違っているのか知りたいです。トレーニング データを構造化し、コマンドを実行するにはどうすればよいですか?

4

1 に答える 1

0

シーケンス ファイルとは何かに関する Hadoop ドキュメント (リンク)を次に示します。

したがって、あなたのエラーから、trainnb ステップは Text ではなく VectorWritable を期待しているようです。

seqdirectoryステップは、テキスト、テキスト形式でデータを生成するようですシーケンス ファイルに対してseq2sparseコマンドを実行して、TF または TF-IDF 加重ベクトルを生成する必要があると思います。

このリンクは、テキスト分析を行う方法の例を示しています。一見の価値があるかもしれません。

于 2012-07-23T08:41:39.890 に答える