T大情報科、スパムフィルタ

たまたま、某T大学情報科学科の「C言語入門」第一回課題を拝見(Sumii の日記より)。(1) シェルを実装せよ、(2) データの圧縮・解凍プログラムを実装せよ、(3) スパムフィルタを実装せよ(いずれも「発展的な課題」であって、この科目の単位取得には、別に準備されたもっと簡単な「基礎的課題」を解けば十分だそうだが)。とりあえず個人的には、出題文の日本語表現が気になるわけですが(大学教員たるもの、世間や業界のおかしな言葉遣いを踏襲していいのかなぁと・・・^^)、そういえば、スパムフィルタについては、冗談半分(全部)で、うちの「経済情報処理演習II」でもネタにしようとしたことがあった。

あなたが今受け取ったばかりの、あるメールの特徴を、「B」というバイナリ・シーケンス(二進数列)で表してみる。B は、0 と 1 から成る数列でこんな感じ、01011100001010・・・。各桁(ビット)の 0 と 1 が、このメールの特徴を表している。たとえば、サブジェクト(メールのタイトル)に Viagra という文字列が含まれていれば最初のビットは 1 になり、含まれていなければ 0 になる。メールの実際の発信元ドメインと送信者アドレスのドメインが一致しなければ左からふたつめのビットは 1 となり、一致していれば 0 になる、などなど。で、問題は P(S|B) を計算すること。S は「スパムである」という事象をあらわしていて、P(S|B) は「B という特徴を持つメールが S (スパム)である確率」を示す。基本的に、これが、たとえば本学情報センタのスパムフィルタが日夜行っている計算。スパムフィルタは別名ベイズフィルタと呼ばれるように、この確率をベイズ式で計算する。P(S|B) = P(S かつ B)/P(B)。右辺の分子は「これまでに届いたすべてのメールのうち、スパムであって、かつ、B の特徴を持つメールの比率」、分母は「これまでに届いたすべてのメールのうち、B の特徴を持つメールの比率」。ね、こんなふうにすれば、簡単でしょ?

ところで、うちの情報センタのスパムフィルタ。「スパムの可能性50%以上のメールはすべて破棄してくれ」などと要求するヒト(教員?職員?)がいるらしい。でも、50%ということは、スパムかどうか半々の確率なんだから、全部捨てたら、半分はまともなメールを捨ててしまうことになるんだよ。スパムフィルタの確率判定が緩すぎるというのなら、ちゃんとそれを証明してから言ってよね。というか、それ以前に、そんなの、手元のメールソフト(MUA)で受信メールの振り分け条件をちょこっと設定すれば、自分で簡単にできることですね(誰にも迷惑かけずに)。

このブログ記事について

このページは、eiichiが2008年1月25日 14:35に書いたブログ記事です。

ひとつ前のブログ記事は「バブルって最高?」です。

次のブログ記事は「市長選・敗北の弁?」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

月別 アーカイブ

ウェブページ

Powered by Movable Type 5.13-ja