plugins:spambayesjp

NP_SpamBayes.php

ベイジアンフィルタを使ってspam判定を行うプラグインです。
受信したspamを学習して判定が賢くなっていくというのが大きな特徴です。

オリジナル版は日本語の分かち書き(日本語を単語に区切ること)ができませんでしたが、JP版についてはYahoo!Japanの日本語形態素解析Webサービス、もしくはMecabを使って日本語の分かち書きを行うようになっています。

オリジナル版はspambayes [Wiki:NucleusCMS]にあります 。

General Plugin info
作者: xiffy + hsur
最新のバージョン: v1.1.0 jp2 (2008/05/04)
入手先: NP_SpamBayesJP - NP_cles()
ソース: Nucleus Japan SVN
動作サンプル: cles::blog
フォーラム参照先: フォーラムのトピック
作者サイト参照先: NP_SpamBayesJP - NP_cles()

インストール方法

  1. Yahoo!からアプリケーションIDを取得する
    このプラグインは形態素解析器としてYahoo!Japanで公開されている日本語形態素解析Webサービスを使用しています。このため、使用を開始する前にYahoo!JapanIDを取得の上、アプリケーションIDを取得しておく必要があります。
    手順については「Yahoo! JAPAN Webサービス」最初の一歩を参考に行ってください。
  2. Zipファイルを展開して、中身をNucleusのpluginsディレクトリにアップロードする
  3. 管理画面からプラグインをインストールする
  4. プラグインオプション画面から、アプリケーションIDを設定する。
  5. プラグインの管理画面から、初期の学習データを登録する

このプラグインの使い方

インストールをすると、プラグインは自動的に有効になります。
コメントやトラックバックがあった際には学習済みのデータと照合してspamか否かを判断し、spamの場合にはコメントを弾きます。

※最初のうちは、精度が低いことがあるので、プラグインオプションの「spamの履歴を保存」を有効にして様子を見ることをおススメします。

スキン/テンプレートへの記述

SpamCheckイベントで起動されるので、スキン/テンプレートへの記述は必要ありません

学習のさせ方

このプラグインはBayesianフィルタという学習型のフィルタを使っています。
そのため、プラグインに十分な量のspamのデータとspamでないデータ(このプラグイン内ではhamと呼びます)をあらかじめ登録しておく必要があります。Bayesianフィルタは文面に含まれる単語の傾向から、文章がspamであるか否かを判断します。

サイトにすでにコメントやトラックバックが存在している場合

管理画面を使えば、hamやspamの文面を1つ1つ登録していくことができますが、これを手動で行うことは大変な作業になります。このため、NP_SpamBayesにはこれまでにNucleusに投稿されたコメントや、トラックバックの文言を一括して学習データとして登録できる仕組みが備わっています。コメント欄が既にspamで一杯になっているような場合を除けば、これで初期の学習データをとしてしまうのがよいでしょう。

サイトを構築したばかり場合

サイトを構築したばかりで、あまりコメントやトラックバックがない場合には他のspam対策プラグインを使ってspamを避けつつ、徐々にデータを蓄積していくことになります。初めのウチはあまり活躍することがないかもしれませんが、鍛えれば徐々に強力なフィルタになっていきます。

オプション

プラグインオプション

項目名 デフォルト 解説
spam判定するためのスコアの閾値(0.00~1.00) 0.95 確率がこの値を超えた場合にspamと判定します。
通常はデフォルトから変更する必要はありません*1
無視する単語(カンマもしくはスペース区切り) you the for and a データベースに入れないようにする単語を指定できます。通常は必要ありません。
メニューに「全てを学習」を表示するか いいえ 導入初期に学習データを投入するためのメニューを表示します。通常は表示させる必要はありません。
管理画面の左メニューにSpamBayesを表示する はい 管理画面の左側メニューにSpamBayesの管理画面へのリンクを表示させることができます。
spamの履歴を保存 (DBに十分な容量が必要です。) はい フィルタの動作履歴を全て保存し、フィルタの動作状況を検証することができます。導入初期には「はい」にしておくことをおススメしますが、spamの投稿の具合によってはDBに大量にデータが登録されるので気をつける必要があります。
Yahoo!Japan AppID (空欄) Yahoo!Japanから発行されたアプリケーションIDを入力します。このプラグインの動作には絶対に必要になりますので、あらかじめ取得して置いてください。
アンインストール時に全てのデータを削除する いいえ アンインストール時に学習済みデータ等を全て削除するかどうかを指定します。

*1:0に近いほど判定はきつく、1に近いほど判定は緩くすることができます。ただし、フィルタは学習が進むほどspamであれば限りなく1に近い値を返し、spamでなければ0に限りなく近い値を返すようになる性質がありますので、変更しなくても問題になることはないはずです。

管理画面

学習データの登録等を行うための独自の管理画面があります。

  1. 学習データを入力
  2. 学習データの削除
  3. Bayesianフィルタの動作履歴(プラグインオプションで指定時のみ)
  4. 全てのコメントをhamとして学習(プラグインオプションで指定時のみ)
  5. hamとして学習したデータを全て削除(プラグインオプションで指定時のみ)
  6. 全ての公開済みトラックバックをhamとして学習(プラグインオプションで指定時のみ)
  7. 全ての保留トラックバックをspamとして学習(プラグインオプションで指定時のみ)
  8. コメントをhamとして学習
  9. 公開済みトラックバックをhamとして学習
  10. 保留トラックバックをspamとして学習
  11. 統計情報のアップデート
  12. 動作テスト
  13. SpamBayesプラグインオプション
  14. 動作確認報告

学習データを入力

学習データの文例を登録します。
※spam/hamデータ共に登録が可能です。

学習データの削除

学習済みのデータを削除します。

Bayesianフィルタの動作履歴

フィルタの動作履歴を表示します。
Bayesianフィルタがコメントやトラックバックをどのように判定したのかについての詳細を表示させることができます。さらに判定に誤りがある場合にはBayesianフィルタにそれを教えることができます。

これらの機能は運用初期における動作の微調整に有効です。

※表示されるデータは動作履歴のため、このデータは学習データとは区別されており、そのままでは判定にはされません。判定に使用したい場合にはこの画面から、学習データに移す必要があります。

(このメニューは動作履歴を残さない設定にしている場合には表示されません。)

全てのコメントをhamとして学習

このコマンドを実行すると、これまでに寄せられている全てのコメントをham(spamでないもの)として学習します。
あらかじめspamコメントは削除しておく必要があります。コメントの量によっては時間がかかる可能性があります。
(このメニューはオプションによって非表示にすることができます。)

hamとして学習したデータを全て削除

上記の「全てのコメントをhamとして学習する」で学習したデータを全て削除します。
上記による学習の効果が芳しくなかった場合にのみ、実行してください。また、コメントの量によっては時間がかかる可能性があります。
(このメニューはオプションによって非表示にすることができます。)

全ての公開済みトラックバックをhamとして学習

このコマンドを実行すると、全ての公開済みトラックバックをhamとして学習します。
(このメニューはオプションによって非表示にすることができます。)

全ての保留トラックバックをspamとして学習

このコマンドを実行すると、全ての保留済みトラックバックをspamとして学習します。
(このメニューはオプションによって非表示にすることができます。)

コメントをhamとして学習

前回の実行後に新たに登録されたコメントをhamとして学習します。該当するコメントがない場合は何もしません。

公開済みトラックバックをhamとして学習

前回の実行後に新たに公開されたトラックバックをhamとして学習します。該当するトラックバックがない場合何もしません。

保留トラックバックをspamとして学習

前回の実行後に新たに保留されたトラックバックをspamとして学習します。該当するトラックバックがない場合何もしません。

統計情報のアップデート

Bayesianフィルタの統計情報をアップデートします。統計情報は自動的にアップデートされるため、通常は実行する必要はありません。

動作テスト

実際に文例を入力して、Bayesianフィルタの動作をテストすることができます。

SpamBayesプラグインオプション

プラグインオプションページを開きます

動作確認報告

作者向けに動作環境等を送信することができます。
プラグインの継続的改善のための情報収集にご協力ください。

Tipsと裏技

ローカルにMecabがインストールされている場合には、それを形態素解析器として使うことができます。

希望事項

  • インタフェイスの日本語化 jp2で対応済み(UTF-8版のみ提供)
  • Bayesian情報のインポートとエクスポート

バグ

開発履歴

  • version v1.1.0 jp2 [2008-05-04] Read here
    • [Changed] 管理画面を日本語化した
  • version v1.1.0 jp1 [2007-06-21] Read here
    • 初回リリース
 
plugins/spambayesjp.txt · 最終更新: 2011/03/23 21:28 (外部編集)