Hatena::ブログ(Diary)

あまつぶ@はてなダイアリー RSSフィード

あまつぶWikiあまつぶ過去ログMacソフトWinソフト掲示板
<カレンダー>
2003 | 09 | 10 | 11 | 12 |
2004 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2005 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2006 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 03 | 04 | 05 | 06 | 07 | 09 | 11 |
2011 | 02 | 07 | 08 | 11 |
2012 | 04 | 11 |
2013 | 07 | 09 | 10 |
2014 | 11 |
2015 | 11 |

<< 2003/10 >>
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

<最近の見出し>




POPFile の Mac OS X(Panther/Tiger/Leopard/Snow Leopard/Lion/Mountain Lion/Mavericks/Yosemite)用インストーラをお探しの方は、POPFile プロジェクトのダウンロードページへ。
 | 

2003-10-31 PantherでもPOPFile このエントリーを含むブックマーク

 Pantherが届いたので、早速インストール。POPFileを導入したばかりなので、Perlのバージョンが非常に気になるところ。

 CD-ROMは3枚組になっていた。なんかすごい。表示言語は英語と日本語だけにしぼって、X11をインストールしたら、必要容量が1.8GBとか。まずは外付けにインストールするから大丈夫だけど、内蔵に入れるにはだんだん厳しくなってきたなぁ。

 インストール後は、前から使っているユーザディレクトリを使うためにシンボリックリンクをはればほぼ移行完了だ。OSを入れ替えても設定や書類などをほぼそのままで持ってこれるのはやはり便利。

 気になるPerlのバージョンは、5.8.1 RC3と表示された(perl -v)。ということはEncodeが使える訳だが、今のところjcode.plで不自由はないのでそのままで使うことにする。Kakasiなどはインストールし直しが必要(その前にDeveloper Toolsをインストール)だが、それ以外は特に作業はなし。

 さて、起動時にPOPFileを自動的に起動させる方法について。

 POPFileの日本語化をされているid:jishihaさんに書き込みをいただいたところからPOPFile on Mac OS Xをみてみたところ、起動時に動かす方法が書かれていた。

 早速やってみようと思ったのだけど、/Library/POPFile/にPOPFileをインストールして管理者権限で動かすという方法になっていたのでちょっと敬遠。代わりに、そこからさらにリンクされたOak & Apple ProductionsPOPFile Startupというアプリケーションを参考にして、非常に単純なAppleScriptアプレットを作成。

 POPFile Startupから一部を切り出しただけの、「do shell script "sh -c \"cd /...../popfile-0.20.0a/; /usr/bin/perl popfile.pl >/dev/null 2>&1 &\""」なんていう簡単なもの(Panther付属のスクリプトエディタでは、フォントを欧文フォントにしておかないと「\」が使えないみたい)。これをアプリケーション形式で保存して、ログイン時に起動するようにすればok。

 ところで、今日からあまつぶをはてなダイアリーに移動。HTMLを手書きするのもだんだん面倒になってきたし、はてなダイアリーの面白さも知ってしまったし。知らないうちにHTMLを手書きして日記を更新する時代は終わっていたようだ(汗)。

zakaizakai 2003/11/01 13:27 CD*3ですかぁ、Windowsもそうなるんだろうなぁ...ヤダヤダ(w

zakaizakai 2003/11/01 13:28 でも移行後もほぼそのままっていうのは、相変わらず魅力ですね。

amatubuamatubu 2003/11/01 15:34 再起動は1回ですむのでまだましですね。キー配列変更が課題……。

2003-10-26 POPFileでメールをフィルタ・その2 このエントリーを含むブックマーク

(このページはhttp://hp.vector.co.jp/authors/VA010318/intro/ama03/031026.htmlのコピーです)

 昨日に引き続いて、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のバージョンとかちょっと気になるなぁ。

jishihajishiha 2003/10/28 05:12 popfile の日本語化を進めています jishiha です。私は Win ユーザーですが、Mac 上でも 0.20.0 がちゃんと動いているようで安心しました。

jishihajishiha 2003/10/28 05:13 Panther には Perl 5.8.1 が入っているようですよ。http://www.thinksecret.com/news/pantherdeveloper.html

amatubuamatubu 2003/10/29 01:33 書き込みありがとうございます!日本語化もありがとうございます。Pantherが届いたらまた動作報告させてもらおうと思ってます。

amatubuamatubu 2003/10/29 20:46 perl --versionで調べたところ、This is perl, v5.8.1-RC3と名乗りました。

jishihajishiha 2003/10/31 04:41 5.8.1、Active Perl より新しいんですね。動作報告楽しみにしています。まだ正式に公開されていませんが、Wiki スタイルの POPFileDocumentationProject に MacOSX で動かす場合の留意点などが載っています。ご参考までに。http://popfile.sourceforge.net/cgi-bin/wiki.pl?InstallationHowTos

amatubuamatubu 2003/10/31 23:22 ありがとうございます。とても参考になりました。

jishihajishiha 2003/11/11 02:28 http://sourceforge.net/docman/display_doc.php?docid=17906&group_id=63137 によると

jishihajishiha 2003/11/11 02:29 12月リリース予定の POPFile 0.21.0 では Mac OS X 用のインストーラーサポート予定だそうです。私は Win ユーザーですから、そちらの日本語化できません。あまつぶさん興味ありませんか?

amatubuamatubu 2003/11/11 21:27 おお、ほんとですね。パッケージになるのは大歓迎です。協力できることがあればぜひしたいです。

2003-10-25 POPFileでメールを振り分け このエントリーを含むブックマーク

(このページはhttp://hp.vector.co.jp/authors/VA010318/intro/ama03/031025.htmlのコピーです)

 スパムがあまりにも多くなってきたので、そろそろなにか対策を考えなくては。とはいっても、メールアドレスを変更するのは面倒だし、仮に変更したとしても、公開アドレスであれば再び名簿に載ってしまうのも時間の問題。Mailを使うという手もあるけど、なじんだPostinoをそのまま使いつつなんとかする方法を探りたい。

 そういえば、スパムフィルタって最近はどんな感じなんだろうと思い、あちこち探してみると、Paul Graham氏の、A Plan for Spam邦訳)というレポート(?)が目に留まった。スパムと普通のメールとで、それぞれ特徴的にあらわれる単語(トークン)を調べておき、受信したメールに、それらの言葉がどの程度含まれているかどうかによってスパムか普通のメールかを判別する、ということらしい。

 ここで出てくるベイズの定理というのは、こんな感じのもの。箱が2つ(AとB)あって、それぞれにいろいろな色のボールがはいっている。箱Aからボールを取り出した時に、そのボールの色が赤である確率がp、箱Bからボールを取り出した時に、そのボールの色が赤である確率がqとする。この時、どちらかの箱から取り出した赤いボールが、箱Aから取り出したものである確率は、p/(p+q)である、というのがベイズの定理である。これをスパムフィルタに当てはめると、スパムと普通のメールがあって、例えば、fasterという単語がそれらのメールに書かれている確率が、それぞれ0.028%、0.010%だったとする。この時、fasterという単語が使われているメールがスパムである確率は、0.028/(0.028+0.010)で、73.7%。これを他の単語についても同様に調べていくことによって、あるメールがスパムである確率が計算できる、ということになる。

 こんな単純な方法でスパムを分離できるのか……? という疑問も若干あるものの、確率を計算して統計的にスパムをフィルタリングしてしまう、というアイデアは非常におもしろい。なんでも、Netscapeのメールにこのフィルタが含まれているようだけど、メーラーを変えるつもりはないので、POPプロキシとして動作してくれるものがあれば理想的だ。日本語に対応していれば、なおよい。

 それからしばらくして、POPFileというメールフィルタを発見。日本語化もされていて、しかもPOPプロキシとして動作する。Perlで書かれているらしくてプラットフォームも選ばないし、これはぜひ試してみなくては(最初に試してみたときは、0.19.1というバージョンであったので、まずはそのバージョンでの話。0.20.0aへのバージョンアップについては、次回くらいの予定(今はすでに0.20.0aを使用中だけど)。動作環境は、Mac OS X 10.2.8+Developer Toolsで、gcc 3.3、Perl 5.6)。

 まず、0.19.1のマルチプラットフォーム版を本家のサイトからダウンロードする。次に、日本語に対応させるためのパッチをPOPFileの日本語化のサイトからダウンロードする(これを書いている時点で、パッチの最新バージョンは0.19.5であった)。

 POPFileのオリジナルと日本語化パッチを適当なフォルダに展開する(うちでは、~/work/にそれぞれを展開した)。そして、日本語化にあたって必要となる、KakasiやText::Kakasiなどをインストールする(インストール方法は日本語化の付属ドキュメントを参照)。うちの環境では、以前Namazuを入れた時にすでにKakasiをインストール済みだったので、特に作業の必要はなかった。ちなみに、以前Kakasiをmakeする時にエラーが出る、と書いたが、configureの際に「./configure --host=powerpc-apple-bsd」とすればエラーなく通るそうだ。MIME::Base64については、必要なのかどうかよくわからなかったが、とりあえずインストールしておいた。

 最後に日本語パッチのPOPFileフォルダの中身をオリジナルに上書きすれば完了だが、POPプロキシとして動作するポートと、設定変更や学習のためにブラウザからアクセスするポートを変更しておかないとそのままでは起動できなかった(管理者権限であれば起動できるけど)。このため、popfile.cfgファイルを編集して、html_portとpop3_portをそれぞれ18080と10110などにしておく。ここまできたら、「perl popfile.pl」で起動させる。Terminalに「POPFile Engine v0.19.1 running」と表示されたら成功だ。

 POPFileが動作したら、ブラウザで「http://localhost:設定したポート/」にアクセスすることによって設定の変更ができる。インタフェースが日本語になっていない場合は、まず、「Configuration」タブの言語設定で「Nihongo」を選ぶ。

 POPFileでフィルタリングをするためには、バケツと呼ばれるものを2つ以上作成しておく必要がある。最初は4つ設定されているようなので、必要に応じて増やしたり減らしたりすればいい。設定は、「バケツ」タブで行う。バケツの数が少ないほど、フィルタリングにかかる時間が短縮されるらしい。バケツ設定の「件名の変更」オプションがオンになっていると、そのバケツに振り分けられたメールのタイトルに[バケツ名]が追加される。ある程度学習させるまでは精度が低いので、オフにしておくのがおすすめ。

 メーリングリストなどにはいっている場合は、フィルタリングの速度を稼ぐため、マグネット設定をしておくと便利だ。設定は、「マグネット」タブで行う。メールのタイトルや送信者などを指定して、特定のバケツに振り分けることができる。ここで設定した条件に一致したメールは、単語のチェックをせずに振り分けされるので、高速化がはかられる、ということだ。

 次に、POPFileを経由してメールを受信するようにするため、メーラーの設定を変更する必要がある。どんなメーラーでも基本的には同じだと思うけど、Postinoの場合では、POPサーバ欄を、「127.0.0.1:設定したポート」にして、ログイン名欄を「もとのPOPサーバ:もとのログイン名」とする。要するに、POPサーバの設定をlocalhost(127.0.0.1)にして、ポートはpopfile.cfgで設定したポート、ログイン名(アカウント名)をもとのPOPサーバともとのログイン名とをコロン「:」でつないだものにする。送信などについては変更の必要なし。

 この状態でメールを受信すると、メールサーバ→POPFile→メーラーという流れでメールが届くようになる。POPFileを通る際に、メールの内容がチェックされて、バケツに振り分けられる。

 最初はどのメールがスパムでどのメールが普通のメールなのかをまったく知らないので、おそらく適当なフォルダに振り分けられている。いくつかメールを受信したら、ブラウザで設定画面を開き、「履歴」タブで最近受信したメールがどのように振り分けられたかを確認する。最初の100通くらいは、正しく振り分けられているかどうかに関わらず、正しい振り分け先を設定して再分類するようにする(再分類されたもの以外は単語を学習しないため)。

 メールは、サーバに残した状態で受信するだけでも履歴に残るため、ある程度メールがたまっていれば、サーバに残す設定にして受信して学習させ、もう一度受信するという手もある。うちでは、telnetでPOPFileにアクセスして、サーバにフォルダを切って残してあった普通のメールとスパムを空読みさせて学習させた(普通のメール45通、スパム30通くらい)。

 学習後、マグネットで振り分けられたメールを除いて受信したメールが176通、そのうち誤認識で正しく振り分けられなかったものが6通(うち3通は誤ってスパムと判定され、残り3通はスパムなのに普通のメールと判定された)で、認識率は96.6%(マグネットで振り分けたものをあわせると99.27%)。学習させればさせるほど精度があがっていくということなので、今後が楽しみだ。

 次回はPOPFile 0.20.0aの予定。

2003-10-06 OPEN-R SDKをインストールしてみる このエントリーを含むブックマーク

(このページはhttp://hp.vector.co.jp/authors/VA010318/intro/ama03/031006.htmlのコピーです)

 だいぶ前に、AIBOのプログラムを作ることができる無料の開発環境が公開されたというニュースを読んだ記憶がある。そのときも気になったのだけど、結局触ってみることはなかった。

 今回、新しいAIBO(ERS-7)が発表されたのを機に、再び気になりはじめた(というか、状況がどうなっているのか全然知らなくて、有料のものしかなくなってしまったのかと思っていたくらいだった(汗))。Mac OS Xでも動くようだし、これは試してみなくては(Mac OS X 10.2.8上で試しました。一応サンプルのビルドまで試しましたが、実機がないので実際の動作テストはしてませんのであしからず(汗))。

 OPEN-R SDKを使用するためには、まず、OPEN-R SDKのオフィシャルサイトでユーザ登録をする必要がある。登録後、SDKなどをダウンロードすることができるようになる。SDKと開発環境は、Windows、LinuxMac OS XなどのUnix環境で使うことができる。Windows用にはビルド済みの開発環境が用意されているが、他の環境ではソースからビルドする必要がある。要するに、Mac OS Xで開発をしたい場合は、開発環境の構築からはじめるということになる。

 といっても、開発環境の構築には特にむずかしいところはない。binutils、gcc、newlibの3つのソースファイルのアーカイブ、それから「build-devtools-3.2-macosx-r1.sh」というシェルスクリプトをダウンロードして同じフォルダに置き、スクリプトに実行フラグをつけて(chmod +x)、実行するだけだ(インストール先が/usr/local/OPEN_R_SDKとなるので、管理者権限がないとアクセス権がなくてインストールに失敗するかもしれない。失敗する場合は、sudoで管理者パスワードを入力、と)。

 ソースファイルをビルドする必要があるので、Developer Toolsが入っているのは必須条件だと思う。うちは、gcc 3.3でビルドを行った。Terminalを立ち上げて、gcc --versionで2.95以降のバージョンが表示されれば大丈夫なんじゃないかと思う(たぶん)。

 ビルド、インストールが無事終わると、/usr/localにOPEN_R_SDKというフォルダができているはず。gccは入っているのにもう一度入れる理由がちょっとわからないが、newlibのビルドの際に、/usr/local/OPEN_R_SDK/bin/mipsel-linux-g++とかを参照しているようなので、とりあえず入れておくことにした。

 開発環境が構築できたら、OPEN-R SDKをインストールする。インストールといっても、アーカイブをダウンロードしてきて、/usr/local/OPEN_R_SDKに展開するだけだったりするけど。インストールマニュアルに書いてあるように、tarで展開するなどして、コピーする(コピーの際にも管理者権限がいるので注意)。

 これで、開発環境とSDKのインストールは完了となる(そういえば、今日、SDKがバージョンアップしていた。インストールは昨日したので、1.1.3-r4での話。1.1.4-r1でも同じだと思うけど)。

 早速サンプルをビルドしてみる。HelloWorldという、コンソール(telnetでつなぐと出てくるらしい)にHello World !と表示するというもので試してみる。ロボットの世界(?)でも、Hello Worldは定番なのか。

 HelloWorldフォルダに移動して、make。たったこれだけ。インストールなどに問題がなければ、とてもあっさり。できあがったプログラムは、〜.binという名前になるようだ。容量を稼ぐためにgzipで圧縮されていると、どこかで読んだ。

 あとは、make installで、MSフォルダにコピーされる。OPEN-Rフォルダをメモリスティックにコピーして、あとは動作テスト、という流れのようだ(このとき、/usr/local/OPEN_R_SDK/OPEN_R/MS/WCONSOLE/memprot/OPEN-Rフォルダも一緒にコピーする必要があるみたい。MS以下のフォルダはいくつかあって、それぞれ適切なものをコピーするのだと思うけど、どういう場合にどれを使うのかとかまだまだわからないことだらけだ)。

 ここから先は、実機を持っていないと試すことができない(涙)。はたして、試すことができる日は来るのか……(続く?)。

 | 
470370