2015-10-05 10 views
27

Sto provando a eseguire una classificazione del testo utilizzando Textblob. Sto prima addestrando il modello e serializzandolo usando il pickle come mostrato di seguito.Errore pickle in Python: UnicodeDecodeError

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 provo a eseguire questo file:

import pickle 
f = open('sample_classifier.pickle', encoding="utf8") 
cl = pickle.load(f)  
f.close() 

ottengo questo errore:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 0: invalid start byte

seguito sono il contenuto della mia sample.csv:

My SQL is not working correctly at all. This was a wrong choice, SQL

I've issues. Please respond immediately, Support

Dove sto andando storto qui? Per favore aiuto.

risposta

44

Scegliendo il file in modalità wb, si sceglie di scrivere in binario non elaborato. Non è stata applicata la codifica dei caratteri.

Pertanto, per leggere questo file, è necessario semplicemente open in modalità rb.

+0

Grazie mille! Completamente funzionato! – 90abyss

11

Penso che si dovrebbe aprire il file come

f = open('sample_classifier.pickle', 'rb') 
cl = pickle.load(f) 

Non si dovrebbe avere per decodificarlo. pickle.load ti darà una copia esatta di qualunque cosa tu abbia salvato. A questo punto, dovresti essere in grado di lavorare con cl come se lo avessi appena creato.