programing

Python 피클 오류:유니코드 디코딩 오류

padding 2023. 7. 27. 21:41
반응형

Python 피클 오류:유니코드 디코딩 오류

저는 Textblob을 이용하여 몇 가지 텍스트 분류를 하려고 합니다.저는 먼저 아래와 같이 피클을 사용하여 모델을 교육하고 시리얼화하고 있습니다.

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을 디코딩할 수 없음: 시작 바이트가 잘못되었습니다.

다음은 샘플의 내용입니다.csv:

제 SQL이 전혀 제대로 작동하지 않습니다.이건 잘못된 선택이었어, SQL

문제가 있어요.즉시 응답해 주십시오, 지원팀

제가 어디서 잘못되고 있나요?제발 도와주세요.

을 선택함으로써open모드 파일wb원시 이진법으로 쓰기를 선택했습니다.적용 중인 문자 인코딩이 없습니다.

따라서 이 파일을 읽으려면 간단히open유행하는rb.

제 생각에 당신은 다음과 같이 파일을 열어야 합니다.

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

해독할 필요가 없습니다.pickle.load저장한 내용의 정확한 사본을 제공합니다.이 시점에서, 당신은 당신과 함께 일할 수 있어야 합니다.cl당신이 방금 만든 것처럼.

파일이 latin1을 사용하여 인코딩되었을 수 있습니다.

f = open('sample_classifier.pickle', encoding="latin1")

제안된 답변 중 오류를 해결하는 데 도움이 되지 않았기 때문에 대신 joblib로 전환했습니다.

import joblib
clf_loaded = joblib.load('classifier_file_name.joblib')

잘했어요!

이 코드가 작동하는지 시험해 보세요.

 with open('your picle file name', 'rb') as f:
      classifier = pickle.load(f, encoding="latin1")
  • 참고: 수정되지 않은 경우 python2를 사용하는 경우 (인코딩) 유형을 ("utf-8")로 변경할 수 있지만, python3.x 인코딩을 사용하는 경우 기본값("utf-8") ...

언급URL : https://stackoverflow.com/questions/32957708/python-pickle-error-unicodedecodeerror

반응형