文書の過去の版を表示しています。
目次
cPanel 共用サーバーに CRM114 をインストールする
必要なプログラムを準備する
CRM114 プログラム本体と、日本語対応するために必要な外部プログラムを準備します。
CRM114 本体
スパムフィルター(本当は、汎用のプログラマブルな統計的言語処理フィルター)の CRM114 ですが、C言語で書かれたソースコードで提供されているので、動作させたいコンピューターの上でコンパイルしてバイナリープログラムを作らないと使えません。cPanel ホスティング環境ではCコンパイラが使えないようになっているので、これをどうにかするのが第一の関門。
CRM114 のダウンロードページを見ると、ありがたいことにコンパイル済みのバイナリーイメージ、それも静的リンクを使ってコンパイルしてあるので、サーバーにあるライブラリに依存せずに動くやつが公開されていますので、これを使います。
上のダウンロードページで “Binary progs only” と書かれているところにあるファイルのうち、static と注釈が付いているのがそれなのですが、このうち2008年3月の BlameSteveJobs というバージョン以降のものは正規表現ライブラリなどの仕様が大幅に変わっているようで、日本語対応がうまく動いているかどうか確認できなかったため、大幅変更直前の BlameSentansoken というバージョンを使いました(CRM114 の作者の Bill Yerazunis は MIT の近所にある三菱電機の研究所にお勤めなんだそうですが、このバージョン、先端総研が何かやらかしたんでしょうか……)。 tarball のインデックスページから、http://crm114.sourceforge.net/tarballs/crm114-20080326-BlameSentansoken.i386.tar.gz をダウンロードして展開(あるいはサーバー上のシェルで wget して tar xvfz)します。
場所はどこでもいいのですが、ここでは自分の home ディレクトリの下に bin/crm114 というディレクトリを作りました。
日本語対応のためのプログラム
CRM114 と組み合わせて使う、日本語メールのいろんな文字コードエンコーディングを変換するプログラムには Ruby の中に標準で組み込まれている nkf を使います。また、日本語テキストを分かち書きプログラムには、工藤拓さんが作ったピュア JavaScript の分かち書きソフト TinySegmenter をもとにして Ruby で書かれた BimyouSegmenter をつかわせてもらいます。BimyouSegmenter には最初から nkf モジュールを使った文字コード変換が入っているので、これ一本で用が済みます。
BimyouSegmenter の GitHub からプログラムを zip でダウンロード。
bin/bimyou_segmenter という Ruby ファイルが本体なので、これを先ほどの home の下の bin ディレクトリにコピー。また、lib/ ディレクトリ以下の内容を、そっくりそのまま home の下に lib ディレクトリを作ってコピーします。
ディレクトリの内容はこんな感じになります。
~ +/bin bimyou_segmenter +/crm114 ... +lib bimyou_segmenter.rb +/bimyou_segmenter aozora_model.rb version.rb
bin/bimyou_segmenter の中に、ライブラリを呼び出す
require 'bimyou_segmenter'
という行があるので、
require '/home/username/lib/bimyou_segmenter' # この例では、/home/username/ が自分のホームディレクトリ
というように、ライブラリのパスを、上でコピーした先の lib ディレクトリの下へのフルパスに書き換えます。
できあがったら、動作確認してみましょう。
[~]# bin/bimyou_segmenter ← プログラムを起動 上野発の夜行列車降りたときから ← 分かち書きしたい文章をなにか入力 上野 発の 夜行 列車 降り た とき から EOS ← 分かち書きされて出力される ^D ← Ctrl-D で入力終了 [~]#
CRM114 を使う環境を整える
必要なプログラムが準備できたので、環境の設定と、日本語対応のための改造を行います。
作業用ディレクトリにファイルを揃える
メールが送られてきたときに CRM114 を使ってスパムかどうかの判定をするための作業用ディレクトリを作ります。 ここでは、home の下に .crm114 というディレクトリを作りました。 その中に、先ほど CRM114 のプログラムを展開したディレクトリから以下のファイルをコピーしてきます。
mailfilter.cf mailfilter.crm priolist.mfp rewrites.mfp whitelist.mfp