はてダラテスト中

アップロードテストです。

とりあえず、以下のモジュールをインストールすることによって、Mac OS X 10.3.5 (Panther) で動作確認。

http://search.cpan.org/~gaas/libwww-perl-5.800/
http://search.cpan.org/~gaas/URI-1.32/
http://search.cpan.org/~gaas/HTML-Parser-3.36/

mi のツールメニューから実行するシェルスクリプトを作ってみた。おお、これでテキストエディタだけで完結できる。すばらしい。

mi からはてダラを動かすためのメモ

「ツール」メニューに、はてダラを動かすシェルスクリプトを追加してみる。

「オプション」メニューから「モード設定フォルダを開く」を選ぶと、モード設定ファイルが入ったフォルダが Finder 上で表示される(ふつうは ~/Library/Preferences/mi/mode だと思う)。すると、モードの名前が書かれたフォルダがいくつか表示されているので、その中から、標準を開いて(他のモードにしている場合はそのモードを)、さらにその中の tool フォルダを開く。ここに、改行を LF にした新しいテキストファイルを作る。作ったら、こんなテキストを打つ(オプションや保存先のフォルダはお好みで)。

#!/bin/sh
#new
cd ~/Documents/hatena
perl hw.pl -u XXXXXX -p XXXXXX -c

保存したら、mi を再起動する。適当なテキストファイルを開くと、「ツール」メニューに先ほど作成したシェルスクリプトのメニューがあらわれているはず。これを選択すると、はてダラが起動して自動的にアップロードされる。実行結果を新しいウィンドウに表示させるつもりで「#new」を入れてみたのだけど働いていない模様。なにか勘違いしているのかも。

ま、とりあえず動くようになったので、今回はここまで。

コーパスを小さくする

現在、私の環境では、popfild.db の容量は約 3.8MB。これが大きい方なのか小さい方なのかわからないけれど、この大きさをできるだけ小さくすることができれば、POPFile の分類速度が速くなりそうな気がする。コーパスを小さくするための方法について、少し考えてみた。
現在、単語とバケツの組み合わせの数(バケツごとの固有単語数の合計)は 23,804 個(select count(*) from matrix;)で、バケツに関係なく数えた固有単語数は 19,137 個(select count(*) from words;)という環境。
この中から、コーパスに(正確には、バケツのひとつひとつに)一度しかあらわれない単語を削除してみる(これまでに一度しかあらわれていないということは、分類にはあまり使われていないのではないかという予想のもと)。popfile.db の内容をいじるためには、POPFile を終了して popfild.db をどこかにコピーしてから、Terminal で sqlite popfile.db として開く。まず、単語とバケツの組み合わせ表(matrix)から、あらわれた回数が 1 回だけの組み合わせを削除する。

sqlite> delete from matrix where times=1;

次に、単語表(words)から、上で行った作業によって必要なくなった単語(あらわれたどのバケツでも一度だけだった単語)を削除する。

sqlite> delete from words where id not in (select wordid from matrix);

これによって、単語とバケツの組み合わせの数は 10,652 個に、バケツに関係なく数えた固有単語数は 7,881 個となった。それぞれ半分以下にすることができた。最後に、データベースの無駄な部分を削除する(これを行わないと、データベースの内部にあるデータの数は減っても、データベースのファイルサイズが変わらない)。

sqlite> vacuum;
sqlite> .quit

popfile.db のサイズは、約 1.6MB となった。
これで精度があまり変わらなければ、コーパスが小さくなったぶんだけ効率があがったということができそうだ。まだ実験を開始してからまだあまりたっていないのだけど、これまで 47 通のメールを受け取って、精度は 100%。もうしばらく様子をみてみるつもり。