Estou tentando fazer uma classificação de texto usando Textblob. Primeiro, estou treinando o modelo e serializando-o usando pickle, conforme mostrado abaixo.
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()
E quando tento executar este arquivo:
import pickle
f = open('sample_classifier.pickle', encoding="utf8")
cl = pickle.load(f)
f.close()
Eu recebo este erro:
UnicodeDecodeError: o codec 'utf-8' não pode decodificar o byte 0x80 na posição 0: byte inicial inválido
A seguir está o conteúdo do meu sample.csv:
Meu SQL não está funcionando corretamente. Esta foi uma escolha errada, SQL
Eu tenho problemas. Por favor responda imediatamente, Suporte
Onde estou errando aqui? Por favor ajude.
Respostas:
Ao escolher
open
o arquivo no modowb
, você está optando por escrever em binário bruto. Não há codificação de caracteres sendo aplicada.Portanto, para ler este arquivo, você deve simplesmente entrar
open
no modorb
.fonte
wb
ao salvar o pickle? ou existe um modo que pode ser usado para salvar o pickle que não exigiria abri-lo com orb
modo?wb
porque um problema que ainda não resolvi me impede de usarw
com pickles. Ele reclama sobre a gravação de bytes em vez de strings.Eu acho que você deve abrir o arquivo como
f = open('sample_classifier.pickle', 'rb') cl = pickle.load(f)
Você não deveria ter que decodificá-lo.
pickle.load
lhe dará uma cópia exata de tudo o que você salvou. Neste ponto, você deve ser capaz de trabalharcl
como se tivesse acabado de criá-lo.fonte