2012-06-19 15 views
7

Tutto sembrava funzionare correttamente quando aggiungevo elementi al mio database Postgres. Senza cambiare nulla, la mia applicazione Rails iniziato non riuscendo ogni volta che ha iniziato Madeleine ovunque nella mia app:Simbolo di codifica non valido con gemma Classifier

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

137 è la linea problema:

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

Sono in grado di classificare le cose nella console, anche se , che è parte di ciò che mi sta causando confusione. Nella console, questo funziona correttamente:

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

Sto usando l'ultima gemma Classifier con Madeleine.

Ho immaginato che qualcosa fosse danneggiato nella mia istantanea che ha tentato di caricare, quindi l'ho rimosso, ma questo non risolveva il problema. Ecco la mia seconda a ultima istantanea (oggi la più recente):

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

Non sei sicuro di quello che sta succedendo qui. Ho visto alcune persone con Ruby 1.9.3-p125 avuto problemi simili, quindi ho aggiornato all'ultima versione stabile, 1.9.3-p194, ma non è stato d'aiuto.

Ecco un link alla documentazione per il classificatore, che cita come utilizzare Madeleine così: http://classifier.rubyforge.org/

Mi piacerebbe davvero apprezzare qualsiasi indicazioni su ciò che sta succedendo qui. Grazie!

+0

Hai mai risolto questo? Sto trovando lo stesso problema! – joshs

+0

Mai fatto. Ho finito per abbandonare la funzione per il tempo. Consiglierei di trovare un'altra gemma più stabile. – airlok

+0

si dovrebbe pulire la stringa prima di inviarla al classificatore, ad esempio, traslitterare i caratteri accentati –

risposta

0

ho avuto un problema con la gemma rails_admin con adattatore mysql che non era a conoscenza codificare, forse si può controllare se la Postgres adaptar è e se non provare un altro

0

Io non so perché la classe standard Marshal non funziona, ma ho avuto buoni risultati utilizzando

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

e poi

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

qualcosa di rotto con il maresciallo? Non proprio sicuro.

0

È necessario assicurarsi che le stringhe utilizzate per la formazione dei dati siano codificate in UTF-8. Se stai allenando il set di dati, un brutto trucco è di avere

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

nel tuo script.

Problemi correlati