Perlでシンプルなベイジアンフィルタを作ってみました。ベイジアンフィルタ を倣って、ベイズ確率で歌詞を見分けるフィルタです。 アルゴリズムは ベイジアンフィルタについて のPaul Graham版そのまんまです。トークンはスペースで区切るのみですので日本語の歌詞では使えません。英単語のstem化もしていません。(レポート用に作ったのでちょっと手抜きですいません。) 実験してみると、一応動きました。学習させたのは、カーペンターズの歌詞とメタリカの歌詞w。曲数がそこそこあって、個性の離れているアーティスト2組を適当に選んだだけ。メタリカをスパムとして、学習には100曲ずつ使い、学習に使わなかった曲で実験しました。結果は、 スパム認識率(メタリカを正常に認識)97%(29件中28件) 見逃しは1件でした。 スパム誤認識(カーペンターズをメタリカと認識)8%(97件中8件) 誤認識が多いですが、