メモ/分かち書き

平日に作業すると23時から2時の作業になり、睡眠不足に陥るので平日作業は行わないと今日決めた。春は花粉によるストレスもあり毎年体調を崩すので。


思いついたこともあるのでメモ書きを行う。

  • 言語別の分かち書きオブジェクトの変数名を$localized_tokenizerに変える。この方が意味がわかりやすいだろう。
  • 言語の判定はTextCat.pmプラグインでも出来るが判定精度が良くない。一方、文字符号化方式を用いても判定は可能である。しかし、文字符号化方式一つに対して言語は必ずしも一つではない。そのため、文字符号化方式での判定を主として、TextCatプラグインでの判定を組み合わせて言語の特定を行う。TextCatプラグインがロードされていなければ、文字符号化方式での判定のみを行う。という処理を書いたが、コードを整理する。
  • その文字符号化方式と言語のマッピングテーブルがまだ完成していないので、完成させる。
  • 文字符号化方式による判定するメソッドは言語別の分かち書きの前処理であり、さらに分かち書きはBayesの前処理と考えるとBayes.pm内で行うのがよい。メッセージの解析時に判定していたためにNode.pmに記述したけどBayes.pmに処理を移す。
  • 日本語以外の分かち書きエンジンがあれば探す。できればPerlモジュールで欲しい。
  • Encode::Detectは判定精度はすばらしいのだが、Perl5.8のEncodeモジュールでサポートしていない文字符号化方式を返すこともある。gb18030は標準ではサポートしていないのですよ。メッセージのcharsetがgb2312であるのにgb18030を返すのでEncode::find_encoding()が失敗する。これをどうにかする。
  • Encode::Detectはインストールスクリプトorルールが無いのでCPANモジュールでインストール使用とすると失敗すると思うのだが。CPANに登録されている普通のPerlモジュールと同じ手順でビルドとインストールが出来るようにしてもらえないか。CPANに登録以来、更新が行われていないようである。場合によってはパッチを作る必要があるかも。


分かち書きに関しては今度の日曜日までにパッチを修正してtest2をアップする予定。nbodyは今回は無理。次回にする。
でも、サーバのメンテで日曜日に会社に行かないといけないのだが……