論文投稿と misima 性能改善

スラヴ研究雑誌に『オネーギン』に関する論文を投稿した。締切りは来年の一月。まだ時間がある。だけど,本業が忙しくなりつつあり,十二月以降はとてもやってられないだろうと思われ,先週帰宅後に集中して仕上げた。

昨年二月に書いたオリジナルの論文は LaTeX 組版で A4 二段組み 40 頁もあった。投稿規定に従って Microsoft Word B5 20 頁以内に切詰めるために,統計解析部分をばっさり削った。統計解析部分は独立した論文として LaTeX で新たに書き直し,「『エヴゲーニイ・オネーギン』における色彩要素の分布」という表題でインターネットに公開した。実は,提出論文から統計解析だけのこの論文をリファーするというズルをした。雑誌担当の先生は関連するテーマで論文の理解が深まるようなものならとくに問題はないと言ってくれたので,堂々とやったのだけど。インターネット時代の利点か?

掲載されるかどうか疑問ではある。もう二年近くになるネタなので,寝かしておくくらいなら叩かれてお蔵にしたほうがよさそうだった。不採用でも,批評をくれるとしたら,また次の機会もあろうというもの。

* * *

misima を少し手直しした。性能を少し改善したいと思ったのである。misima は,茶筌で形態素解析するだけでなく,起動するつど専用の辞書を大量に読むので,実行パフォーマンスが酷い。いわんや大昔の Pentium-III 600MHz マシーンである。

Perl のプロファイラ Devel::SmallProf で解析してみると,辞書の入力行毎に UTF-8 デコード処理を呼び出すのに時間がかかっていることが判った。ならば,辞書を読んでテーブル構築を起動のたびに行うのはやめにして,予め DBM にテーブルを固めておくのはどうか。UTF-8 テキストによるハッシュを Berkeley DB にシリアライズする方法がなかなか分らず苦労した。DB_Filter モジュールを使ってこれは解決した。試作品を作って試したら,少量のデータであれば 2 割程度改善された。しかし DMB の検索オーバヘッドがハッシュテーブルより大なので,対象テキストが増えるとこのオーバヘッドが辞書入力の所要時間を越えてしまい,逆にパフォーマンスが悪化する。まあ misima 利用状況をみると 1, 2 行が多いので,少しでも速いこの方式を採用してリリースした。

辞書を読みハッシュテーブルを構築した状態で常駐し,ユーザ要求をその時点から捌くようなデーモン構造にするのが方式的にはよいと思う。しかし一方で運用が面倒になり,メモリも嵩張る。もう少し検討に時間がかかりそうである。