日本語対応パッチ案、その3

SpamAssassinの日本語対応パッチ案その3を公開しました。
http://www.emaillab.org/spamassassin/
少しはマシなコードになっているのでここでも公開します。test1,test2は酷かった orz
修行不足です。

昨日、まるまる一日かけて作業しました。月に1,2日しか作業できていない気がします。

変更点はこんなものです。

spamassassin-3.1.2-normalize-test3.patch (2006-05-28)

test2からの変更点

- バグの修正
  test1の「normalize時に漢字で終わり次の行が漢字で始まる行はunfoldingする。」
  がtest2において機能していなかったのを修正した。
  Node.pmにおいてinvisibleなテキストの処理でエラーが発生していたのを修正した。
- 分かち書きの処理を1行ごとに行っていたのをボディ一括で行うようにした。
  処理速度がわずかながら向上するはず。
- 分かち書き処理の前に全角空白文字を空白文字に置換するようにした。
- 文字コード変換の処理をMail/SpamAssassin/Utils.pmから
  Mail/SpamAssassin/Util/Charset.pmに移した。
- 全般的に処理コードを整理した。
- パッチを3分割し、プラグインの設定ファイルは別ファイルにした。
  文字符号化方式や言語の判定処理
    spamassassin-3.1.2-charset-util-test3.patch
  日本語対応パッチ本体
    spamassassin-3.1.2-normalize-charset-test3.patch
  kakasiとMeCabの分かち書きプラグイン
    spamassassin-3.1.2-tokenizer-plugins-test3.patch
  tokenizer.pre
    プラグインの設定ファイル

今後、考慮すべき点

- ベイズの学習上、分かち書き処理後にひらがなやカタカナ1文字は除去した方が
  よいのではないか?
- Encode::Detectモジュールはみんなコンパイルとインストールが出来ているのか?
  CPANを見ると、失敗している人の方が多いようであるが。
- MeCab-0.90rc10以降では次のようなエラーが出て、分かち書きが失敗する。
  TypeError in method 'Tagger_parse', argument 2 of type 'char const *'
  どうしてか?
  まだ、深く追いかけていないが、mecab-perlのMeCab_wrap.cxxが吐き出した
  エラーであるところまではわかった。