CVB0PPのデータ形式を変更しました

前回の日記C++ で CVB0PP というツールを github にアップロードしたことを書きましたが、扱うデータ形式SVMlightTinySVM に類似した形式に変更しました。以下のリンクからダウンロードできます。


http://cloud.github.com/downloads/tettsyun/CVB0PP/CVB0PP-0.01.tar.gz

2010.01.12追記: 出力結果のバグを修正しました。

なお、UCI Machine Learning Repository の Bag of Words のデータ形式のデータを使いたい場合は、SVM 形式に変換するプログラムを用意しましたので、それでデータの形式を変換して下さい。使い方は README.ja を参照して下さい。


参考までに README.ja の一部を貼っておきます。

* データのフォーマット
 データのフォーマットは SVMlight や TinySVM と酷似しています
 (パッケージ内の src/example の下に train, train.vocab というサンプルファイルが
 あります)。
 
 1:1 2:4 5:2
 1:2 3:2 5:1 6:1 7:1
 2:4 5:1 7:1
 3:1 4:2 7:3
 
 各行が、文書 d に対応します。0行目から数えます。0 行目の 1:1 は
 文書 0 の単語の id = 1 が 1 回出現したことを意味しています。単語 w
 の id は 1 から始まり、途中、値が飛んでいてはいけません。
 
 なお、UCI Machine Learning Repository の Bag of Words Data Set のデータ
 形式になっているデータを使いたい場合は、上述の SVM 形式のデータに変換するプログラムを
 用意しています。Bag of Words Data Set のデータ形式については以下のURLを参照して
 ください。
 
   http://archive.ics.uci.edu/ml/datasets/Bag+of+Words
 
   
* 使い方
  $ ./cvb0_train bow_file vocab_file model [option]
 
  bow_file は 上記の SVM のデータ形式です。
  vocab_file は文書中に出現する全ての単語が各行に1つずつ書かれたファイルです。
  model は 各クラスにおけるトピックの単語生成確率が出力されるファイル名です。model に
  出力される単語の生成確率は、指定された繰り返し後の単語生成確率です。
 
  オプション:
  
  -K: トピック数 (デフォルト 50)
  -I: 繰り返しの回数を指定します (デフォルト 200)
  -W: 出力される、各トピックの単語およびその生成確率の数を指定します (デフォルト すべて)
      例えば -W=10 とすると、単語の生成確率の上位10件を出力します。
 
      
* データ形式の変換ツールの使い方
  $ ./uci2svm uci_file
 
  uci_file は UCI Machine Learning Repository の Bag of Words データセットの形式
  です。docword.*.txt というファイルに相当します。上記のコマンドを実行するとデフォルトの
  設定では train というファイルに SVM 形式のデータが出力されます。
  
  オプション:
  -o: 出力ファイルを指定します。(デフォルト train) 例えば、以下のように使います。
 
      $ ./uci2svm uci_file -o train_svm