2012-06-19 8 views
7

Postgresデータベースにアイテムを追加すると、すべてがうまくいきました。それは私のアプリで任意の場所にマドレーヌを開始したときに何も変更せずに、私のRailsアプリは失敗しました:分類コードgemの無効なエンコーディングシンボル

EncodingError in EventsController#update 
    invalid encoding symbol 
    app/controllers/events_controller.rb:137:in `update' 

137は、問題のあるラインです:

135 def update 
136 @event = Event.find(params[:id]) 
137 m = SnapshotMadeleine.new("bayes_data") 
     .... 
    end 

私も、コンソールで物事を分類することができますよこれは私が混乱を引き起こす原因の一部です。コンソールでこれはうまく動作します:

m = SnapshotMadeleine.new("bayes_data") {} 
    => #<Madeleine::DefaultSnapshotMadeleine:0x000... 
m.system 
    => #<Classifier::Bayes:0x000... 
m.system.classify "test" 

私は最新のクラシファイアの宝石をマドレーヌで使用しています。

ロードしようとしたスナップショットで何かが壊れているとわかりましたので、削除しましたが問題は解決しませんでした。ここに私の最後から2番目のスナップショット(現在最新のもの)があります:

a = File.read('bayes_data/000000000000000000041.snapshot') 
a.encoding 
    => #<Encoding:UTF-8> 
a.valid_encoding? 
    => true 

ここで何が起こっているのかわかりません。 Ruby 1.9.3-p125の人達も同様の問題を抱えていたので、私は最新の安定版1.9.3-p194にアップグレードしましたが、それは役に立たなかった。私は本当にここで何が起こっているかに任意の洞察力をいただければと思いますhttp://classifier.rubyforge.org/

はここでもマドレーヌを使用する方法を述べて分類子のドキュメントへのリンクです。ありがとう!

+0

これを解決しましたか?私は同じ問題を発見しています! – joshs

+0

決してしなかった。私は時間のためにその特徴を放棄した。別の安定した宝石を見つけることをお勧めします。 – airlok

+0

クラシファイアに入力する前に文字列を消去する必要があります。たとえば、アクセント付き文字を音訳する –

答えて

0

私はあなたのPostgresのadaptarであり、別の1

0

を試していない場合、私は、なぜ標準Marshalクラス分からない場合は、多分あなたがチェックすることができ、認識してエンコードされなかったのmysqlアダプタでrails_admin宝石との問題がありました仕事、私は

m = SnapshotMadeleine.new("bayes_data", YAML) do 
    b = Classifier::Bayes.new "Positive", "Negative 
end 

と元帥で壊れ、その後

m = SnapshotMadeleine.new("bayes_data", YAML) 

ものを使用して良い結果を持っていないのですか?わからない。

0

データのトレーニングに使用する文字列がUTF-8でエンコードされていることを確認する必要があります。データセットをトレーニングしている場合、あなたのスクリプトには

Encoding.default_external = Encoding::UTF_8 
Encoding.default_internal = Encoding::UTF_8 

というハックがあります。

関連する問題