本誌No16の編集作業中である2003年1月17日に SPAM Conference 2003という会議が、 MITで開催されました (http://spamconference.org/)。 この会議は、 No15の記事「統計的手法を用いたspamフィルタ」で解説した 「Plan for SPAM」の著者であるPaul Graham氏による企画です。
Paul Graham氏に電子メールによるインタビューをお願いしたところ、 快く答えていただきました。 以下はその内容です。
[Q] 参加人数や、その参加者の内訳(学生/企業など)がわかれば教えてください。
[A] 全部で580人が参加していました。 ほとんどがアメリカ人で、 参加者の多くはシステム管理者か電子メール会社で努めているようでした。
[Q] 何故、このような会議を開催しようと思ったのでしょうか?
[A] 我々の多くはspamフィルタに関して作業をしていますが、 電子メールでしか連絡を取っていません。 顔と顔を合わせることは生産的だと思ったのです。
[Q] 確認されている深刻な損害、被害、トラブルの例などありましたら教えてください。
[A] spamフィルタを使った結果としての問題という意味ですか? いつも大きな問題は誤判断(false positive)です。 幸いにも(CRM114のような)もっとも良いフィルタは、 人間よりもよい正答率になっています。 言い換えれば、 フィルタを使わずにすべて自分で分類するならば、 もっとも良いフィルタよりも誤ってしまうでしょう。
[Q] spamに対するにはどういう方法が有効だと思われますか?
[A] 現状ではフィルタがベストの方法だと思います。 spamをフィルタしやすくするように(ヘッダなどを)制限する 法制化なども良いでしょう。
[Q] 日本では「未承諾広告」と言う文字をサブジェクトに入れるように 法制化されています。 しかし、この方法には以下のようなたくさんの問題があります。
悪いspam送信者は法律を無視する。
たくさんの同じ文字列かのように見える記述方法がある。 これは、「未」を「末」に変えるようなものも含みます。 これを指摘したとしてもtypoであると主張されるでしょう。
サブジェクト形式のspam宣言は機械的にフィルタするのには 向いていない。
[A] より厳格な法律を作ればいいでしょう。 アメリカでは、ほとんどのspam送信者は そのspamが望まれていない物ではないと 共通の州法の要請である 望まれていない電子メールにはサブジェクト行にADVを入れることも 行っていません。 これは、望まれていないメールではないという spammerの言い逃れのためにです。 もし、法律がより厳格になにを要求(solicited)とするか決めていれば、 少数のspammerは言い逃れできなかったでしょう。 他の良い法律はだましヘッダが作れないものでしょう。 これは、少なくともより多くのspamをフィルタが 捕らえる助けになるでしょう。
[Q]英語圏(ASCII圏)の人たちは、中国語や韓国語、日本語などのContents-typeが 含まれたをメールを一律でspam対象として削除する傾向があるように思います。 このような傾向をどう思われますか?
[A] もし、特定のエンコーディングを自動的に拒否することを おっしゃっているのでしたら、 ベイジアンフィルタに関してはそうではありません。 これは、ベイジアンフィルタの別の有利な点でしょう。
[Q] 日本語などの言語は、単語毎にわかちがきされていないため、 「Plan for SPAM」の様な方法を使おうと思うと、 余分に計算機資源が必要になります。 川合さんの行われたbigramのような方法 [1] もありますが、 なにか解決策は考えられますでしょうか?
[A] bigramは最初の方法としては良い方法だと思います。 おそらくもっとも良い方法は、 単語の境界を見つけるために辞書を使うことでしょう。 英語ではこの問題は少ないですが、 spammerが 単語を連結しランダムに空白 [2] を挿入するなどの 変なトークンを使おうとし続けるならば、 英語でも同じ問題が生じます。
確かにそれは計算機能力をたくさん使いますが、 現時点ではそのために十分な能力があります。 私はいつもあまったプロセッササイクルをどのように使おうかと 思っています。 いま、その方法が分かりました。
[Q] 次回の開催に関して何か決まっていれば教えてください。
[A] まだ決まっていません。 いつの日にかSpam Conferenceをやめれる日が来ることを期待しています。 来年にそうなるかは疑わしいので、 あと一年はやることになると思います。
プログラムは以下の通りです。 これらの発表資料や予稿は会議のWebページから入手可能です。 また、6ヶ月の期間限定ですが、 Webcastによる会議の模様のストリーミングも参照できます。
Gnus vs. Spam by Ted Zlatanov
Gnusに含まれる spam.elパッケージに関する解説です。 whitelist, blacklist, spamデータベースサービス(BBDB,RBL)や、 統計的フィルタとしてはBogofilterやifile、 全てLispで実装したspam-stat.elが 利用可能となっています。
Sparse Binary Polynomial Hash Message Filtering and The CRM114 Discriminator by William S. Yerazunis
CRM114 Discriminator (http://crm114.sourceforge.net/) というフィルタプログラムで用いたメッセージハッシュに 関して解説しています。 spamのコストも計算しており、 spamの認識率が99.5%以上であればダイレクトメールより spamの方がコストがかかると言う見積りを出しています [3] 人間(今回のテストでは発表者自身)が急いでspamかどうかの 識別をしている状況のspam識別率は99.84%であるのに対して、 CRM114では99.9%以上の良い成績をあげていると言うことです。
Automatic Feature Induction for Text Classification by Jason D. M. Rennie and Tommi Jaakkola
spamの問題点などを示した後で、イタチゴッコになる点を指摘しています。 そこで、学習するフィルタを利用することになるのですが、 ここではMDL(Minimum Description Length)という 与えられた学習データから最小のコード化を見付ける方法を利用し、 簡単なテストを行った結果を示しています。 最後に、この方法の利点と欠点がまとめられています。
The Spammers' Compendium by John Graham-Cumming
Naive Bayesを利用して自動分類が可能な POP3 proxyの POPFile(http://popfile.sourceforge.net/) 開発者による発表です。 開発する上でspamを多く読まなければならなかった故に得られた spammerの技と対策について語られています。
Spam Research: Establishing a Foundation and Moving Forward by Paul Judge
spamを情報セキュリティの問題と捕らえ、 組織的にこの問題を理解、分析、解決しようと言う発表です。 そのために、spamコーパスにあたる http://SpamArchive.org/の紹介や、 研究ツールに関する議論、さらに法制度などとの連係について まとめてあります。
Better Bayesian Filtering by Paul Graham
「Plan for SPAM」で利用していたNaive Bayesianを使った統計的手法の 改良に関しての発表です。 川合さんによる日本語訳が http://www.shiro.dreamhost.com/scheme/trans/better-j.html で提供されています。 基本的には単語の定義を見直し、 Subjectヘッダフィールドのの単語であるなどの情報も付加したり、 ぴったり合う単語のspam度が見付からない場合に、 部分的に一致するなどの一定の法則で単語のspam度も利用するなどの 改良を行っています。
Internet Level Spam Detection and SpamAssassin 2.50 by Matt Sergeant
SpamAssassin 2.50で実装された統計的手法と、 これまでのスコアベースの方法の統合に関しての発表です。 スコア統合時の重み付け部分に遺伝的アルゴリズムを利用することで、 spam認識率99.9%、誤認識0.1%が実現できたと言うことです。
Spam Filtering: From the Lab to the Real World by Joshua Goodman
Microsoft Researchの研究者によるMicrosoft製品でのspamフィルタに 関する発表です。 機械学習が基板技術であることが述べられています。 Microsoftらしいのは、 spammerが適応するのだからオープンソースの開発モデルで大丈夫かと 何度も書かれているところでしょうか。
Heuristics in the Blender by Michael Salib
PytonベースのspamフィルタであるBlenderの解説です。 Blenderでは、 Linear Minimum Mean Square Error(LMMSE)を使って、 最小自乗誤差で語句の頻度に対して重みを与える方式を使っています。 ヒューリスティックスと組み合わせることで、 学習サンプルが少ない状況ではSpamAssasinよりも良い性能が出ているそうです。
(Spam vs.) Forty Years of Machine Learning for Text Classification by David D. Lewis
文章分類問題に機械学習を適用してきた研究者からの spamフィルタ作成者への注意点という発表です。
A Spam Litigator's View from the Front Lines by Jon Praed
spamの法的な側面に関して議論しています。 法の限界に関しても、 技術的な情報に依存する、 コストがかかるが効果は遅い、 インターネットの特徴から国際的な視野に立つ必要がある などがあげられています。
Fighting Spam in Real Time by Ken Schneider
BRIGHT MAIL社の おとりを仕掛けてspamデータを収集し、 spamフィルタリング規則を自動生成し、 顧客のMTAなどでその規則を利用する形式の spamフィルタリングサービスについての紹介です。
SpamProbe - Bayesian Spam Filtering Tweaks by Brian Burton
SpamProbeの開発者が、Paul Graham氏の実装との違いを中心に解説しています。 主な相違点としては、 金額やIPアドレスなどが認識されるように単語の定義を変えたこと、 単語の連続であるフレーズを利用するようにしたこと、 ある文章で同じ単語がどれぐらい現れているかを示すWDFを利用していること、 HTMLを無視していること、 8bitのキャラクタは'z'で置き換えてしまうこと、 spam度を判定するために利用する語句の数を増やせること、 正しく分類するまで同じメールを何度も学習することがあげられています。
[1] | http://www.shiro.dreamhost.com/scheme/wiliki/wiliki.cgi?Gauche%3aSpamFilter&l=jp |
[2] | 原文では 「単語を連結し」は"wordstogether" 「空白」は"whit espace"、 と綴られています。 |
[3] | もちろん、これはアメリカでの郵便コストに基づいています。 |