WaterMind PC Blog

PCとネットワークに関するニュースコラム.

フリーの迷惑メール振分ソフトPOPFile Tips:コーパスの保守

2005-04-01 17:25:34 | ソフト
 インターネットの電子メール受信において,今最も問題になっているのは,迷惑メール(SPAM)だろう.ウイルスメールについては,最近,パソコン初心者に対しても周知徹底されている上に,メーカー製パソコンのほとんどに,アンチウイルスソフトの体験版(注:ここが「落とし穴」でもある)がプリインストールされているため,以前よりもウイルスがらみのトラブルは減ってきたようにも思う.一方,SPAMメールについては,ようやく最近になって,アンチウイルスソフトが,「迷惑メール判別」をサポートするようになってきた.さらに「鶴亀メール」のような一部のメールソフトには,迷惑メール振り分け機能があらかじめ内蔵されており,以前よりもエンドユーザーがSPAMメール対策を講じやすくなってきた.現在,インターネット上にメールアドレスを公開しているユーザーの場合,一日あたり200通以上のSPAMメールが届く場合もあり,そのようなユーザーにとって迷惑メールの判別振り分けは,もはや不可避となっている.

 現在存在する迷惑メール対策ソフトのしくみは,だいたい次のようなものだ.
  1. メールソフトがメールを受信する前に,迷惑メール対策ソフトがメールを受信する.
  2. 受信メールの本文やタイトルなどから,迷惑メールと判断された場合は,メールのヘッダーやタイトルに一定の文字列(例えば「MEIWAKU」)が追加する.
  3. 処理が終わると,メールソフトに受信したメールを渡す.
  4. メールソフトは,迷惑メール対策ソフトの付加した文字列を判断対象とする振り分けルールを使って,迷惑メールを受信トレイから取り除く

 上記の処理で最も重要なのは,やはり迷惑メールの判別そのものだ.この判別方法には,大きく分けて2つの方法がある.まず,迷惑ワード及びドメイン名の辞書登録による判別だ.これはユーザーあるいはソフト開発会社によって,迷惑メールに含まれると思われる単語やドメイン名を辞書に登録する.迷惑メール対策ソフトは,その辞書をひきながら受信メールをスキャンし,メール本文・タイトル・送信元等に,辞書登録された単語やドメイン名が含まれていた場合,それを迷惑メールと判定する方法だ.特にソフト開発会社によって,この辞書が提供されている場合は,ユーザーは定期的にその辞書をインターネット経由で更新するだけでよい.また誤って,迷惑メールとして判断されてしまった場合は,受け取りたいメールにユニークな単語やメールアドレスを登録しておけば,再び誤って迷惑メールとして判定されることはない.ただしこれらの方法には,様々な問題点がある.

 まず,ユーザーが辞書登録する場合,迷惑ワードやアドレスの登録そのものが面倒であることは,すぐわかるだろう.一方のインターネット経由で辞書の提供を受ける場合でも,問題がないわけではない.提供される辞書の登録内容が,すべてのユーザーに当てはまるとは限らないからだ.あるユーザーにとっては迷惑ワードであっても,別のユーザーにとってはそうでないケースは十分あり得る.そのため,このようにインターネット経由で迷惑ワード辞書の提供を受ける場合でも,今度は逆に,受け取りたいメールに含まれる単語等を登録する作業が必要となる.これもまた面倒な作業だ.

 もう一つの迷惑メール判別方法は,統計・確率を応用する方法だ.これは一種の学習型判別で,迷惑メールか,そうでないかを,迷惑メール判別ソフトにユーザーが教えていくやり方だ.判別ソフトは,ユーザーの判断とメールの内容を関連づけて次第に学習していき,最終的には,ユーザーの判断を仰がなくても,自律的に迷惑メールの判別ができるようになる.この方法の問題点は,一番最初にある程度のトレーニング期間が必要となることだ.ソフトの使い始めには,しばらくの間,ユーザーがメールを判断し,判別ソフトに指示する必要があるわけだ.ただし,前者の方法のように,迷惑ワードまで指定する必要はなく,単純にメールが迷惑メールか,そうでないかを指示するだけなので,数は多くてもそれほどの手間ではないように思う.

 私は現在,メールソフトとして「鶴亀メール」を使用しているが,それに内蔵されている迷惑メール振り分け機能は使用せず,POPFileというフリーの学習型迷惑メール判別ソフトを使用している.このソフトでは,Googleも採用していると言われる「ベイズの定理」という確率論に基づいており,学習後の判別精度はたいへん高い.POPFileには,Webベースのインターフェースがあり,現在の振り分け精度を確率で表示できるのだが,私の場合,約2万通のメール受信において,約99.2%の判別精度となっている.この精度のおかげで,私に届いたメールに関しては,ほぼ全自動で,迷惑メールが振り分けられている.

 というわけで,POPFileは私にとって,なくてはならないソフトの一つなのだが,最近ちょっとした事件があった.久々に振り分けを間違っていたので,それを学習させようと,POPFileのWebベースのユーザーインターフェースを開こうとしたところ,POPFileが固まってしまったのだ.その後,いろいろ調査してみてところ,コーパス(言語資料体.個別言語・一作家のテキストや発話を大規模または網羅的に集めたもの.一種の辞書)の崩れが,原因であることがわかった.ハードディスクの空き容量が無くなった時があったので,その時にコーパスへの書き込みができず,崩れたのだろう.

 POPFileにはスクリプト言語Perl小型データベースSQLiteが内部に使用されており,学習した内容(迷惑ワード)は,このSQLiteのデータベースに蓄積している.このデータベースが崩れると,Webベースのインターフェースが表示できなくなるのはもちろんのこと,判別自体も正常にできなくなる可能性がある.

 このようなコーパスの崩れへの対処は,POPFileのマニュアルの「コーパスの破損」に詳しく掲載されているので参考にして欲しい.対処は次の手順で行う.
  1. コマンドプロンプトから,SQLiteを立ち上げる.
  2. SQLiteにコマンドを送り,データベースの整合性をチェックさせる
  3. 破損が確認された場合は,次のどちらか対処法を採る.

    • データベースのバックアップをリストアする
    • 現在の壊れたデータベースの内容をテキストファイルに出力し,それをデータベースに取り込む
 私の場合は,前者の方法で回復させたが,もちろん後者でもかまわないと思う.後者の方が,学習内容の損失が少なくて済むかもしれない.

 いずれにしても,POPFileのユーザーは,ハードディスク同様に,コーパスの整合性チェックを定期的に行い,正常であればデータベースのバックアップを取った方がよいだろう.そうすれば,貴重な学習記録をすっかり失い,また「1から学習のやり直し」という最悪の事態は,免れるかもしれない.せっかく大事に育てた辞書が亡くなるのは,やっぱり寂しい(?)ものだから…ね.