スパムを見分けるリテラシー:スパム対策最前線(2/2 ページ)
最近では、目視では追いつかないほどのスパムを受信している人が多いだろう。スパムを判定するための手段には幾つかがあり、さまざまなソフトで使われている分析手法が注目だ。
語句の判定では、単純に「特定の語句が含まれていたら、即刻スパム扱いにする」という動作では、ほとんどの場合うまく機能しない。その理由は、スパムで使われる語句には巧みな表現が増えてきており、語句の有無だけでは本来受け取りたいものも該当してしまう、または、本来受け取りたくないものまで通してしまう、といった状態になるためだ。
そこで語句の有無を調べるのではなく、「語句が、どの程度含まれているのか」という割合を統計的に調べることで、総合的な判定をしている。総合的な判定をするのに使われる代表的な方法は、次の2つだ。
1. 語句の登場数でスコア判定する
「Aという語句が含まれていれば1ポイント」、「Bという語句が含まれていれば0.5ポイント」といったように、語句が含まれるごとに加点していき、その結果が例えば10以上であればスパムとして判定するといった方法だ。
この方法では、実装も動作も単純だが、「どの語句にどれだけのポイントを与えるのか」の設定が難しい。適さないポイント基準を設定すると、期待通りに判定できない可能性が高い。
2. 確率論を用いた判定
最近、スパム対策としてよく使われているのが、確率論を使った手法だ。中でもよく使われているのがベイズ理論である(関連記事)。
ベイズ理論を使ったスパムメール対策のアルゴリズムは、ポール・グラハム氏の論文「A Plan For SPAM」として知られている(関連リンク)。この論文では、スパムを排除するために、ベイズ理論を用いた「ベイジアンフィルタ」を提唱している。
ベイジアンフィルタとは、「スパムであるメール」と「スパムではないメール」を幾つか用意して、その「トークン(単語)」の登場頻度を調べるものだ。そして、その登場頻度によって、「スパムであるか」「スパムではないか」を判断する。
ただし、この論文が英語圏を対象としている点に注意しなければならない。英語は単語間が常に「スペース」で区切られることから、トークンの抽出が比較的簡単だ。もし日本語で同様のアルゴリズムを使う場合には、トークンの抽出に工夫が必要なのだ。例えば、オープンソースソフトウェアであれば、ChasenやMeCabを使うことが考えられる。つまりベイジアンフィルタを採用した英語版のスパム対策ソフトは、そのままでは日本語環境で良い結果が期待できないのだ。
主流はベイジアンフィルタへ向かっている
ベイジアンフィルタの優れたところは、「スパムであるメール」や「スパムではないメール」を次々と登録していくことで、内部の登場頻度が変わることから、結果として「学習効果が得られる」という点だ。
つまりベイジアンフィルタを使うことによって、ユーザーが受信するスパムメールの種類、そして、ユーザーの判定の成果が取り入れられていく。そのため、多くのスパム対策ソフトでは、ベイジアンフィルタまたはその派生が使われる傾向にある。
次回は、このようなスパムフィルタを、サーバ側に実装するのが良いのか、クライアント側に実装するのが良いのか、そしてどのような使い方をするのが望ましいのかについて触れることにしよう。
Copyright © ITmedia, Inc. All Rights Reserved.