2012-06-19 9 views
7

Alles schien gut zu funktionieren, als ich meiner Postgres-Datenbank Elemente hinzufügte. Ohne etwas zu ändern, begann meine Rails-Anwendung versagt, wenn es Madeleine irgendwo in meiner app gestartet:Ungültiges Kodierungssymbol mit Klassifizierer gem

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

137 ist das Problem Linie:

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

Ich bin in der Lage Dinge in der Konsole zu klassifizieren, obwohl , was ein Teil dessen ist, was mich verwirrt. In der Konsole funktioniert das gut:

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

Ich verwende den neuesten Classifier Edelstein mit Madeleine.

Ich dachte, dass etwas in meinem Snapshot beschädigt war, dass es versucht zu laden, also habe ich es entfernt, aber das hat das Problem nicht gelöst. Hier ist meine zweite zu letzten Snapshot (jetzt die jüngste):

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

nicht sicher, was hier vor sich geht. Ich sah einige Leute mit Ruby 1.9.3-p125 hatte ähnliche Probleme, also habe ich auf die neueste stabile Version, 1.9.3-p194, aktualisiert, aber das half auch nicht.

Hier ist ein Link auf die Dokumentation für Classifier, der erwähnt, wie Madeleine verwenden, wie gut: http://classifier.rubyforge.org/

ich wirklich einen Einblick in schätzen würde, was hier vor sich geht. Vielen Dank!

+0

Haben Sie das jemals gelöst? Ich finde das gleiche Problem! – joshs

+0

Niemals. Ich habe das Feature für die Zeit aufgegeben. Ich würde empfehlen, einen anderen, stabileren Edelstein zu finden. – airlok

+0

sollten Sie Ihre Zeichenfolge säubern, bevor Sie sie dem Klassifizierer zuführen, z. B. die akzentuierten Zeichen transkribieren –

Antwort

0

ich hatte mit mysql-Adapter ein Problem mit dem rails_admin Juwel, das nicht bewusst wurde kodiert, vielleicht können Sie überprüfen, ob Ihr Postgres adaptar ist und versuchen, wenn nicht eine andere

0

Ich weiß nicht, warum die Standard-Klasse Marshal nicht funktioniert, aber ich hatte gute Ergebnisse mit

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

und dann

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

etwas mit Marschall gebrochen? Nicht wirklich sicher.

0

Sie müssen sicherstellen, dass die Zeichenfolgen, die Sie zum Trainieren der Daten verwenden, UTF-8-codiert sind. Wenn Sie den Datensatz trainieren, ist ein hässlicher Hack zu haben

in Ihrem Skript.

Verwandte Themen