明けましておめでとうございます.今年もよろしくお願いします. 早速ですが,SVM(サポートベクターマシン)を試してみたので,その方法を書いておきます.ナイーブベイズなどと同様にテキストの分類ができます.ここでは,svm_lightを使いました.

1.svm_lightのインストール

svm lightを公式ページからダウンロードしてきます.
1
2
3
4
5
6
cd  /usr/local/src
mkdir svm_light
cd svm_light
wget http://download.joachims.org/svm_light/current/svm_light_linux.tar.gz
gunzip -c svm_light.tar.gz | tar xvf -
make all

インストール後,/usr/local/src/svm_lightへパスを通しておきます.

2.学習データを用意する

まず,適当な文書をとってきて,それぞれに1,-1のラベルをつけておきます. 1:ポジティブな発言 -1:ネガティブな発言
1
2
3
4
1 i am happy
1 happy happy new year
-1 bad year
-1 i am bad

次に,それぞれの単語と数字の対応表を作ります.

1
2
3
4
5
6
1:i
2:am
3:happy
4:new
5:year
6:bad

最後にこの対応表をもとに,学習データを作ります.(このファイルを"example_file"とする.)

1
2
3
4
1  1:1 2:1 3:1
1  3:2 4:1 5:1
-1 5:1 6:1
-1 1:1 2:1 6:1

3.モデルファイルを作成する.

1
svm_learn example_file model_file

svm_learnコマンドでモデルファイル(“model_file”)を作ります.

4.テストファイルを作成する.

2.学習データと同様にテストファイルを作ります.例えば ``` i am bad ``` を分類するときは,次のようなファイルを作っておきます.("test_file"とする.) ``` 0 1:1 2:1 6:1 ```

5.実際に分類する.

``` svm_classify test_file model_file output_file ``` これで,分類完了です."output_file"内に以下のように分類結果が記録されます. ``` -0.99984155 ``` マイナスに大きく傾いていることが分かります.

・参考ページ http://svmlight.joachims.org/