SylFilter について
SylFilter は汎用のメッセージフィルタライブラリとコマンドラインツールです。 SylFilter は spam フィルタのアルゴリズムとして広く使われているベイジアンフィルタを提供します。 SylFilter は多言語に対応しており、任意の言語に適用できます。 C言語ネイティブで実装されているため、リソースの消費が少なく高速に動作します。
SylFilter ライブラリはシンプルかつ強力な C API を提供し、C のプログラムから使用できます。ライブラリのユーザは提供されるフィルタとオリジナルの自作フィルタを任意に組み合わせて使用できます。
SylFilter コマンドラインツールは、 bogofilter, bsfilter などのよく知られるツールと同様に、迷惑メールフィルタプログラムとして使用できます。
SylFilter はすでに実用的に利用できる品質となっていますが、開発中の段階のため、将来の仕様変更により過去のバージョンの学習データが利用できなくなる場合もあります。
SylFilter の特長
リリースノート
0.8 (2013/3/15)
- config.h のインクルードが不足しているためコンパイルエラーになる問題を修正しました。
- 新しいバージョンの GLib でコンパイルエラーになる問題を修正しました。
0.7 (2012/1/13)
- 内蔵の LibSylph の代わりに外部の LibSylph (単体版もしくは Sylpheed のもの)を使用できるようになりました。
0.6 (2011/11/15)
- 判定に Received ヘッダも使用するようにしました。
- verbose モードに複数のレベルを設定できるようになりました。
- sylfilter コマンド: データベースディレクトリを指定するオプションを追加しました。
- sylfilter コマンド: -V (バージョン表示) オプションを追加しました。
0.5 (2011/10/13)
- Robinson-Fisher 法の合成確率の計算方法を修正しました。0.4では誤って最小偏差内のものを除外せずにメッセージ内の単語数を適用していました。これによりフィルタリングが正確になり、若干性能が向上します。
- sylfilterコマンド: Robinson-Fisher のパラメータを指定するオプションが追加されました。
- Windows でマルチバイト文字を含むファイル名を渡せないバグを修正しました。
0.4 (2011/10/6)
- Robinson-Fisher 法を実装し、デフォルトで使用するようにしました。これにより、フィルタの正確さが向上します。以前の Paul/Naive Bayes 法も -m オプションで使用できます。
- sylfilterコマンド: フィルタ方法を指定するオプション (-m) が追加されました。
0.3 (2011/9/30)
- sylfilterコマンド: -j と -C, また -c と -J オプションを同時に指定できるようになりました。
- sylfilterコマンド: -B (非迷惑メールにバイアスをかけない)オプションが追加されました。
- GDBM に対応しました (QDBM と排他)。
- グローバル設定APIが追加されました。
- 5文字以上のCJK漢字部分を 4-gram で分解するようにしました。主に中国語spamの検出率が向上します。
0.2 (2011/9/13)
- 学習時の性能を向上しました(0.1とデータの互換性はありません)。
- Windows に対応しました。
0.1 (2011/9/5)
- 最初のリリース。
- QDBM と SQLite に対応。
- libsylfilter ライブラリと sylfilter コマンドラインツールを提供。
- ベイジアンフィルタの初期実装。
ダウンロード
ソースパッケージ
sylfilter-0.8.tar.gz (2013/3/15)
sylfilter-0.7.tar.gz (2012/1/13)
sylfilter-0.6.tar.gz (2011/11/15)
sylfilter-0.5.tar.gz (2011/10/13)
sylfilter-0.4.tar.gz (2011/10/6)
sylfilter-0.3.tar.gz (2011/9/30)
sylfilter-0.2.tar.gz (2011/9/13)
sylfilter-0.1.tar.gz (2011/9/5)
Windows バイナリ
sylfilter-0.8.zip (2013/3/15)
sylfilter-0.7.zip (2012/1/13)
sylfilter-0.6.zip (2011/11/15)
sylfilter-0.5.zip (2011/10/13)
sylfilter-0.4.zip (2011/10/6)
sylfilter-0.3.zip (2011/9/30)
sylfilter-0.2.zip (2011/9/13)
Git リポジトリ
初回のコピー: git clone http://floss.sraoss.jp/~yamamoto/sylfilter.git 更新: cd sylfilter git pull
使用方法
SylFilter は RFC822 メッセージのファイルを受け取ります(例: MH, Maildir, eml)。
- MH/Maildir フォルダ内の迷惑(spam)メッセージを学習
$ sylfilter -j ~/Mail/junk/*
- MH/Maildir フォルダ内のクリーンな(非spam)メッセージを学習
$ sylfilter -c ~/Mail/clean/*
- メッセージを判定
$ sylfilter ~/Mail/inbox/1234
- 学習データベースの状態を表示
$ sylfilter -s
- 学習データベースの状態と学習済みの単語をすべて表示
$ sylfilter -s -v
- ヘルプメッセージを表示
$ sylfilter -h $ sylfilter --help
Sylpheed で使う場合
「全般の設定... - 迷惑メール - 学習コマンド:」に以下のコマンドをそれぞれ登録します。3.2beta4 からは、 sylfilter がプリセットとして選択できます。
- 迷惑メール: sylfilter -j
- 非迷惑メール: sylfilter -c
- 判定コマンド: sylfilter
バグトラッキングシステム
SylFilterのバグトラッキングシステムを公開しています。バグ報告や要望などはこちらからどうぞ。
ベイジアンフィルタのアルゴリズム
SylFilter は Gary Robinson 氏の Fisher 法を実装しています。同様のアルゴリズムは bogofilter や bsfilter でも実装されています。
- Gary Robinson: Spam Detection
- Bogofilter Calculations: Comparing Geometric Mean with Fisher's Method for Combining Probabilities
SylFilter の初期バージョンでは、 Paul Graham 氏が解説したアルゴリズムをカスタマイズしたものを実装しました。
Robinson-Fisher 法がデフォルトで使用されます。
アルゴリズムの基本的な説明は以下の通りです:
- spam と非 spam 内の単語の出現頻度を集計する。
- メッセージ内の各単語について、それを含むメッセージが spam である確率をそれぞれ計算する。
- メッセージ内の重要度の高い単語についての合成確率を計算する。
詳細は上記の Web ページを参照してください。
ライセンス
SylFilter は BSD ライクなライセンスで配布されているフリーソフトウェアです。 ライセンスに基いて自由に利用、修正、再配布が可能です。
Copyright (C) 2011-2013 Hiroyuki Yamamoto Copyright (C) 2011-2013 Sylpheed Development Team All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the Sylpheed Development Team nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.