僕は発展途上技術者

0.22.0 に向けて考えていること



  • Kakasi vs bigram


日本語メールを扱うときには Kakasi による形態素解析を使って単語ごとに分けているが、Kakasi の辞書のサイズが大きいのが難点。また、Kakasi の Active Perl 5.8 用のモジュールは、竹迫氏(http://www.namazu.org/~takesako/kakasi/) の厚意により特別にビルドしていただいたもの。Active Perl のバージョンが上がるたびにまたその厚意に甘えるという形はベストとは思えない。


bsfilter は連続する漢字2文字(bigram)およびカタカナを token としているようだ。この方法でも精度が落ちない気がする。POPFile でもそうしてみるか?漢字に限定せず、ひらがな・カタカナ含め、連続するあらゆる文字2文字ではどうなのだろう?検証してみると面白そうだ。検証するには、日本語のメールだけの精度を POPFile に表示できるようにしないといけないな。



  • APOP


「APOP 対応してくれ」という声をよく聞く。予定では 0.22.0 で対応のようだが、それまでユーザーは我慢して待ってくれるだろうか。日本の ISP 事情はよくわからないのだが、アメリカよりも APOP を採用している所が格段に多いのだろうか?日本は結構そういったセキュリティに関することに敏感に反応するように思える。ちなみに僕の利用している comcast は APOP どころか、From フィールドを変えたってメールが送れてしまう。


APOP対応のパッチは既に sourceforge.net で公開されているので、Perl がわかる人なら、割と簡単にあてられると思う。そうでない人のために 0.22.0 へのつなぎとして、簡単にパッチをあてることができるインストーラーを作って公開してしまおうか?日本語化には全く関係がないのだけれど。



  • use locale


use locale の問題に悩まされている。use locale を宣言すると、日本語を sort する部分で POPFile はハングアップしてしまう。しかしこの use locale は日本語以外の言語ではアルファベットをきちんと並べるためには必須。例えば、use locale が宣言されていれば、a、A、b、B と並ぶところを、宣言がされていないと、A、B、a、b と並んでしまう。現状ではソート部分を、以下のようにして日本語モードが選択されているかいないかで分岐させているが、あまり良い解決法ではない。sort する部分がソースコードのあっちこっちにあるので、メンテに手間がかかるし、また新たに sort する部分が追加されたとき同じ問題が起こる可能性がある。



$JapaneseMode = 'yes'; #yes or no
use locale;

@text = ('Apple','Big','apple','big');

if ($JapaneseMode eq 'yes') {
no locale;
print join(',', sort @text), "\n";
} else {
print join(',', sort @text), "\n";
}

そこで以下のように condition 付きの use locale を試してみたのだがうまくいかないのだ。



$JapaneseMode = 'yes'; #yes or no

use if $JapaneseMode eq 'no', locale;

@text = ('Apple','Big','apple','big');
print join(',', sort @text), "\n";

これだと、$JapaneseMode が yes あるいは no に関わらず、常に no locale 状態で、'Apple','Big','apple','big' と並んでしまう。


どなたか教えてくれるとすごく助かります。この問題、かれこれ半年くらい考え続けているので。



プロフィール

株式会社まちクエスト代表、つくる社LLC代表。

Scratchで楽しく学ぶ アート&サイエンスRaspberry Piではじめる どきどきプログラミングを書きました。

Amazonから図書館検索 Libron、iPhoneアプリ ひらがなゲーム かなぶん を作っています。

Email: webmaster at champierre dot com

Twitter @jishiha

最近のエントリー

アーカイブ