我正在尝试使用Textblob进行一些文本分类。我首先训练模型并使用pickle将其序列化,如下所示。
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()
当我尝试运行此文件时:
import pickle
f = open('sample_classifier.pickle', encoding="utf8")
cl = pickle.load(f)
f.close()
我收到此错误:
UnicodeDecodeError:'utf-8'编解码器无法解码位置的字节0x80 0:无效的起始字节
以下是我的sample.csv的内容:
我的SQL根本无法正常工作。这是一个错误的选择,SQL
我有问题。请立即回复,支持
我在哪里错了?请帮忙。
答案 0 :(得分:91)
通过选择模式open
中的wb
文件,您选择使用原始二进制文件。没有应用字符编码。
因此,要阅读此文件,您只需open
模式rb
。
答案 1 :(得分:20)
我认为您应该将文件打开为
f = open('sample_classifier.pickle', 'rb')
cl = pickle.load(f)
你不应该解码它。 pickle.load
将为您提供所保存的任何内容的精确副本。此时,您应该能够使用cl
,就像刚创建它一样。
答案 2 :(得分:0)
也许文件是用 latin1 编码的:
f = open('sample_classifier.pickle', encoding="latin1")
答案 3 :(得分:0)
因为所有建议的答案都没有帮助我解决错误 - 我已经改用 joblib:
import joblib
clf_loaded = joblib.load('classifier_file_name.joblib')
效果很好!
答案 4 :(得分:-1)
试试这个代码它的工作:
with open('your picle file name', 'rb') as f:
classifier = pickle.load(f, encoding="latin1")