以下のサイトを参考にベイジアンフィルタを利用してみようと思ったのですが、Ruby 1.9.2ではそのまま動かなかったのでメモ。MeCabで日本語を分かち書きに変換し、Classifier::Bayesで推定しています。
環境は例によってUbuntuです。
MeCabのインストール
Classifierのインストール
動作確認
以下のコードは参考にしたページのテストを少しいじったものです。
このようにMarshalを利用してダンプすると以下のようなエラーが発生し、再度読み込むことができません。
Marshalが利用できないと学習したオブジェクトを保存しておくことができず不便なので、なんとか解決してみます。
出力を見た感じだと、どうやらMeCabとstemmerが出力した文字列のエンコーディングが正しく設定されていないことが原因のようです。このような場合にどう対処すればよいかはよく分からないのですが、今回はとりあえず自分のコードが動けばよいということで、強制的に設定するようなワークアラウンドを用意してみました。requireの直後に以下のようなコードを追加することで、今回のエラーを抑止することができます。
この状態で実行すると出力は以下のようになり、無事ダンプすることができました。