J'essaye de faire une classification de texte en utilisant Textblob. Je commence par entraîner le modèle et je le sérialise à l'aide de pickle comme indiqué ci-dessous.
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()
Et quand j'essaye d'exécuter ce fichier:
import pickle
f = open('sample_classifier.pickle', encoding="utf8")
cl = pickle.load(f)
f.close()
J'obtiens cette erreur:
UnicodeDecodeError: le codec 'utf-8' ne peut pas décoder l'octet 0x80 en position 0: octet de départ invalide
Voici le contenu de mon sample.csv:
Mon SQL ne fonctionne pas du tout correctement. C'était un mauvais choix, SQL
J'ai des problèmes. Veuillez répondre immédiatement, Support
Où vais-je mal ici? Veuillez aider.
Réponses:
En choisissant
open
le fichier en modewb
, vous choisissez d'écrire en binaire brut. Aucun encodage de caractères n'est appliqué.Ainsi pour lire ce fichier, vous devez simplement
open
en moderb
.la source
wb
lors de la sauvegarde du cornichon? ou y a-t-il un mode que l'on peut utiliser pour enregistrer le cornichon qui ne nécessiterait pas de l'ouvrir avec lerb
mode?wb
parce qu'un problème que je n'ai pas encore résolu m'empêche de l'utiliserw
avec pickle. Il se plaint d'écrire des octets au lieu de chaînes.Je pense que vous devriez ouvrir le fichier comme
f = open('sample_classifier.pickle', 'rb') cl = pickle.load(f)
Vous ne devriez pas avoir à le décoder.
pickle.load
vous donnera une copie exacte de tout ce que vous avez enregistré. À ce stade, vous devriez pouvoir travailler aveccl
comme si vous venez de le créer.la source