Próbuję dokonać klasyfikacji tekstu za pomocą Textblob. Najpierw uczę model i serializuję go przy użyciu pikle, jak pokazano poniżej.
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()
A kiedy spróbuję uruchomić ten plik:
import pickle
f = open('sample_classifier.pickle', encoding="utf8")
cl = pickle.load(f)
f.close()
Otrzymuję ten błąd:
UnicodeDecodeError: kodek „utf-8” nie może zdekodować bajtu 0x80 na pozycji 0: nieprawidłowy bajt początkowy
Poniżej znajduje się zawartość mojego sample.csv:
Mój SQL w ogóle nie działa poprawnie. To był zły wybór, SQL
Mam problemy. Prosimy o natychmiastową odpowiedź, wsparcie
Gdzie ja tu się mylę? Proszę pomóż.
Odpowiedzi:
Wybierając
open
plik w trybiewb
, wybierasz zapis w formacie binarnym surowym. Nie zastosowano kodowania znaków.Dlatego, aby przeczytać ten plik, powinieneś po prostu
open
w trybierb
.źródło
wb
podczas oszczędzania marynaty? czy jest jakiś tryb, w którym można uratować marynatę, który nie wymagałby otwierania jej wrb
trybie?wb
ponieważ jakiś problem, którego jeszcze nie naprawiłem, uniemożliwia mi korzystaniew
z marynaty. Narzeka na pisanie bajtów zamiast łańcuchów.Myślę, że powinieneś otworzyć plik jako
f = open('sample_classifier.pickle', 'rb') cl = pickle.load(f)
Nie powinieneś go dekodować.
pickle.load
przekaże ci dokładną kopię tego, co zapisałeś. W tym momencie powinieneś być w stanie pracowaćcl
tak, jakbyś właśnie go utworzył.źródło