両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン |
crm114:cpanel [2013/07/08 16:41] – [CRM114 本体] osamu | crm114:cpanel [2015/07/30 00:16] (現在) – [フィルタの設定] osamu |
---|
| |
[[http://crm114.sourceforge.net/wiki/doku.php?id=download|CRM114 のダウンロードページ]]を見ると、ありがたいことにコンパイル済みのバイナリーイメージ、それも静的リンクを使ってコンパイルしてあるので、サーバーにあるライブラリに依存せずに動くやつが公開されていますので、これを使います。 | [[http://crm114.sourceforge.net/wiki/doku.php?id=download|CRM114 のダウンロードページ]]を見ると、ありがたいことにコンパイル済みのバイナリーイメージ、それも静的リンクを使ってコンパイルしてあるので、サーバーにあるライブラリに依存せずに動くやつが公開されていますので、これを使います。 |
| |
上のダウンロードページで "Binary progs only" と書かれているところにあるファイルのうち、static と注釈が付いているのがそれなのですが、このうち2008年3月の BlameSteveJobs というバージョン以降のものは正規表現ライブラリなどの仕様が大幅に変わっているようで、日本語対応がうまく動いているかどうか確認できなかったため、大幅変更直前の BlameSentansoken というバージョンを使いました(CRM114 の作者の [[http://www.merl.com/people/yerazunis/|Bill Yerazunis]] は MIT の近所にある三菱電機の研究所にお勤めなんだそうですが、このバージョン、先端総研が何かやらかしたんでしょうか……)。 | 上のダウンロードページで "Binary progs only" と書かれているところにあるファイルのうち、static と注釈が付いているのがそれなのですが、このうち2008年3月の BlameSteveJobs というバージョン以降のものは正規表現ライブラリなどの仕様が大幅に変わっているようで、日本語対応がうまく動いているかどうか確認できなかったため、大幅変更直前の BlameSentansoken というバージョンを使いました(CRM114 の作者の [[http://www.merl.com/people/yerazunis/|Bill Yerazunis]] は MIT の近所にある三菱電機の研究所にお勤めなんだそうですが、このバージョン、先端総研が何かやらかしたんでしょうか……)。 |
| [[http://crm114.sourceforge.net/tarballs/|tarball のインデックスページ]]から、http://crm114.sourceforge.net/tarballs/crm114-20080326-BlameSentansoken.i386.tar.gz |
| をダウンロードして展開(あるいはサーバー上のシェルで wget して tar xvfz)します。 |
| |
tarball のインデックスページ | 場所はどこでもいいのですが、ここでは自分の home ディレクトリの下に bin/crm114 というディレクトリを作りました。 |
http://crm114.sourceforge.net/tarballs/ | |
から、 | |
crm114-20080326-BlameSentansoken.i386.tar.gz | |
http://crm114.sourceforge.net/tarballs/crm114-20080326-BlameSentansoken.i386.tar.gz | |
をダウンロードして展開(サーバー上に wget して tar xvfz)します。場所はどこでもいいのですが、ここでは自分の home ディレクトリの下に bin/crm114 というディレクトリを作りました。 | |
==== 日本語対応のためのプログラム ==== | ==== 日本語対応のためのプログラム ==== |
| CRM114 と組み合わせて使う、日本語メールのいろんな文字コードエンコーディングを変換するプログラムには Ruby の中に標準で組み込まれている nkf を使います。また、日本語テキストを分かち書きプログラムには、工藤拓さんが作ったピュア JavaScript の分かち書きソフト [[http://www.chasen.org/~taku/software/TinySegmenter/|TinySegmenter]] をもとにして Ruby で書かれた [[http://ultraist.hatenablog.com/entry/20120603/1338675881|BimyouSegmenter]] をつかわせてもらいます。BimyouSegmenter には最初から nkf モジュールを使った文字コード変換が入っているので、これ一本で用が済みます。 |
| |
| [[https://github.com/nagadomi/bimyou_segmenter|BimyouSegmenter の GitHub]] からプログラムを zip でダウンロード。 |
| |
| bin/bimyou_segmenter という Ruby ファイルが本体なので、これを先ほどの home の下の bin ディレクトリにコピー。また、lib/ ディレクトリ以下の内容を、そっくりそのまま home の下に lib ディレクトリを作ってコピーします。 |
| |
| ディレクトリの内容はこんな感じになります。 |
| <code> |
| ~ |
| +/bin |
| bimyou_segmenter |
| +/crm114 |
| ... |
| +lib |
| bimyou_segmenter.rb |
| +/bimyou_segmenter |
| aozora_model.rb |
| version.rb |
| </code> |
| |
| bin/bimyou_segmenter の中に、ライブラリを呼び出す |
| <code ruby> |
| require 'bimyou_segmenter' |
| </code> |
| という行があるので、 |
| <code ruby> |
| require '/home/username/lib/bimyou_segmenter' |
| # この例では、/home/username/ が自分のホームディレクトリ |
| </code> |
| というように、ライブラリのパスを、上でコピーした先の lib ディレクトリの下へのフルパスに書き換えます。 |
| |
| できあがったら、動作確認してみましょう。 |
| <code> |
| [~]# bin/bimyou_segmenter ← プログラムを起動 |
| 上野発の夜行列車降りたときから ← 分かち書きしたい文章をなにか入力 |
| 上野 |
| 発の |
| 夜行 |
| 列車 |
| 降り |
| た |
| とき |
| から |
| EOS ← 分かち書きされて出力される |
| ^D ← Ctrl-D で入力終了 |
| [~]# |
| </code> |
===== CRM114 を使う環境を整える ===== | ===== CRM114 を使う環境を整える ===== |
| 必要なプログラムが準備できたので、環境の設定と、日本語対応のための改造を行います。 |
==== 作業用ディレクトリにファイルを揃える ==== | ==== 作業用ディレクトリにファイルを揃える ==== |
| メールが送られてきたときに CRM114 を使ってスパムかどうかの判定をするための作業用ディレクトリを作ります。 |
| ここでは、home の下に .crm114 というディレクトリを作りました。 |
| その中に、先ほど CRM114 のプログラムを展開したディレクトリから以下のファイルをコピーしてきます。 |
| <code> |
| mailfilter.crm ← CRM114プログラム上で実行するスパムフィルターのスクリプト本体 |
| mailfilter.cf ← 上記スクリプトの設定ファイル |
| rewrites.mfp ← 自分のメールアドレス、名前、メールサーバーなどを登録しておくファイル |
| priolist.mfp ← ドメイン指定で無条件受け容れや無条件拒否するための設定ファイル |
| whitelist.mfp ← 無条件で受け容れるメールアドレスを記述しておく、いわゆるホワイトリスト |
| </code> |
==== 環境設定 ==== | ==== 環境設定 ==== |
==== 日本語対応のための改造 ==== | ==== 日本語対応のための改造 ==== |
==== フィルタの設定 ==== | ==== フィルタの設定 ==== |
| |
| <code> |
| #!/bin/sh |
| cat - | /home/osamuhig/bin/crm114/crm114 -u /home/osamuhig/.crm114 mailfilter.crm 2>/dev/null | /usr/sbin/sendmail -t |
| </code> |
| ===== 育てながら運用 ===== |
| ==== スパム判定をトレーニングする ==== |
| http://www.avtechpulse.com/opensource/fix-spam-classification.txt |