Estoy tratando de hacer una clasificación de texto usando Textblob. Primero estoy entrenando el modelo y serializándolo usando pickle como se muestra a continuación.
import pickle
from textblob.classifiers import NaiveBayesClassifier
with open('sample.csv', 'r') as fp:
cl = NaiveBayesClassifier(fp, format="csv")
f = open('sample_classifier.pickle', 'wb')
pickle.dump(cl, f)
f.close()
Y cuando intento ejecutar este archivo:
import pickle
f = open('sample_classifier.pickle', encoding="utf8")
cl = pickle.load(f)
f.close()
Me sale este error:
UnicodeDecodeError: el códec 'utf-8' no puede decodificar el byte 0x80 en la posición 0: byte de inicio no válido
A continuación se muestra el contenido de mi sample.csv:
Mi SQL no funciona correctamente en absoluto. Esta fue una elección incorrecta, SQL
Tengo problemas. Responda de inmediato, soporte
¿Dónde voy mal aquí? Por favor ayuda.
Respuestas:
Al elegir
open
el modo de archivowb
, está eligiendo escribir en binario sin formato. No se aplica ninguna codificación de caracteres.Por lo tanto, para leer este archivo, simplemente debe estar
open
en modorb
.fuente
wb
al guardar el pepinillo? ¿O hay un modo que se pueda usar para guardar el pepinillo que no requiera abrirlo con elrb
modo?wb
porque un problema que aún tengo que solucionar me impide usarw
con pickle. Se queja de escribir bytes en lugar de cadenas.Creo que deberías abrir el archivo como
f = open('sample_classifier.pickle', 'rb') cl = pickle.load(f)
No debería tener que decodificarlo.
pickle.load
le dará una copia exacta de lo que haya guardado. En este punto, debería poder trabajar con élcl
como si lo acabara de crear.fuente