web-dev-qa-db-ja.com

Python pickleエラー:UnicodeDecodeError

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'コーデックは位置0のバイト0x80をデコードできません:開始バイトが無効です

Sample.csvのコンテンツは次のとおりです。

私のSQLはまったく正しく機能していません。これは間違った選択でした、SQL

問題があります。すぐに返信してください、サポート

私はここでどこに間違っていますか?助けてください。

64
90abyss

モードopenのファイルをwbに選択すると、生のバイナリで書き込むことになります。適用される文字エンコードはありません。

したがって、このファイルを読み取るには、単にopenモードでrbする必要があります。

108
donkopotamus

ファイルを次のように開く必要があると思います

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

デコードする必要はありません。 pickle.loadは、保存したものの正確なコピーを提供します。この時点で、作成したようにclを操作できるはずです。

21
saulspatz