2012-06-19 10 views
7

Todo parecía funcionar bien ya que agregué elementos a mi base de datos de Postgres. Sin cambiar nada, mi aplicación Rails comenzó su defecto cada vez que comenzó a Madeleine en cualquier parte de mi aplicación:Símbolo de codificación no válido con la gema Classifier

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

137 es la línea problema:

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

soy capaz de clasificar las cosas en la consola, aunque , que es parte de lo que me está causando confusión. En la consola, esto funciona bien:

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

Estoy usando la última joya Classifier con Madeleine.

Me imaginé que algo estaba dañado en mi instantánea que intentó cargar, así que lo eliminé, pero eso no resolvió el problema. Aquí está mi segundo a última instantánea (ahora el más reciente):

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

No está seguro de lo que está pasando aquí. Vi que algunas personas con Ruby 1.9.3-p125 tenían problemas similares, así que me actualicé a la última versión estable, 1.9.3-p194, pero tampoco me ayudó.

Aquí hay un enlace a la documentación de clasificador, que menciona cómo utilizar Madeleine así: http://classifier.rubyforge.org/

me lo agradecería cualquier información sobre lo que está pasando aquí. ¡Gracias!

+0

¿Alguna vez resolvió esto? ¡Estoy encontrando el mismo problema! – joshs

+0

Nunca lo hizo. Terminé abandonando la función por el tiempo. Recomiendo encontrar otra joya más estable. – airlok

+0

debe limpiar su cadena antes de alimentarla al clasificador, por ejemplo, transcribir los caracteres acentuados –

Respuesta

0

tuve un problema con la gema rails_admin con el adaptador de MySQL que no estaba al tanto codificando, tal vez usted puede comprobar si su postgres es Adaptar y si no intenta otra

0

No sé por qué la clase estándar Mariscal no funciona, pero tuve buenos resultados usando

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

y luego

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

algo roto con mariscal? No muy seguro.

0

Debe asegurarse de que las cadenas que utiliza para entrenar los datos están codificadas en UTF-8. Si está entrenando el conjunto de datos, un hack feo es tener

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

en su secuencia de comandos.

Cuestiones relacionadas