2015-10-05 20 views
27

Tôi đang cố gắng phân loại văn bản bằng Textblob. Tôi là người đầu tiên đào tạo mô hình và tuần tự hóa nó bằng cách sử dụng dưa chuột như hình dưới đây.Lỗi pickle Python: UnicodeDecodeError

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() 

Và khi tôi cố gắng chạy tập tin này:

import pickle 
f = open('sample_classifier.pickle', encoding="utf8") 
cl = pickle.load(f)  
f.close() 

tôi nhận được lỗi này:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 0: invalid start byte

Sau đây là nội dung của sample.csv tôi:

My SQL is not working correctly at all. This was a wrong choice, SQL

I've issues. Please respond immediately, Support

Tôi sẽ làm gì sai ở đây? Hãy giúp tôi.

Trả lời

44

Bằng cách chọn open tệp ở chế độ wb, bạn đang chọn viết ở dạng nhị phân thô. Không có mã hóa ký tự nào được áp dụng.

Vì vậy, để đọc tệp này, bạn chỉ cần đơn giản là open ở chế độ rb.

+0

Cảm ơn rất nhiều! Hoàn toàn làm việc! – 90abyss

11

Tôi nghĩ bạn nên mở file như

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

Bạn không cần phải giải mã nó. pickle.load sẽ cung cấp cho bạn bản sao chính xác của bất kỳ nội dung nào bạn được lưu. Tại thời điểm này, bạn sẽ có thể làm việc với cl như thể bạn vừa tạo ra nó.

Các vấn đề liên quan