あまつぶ


2003.10.31より、はてなダイアリーに引っ越しました。 ここは過去ログとして残しておきます。

10.26 【POPFileでメールを振り分け・その2】

 昨日に引き続いて、POPFileの話。パフォーマンスが向上し、日本語にも最初から対応している新バージョン、0.20.0を試してみる。

 まず、昨日の補足から。
 学習したデータ(コーパス)のバックアップ方法。これは単純に、POPFileのフォルダにある、「corpus」フォルダをバックアップしておくだけでいい。設定も含めてバックアップしたい場合は、「popfile.cfg」もあわせてバックアップ。POPFileをインストールし直した場合、これらのフォルダ・ファイルをリストアするだけで元に戻るようだ。
 もうひとつ、POPFileを起動時に自動的に立ち上げる方法。メールチェックをする時に立ち上がっていてくれないとエラーになってしまうので、起動した時に自動的に立ち上がってほしい。これは、おそらくcronで指定しておけばいけるのではないかと思うのだけど、残念ながら今のところうまくいっていない。うちでは、ほとんどスリープで使っているために再起動する機会が少なく、プライオリティが低いのだけど、方法がわかったらまた報告したいと思う(方法がわかる方がいたら教えてもらえるとうれしいなぁ(汗))。

 新バージョン(0.20.0)では日本語パッチをあてる必要はなくなったのだけど、コーパスをデータベースに保存するようになったため(これまではテキストだったようだ)、Berkeley DBというデータベースソフトを先にインストールしておく必要がある。また、日本語処理のために、Encode.pmが必要(0.19.1の日本語パッチではjcode.plを使っていた)。新バージョンを動かす前に、これらをインストールする必要がある。

 Berkeley DBは、Sleepycatからダウンロードする。これを書いている時点での最新バージョンは4.1.25。ダウンロードして適当なフォルダに展開して、インストールする。インストール方法は、docs/index.htmlを開いて、「Build for UNIX/POSIX systems」をクリック。build_unixフォルダに移動して、../dist/configure、make、(sudo) make installとするだけだ。インストールすると、/usr/local/に、「BerkeleyDB.4.1」というフォルダができる。
 次に、PerlからBerkeley DBを使用するために、BerkeleyDB.pmをインストールする。これは、CPANからダウンロードする。「perl -MCPAN -e shell」でcpanのシェルを呼び出し、「install BerkeleyDB」でインストールが開始されるが、ビルド時にエラーが起こってしまう。これは、ヘッダファイルとライブラリファイルの格納場所の指定があっていないためなので、それを修正する。
 ~/.cpan/build/BerkeleyDB-0.24(バージョンが違うかもしれないので要確認)に移動して、「make clean」で一旦生成されたファイルを削除する。次に、config.inを開いて「INCLUDE」と「LIB」の指定を修正する。どちらも、「/usr/local/BerkeleyDB/...」になっているので、これを「/usr/local/BerkeleyDB.4.1/...」に変更するだけ。最初にBerkeley DBをインストールする時にフォルダを変更しておく方がシンプルかもしれないけど……(汗)。
 変更ができたら、perl Makefile.PL、make、(sudo) make installでインストールする。インストールに成功すると、/Library/Perl/darwinにBerkeleyDB.pmなどができるようだ。

 次に、Encode.pmをインストールするのだが、これはPerlのバージョンが5.7.3以降でないとだめらしい。うちでインストールされていたのは5.6.0だったので、Perlをバージョンアップしないといけないらしい。しかし、それも面倒なので、0.19.1の時と同じようにjcode.plを使用するように修正した。
 修正が必要なファイルは(たぶん)2つ。Classifierフォルダにある、Bayes.pmと、MailParse.pmだ。「Encode」と書かれている箇所を探して、jcodeに置き換える。例えばBayes.pmなら、「require Encode;」を「require "./jcode.pl";」、「Encode::from_to($kakasi_out, "iso-2022-jp", "euc-jp");」を「&jcode::jis2euc(\$kakasi_out);」にするといった具合。そして、jcode.plをPOPFileのフォルダにコピーしておく。
 将来UTF-8などに対応する可能性を考えれば、Jcode.pmを使用するように変更しておくというのもいいかもしれない。Google Web APIを使った時にインストールしてあったし、その方がスマートだったかな?

 ここまできたら準備完了。旧バージョンのcorpusフォルダとpopfile.cfgを新バージョンのフォルダにコピーして、「perl popfile.pl」で起動(旧バージョンが動作した状態だとアラートが表示されるので、先に旧バージョンは停止させておくこと)。エラーなく起動したらメールをチェックしてみて、うまくいけば無事移行完了だ。

 そういえば、Panther発売なのか。注文が遅かったのでまだ届いてないのだけど、どんな感じなのかな。Perlのバージョンとかちょっと気になるなぁ。

prev ↑ '03 index ↑ 内容index