【perlメモ】Algorithm::NaiveBayesのサンプル
ベイズ理論を使ってカテゴリ分けを行なうことが出来るperlモジュール『Algorithm::NaiveBayes』を使ったサンプル。
実際の下記ページに載ってるサンプルを元に作成した。Algorithm::NaiveBayes
bayes02.pl(UTF8)
#!/usr/bin/perl
use Strict;
use Warnings;
use utf8;
use Algorithm::NaiveBayes;
use Encode qw/from_to encode decode_utf8/;
use Data::Dumper;
{
no warnings ‘all’;
package Data::Dumper;
sub qquote { return shift; }
}
$Data::Dumper::Useperl = 1;
my $nb = Algorithm::NaiveBayes->new;
$nb->add_instance(attributes => {
‘コンピュータ’ => 1,
‘映画’ => 1,
‘SF’ => 3
},
label => ‘映画’
);
$nb->add_instance(attributes => {
‘コンピュータ’ => 2,
‘CPU’ => 1
},
label => [‘コンピュータ’]
);
$nb->add_instance(attributes => {
‘ロボット’ => 2,
‘サンライズ’ => 1
},
label => [‘アニメ’]);
$nb->train;
my $result = $nb->predict(attributes => {
‘コンピュータ’ => 3,
‘ロボット’ => 2}
);
my $dump = Dumper($result);
binmode STDOUT,’:encoding(cp932)’;
print $dump;
実行結果
F:\kumacchi\MyProgram\perl\sample\Bayes>perl bayes02.pl
$VAR1 = {
コンピュータ => ‘0.943684777475166’,
アニメ => ‘0.314561592491722’,
映画 => ‘0.102518511941593’
};
F:\kumacchi\MyProgram\perl\sample\Bayes>
上記のサンプルでは、labelに映画、アニメ、コンピュータという三種類のカテゴリを作成して、最後に分類対象となるデータを渡してその結果がどのカテゴリに一番近いかマッチ度が高いカテゴリ順に表示されている。
少し前に、下の記事でKAKASIでわかち書きを行なうサンプルを書いたが、わかち書きサンプルの方法を利用して、スパムメールを数十通わかち書きしてデータを生成、通常のメールを数十通わかち書きしてデータを生成して、そこに分類対象となるメールのデータをやはりわかち書きして上記のサンプルに当てはめカテゴリ(label)をspamとhamとし、解析したデータをそれぞれに当てはめればスパム判定が出来るようになるはずである。
【perlメモ】KAKASIを使った文章のわかち書き – KUMA TYPE