bobuhiro11's diary

svmでテキスト分類

01 Jan 2013
[svm] [テキスト] [分類]

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

1.svm_lightのインストール

svm lightを公式ページからダウンロードしてきます.

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 i am happy
1 happy happy new year
-1 bad year
-1 i am bad

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

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

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

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.モデルファイルを作成する.

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/


comments powered by Disqus < セキュリティうどん 7杯目 MBA買っちゃいました. >