2015-10-05 8 views
27

Ich versuche, eine Textklassifizierung mit Textblob zu tun. Ich trainiere zuerst das Modell und serialisiere es mit Essiggurke, wie unten gezeigt.Python Pickle Fehler: 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() 

Und wenn ich versuche, diese Datei ausführen:

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

ich diesen Fehler:

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

Im Folgenden sind der Inhalt meiner sample.csv:

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

I've issues. Please respond immediately, Support

Wohin gehe ich hier falsch? Bitte helfen Sie.

Antwort

44

Wenn Sie open die Datei im Modus wb auswählen, entscheiden Sie sich für das Schreiben in roher Binärdatei. Es wird keine Zeichencodierung angewendet. Um diese Datei zu lesen, sollten Sie einfach open im Modus rb eingeben.

+0

Vielen Dank! Total gearbeitet! – 90abyss

11

Ich glaube, Sie die Datei als

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

öffnen sollten Sie sollten es nicht entschlüsseln müssen. pickle.load erhalten Sie eine genaue Kopie von dem, was Sie gespeichert haben. An diesem Punkt sollten Sie in der Lage sein, mit cl so zu arbeiten, als ob Sie es gerade erstellt hätten.