Решение AttributeError при загрузке TfidfVectorizer с помощью pickle - PullRequest
0 голосов
/ 27 сентября 2019

Успешно установил объект TfidfVectorizer и сохранил его без ошибки как объект pickle. У меня проблемы с загрузкой для последующего использования.

Я пытался использовать joblib, pickleи разные версии Python.Ни один из них не работал.

Сохранение кода:

import pickle

vectorizer = TfidfVectorizer(...)
doc_mat = vectorizer.fit_transform(corpus)
with open("vectorizer.pickle", "wb") as f:
    pickle.dump(vectorizer, f)

with open("docmat.pickle", "wb") as f:
    pickle.dump(doc_mat, f)

Загрузка кода в другом месте:

import pickle

# This load generates the error below
with open("vectorizer.pickle", 'rb') as f:
    vectorizer = pickle.load(f)

# This load works:
with open("docmat.pickle", 'rb') as f:
    doc_mat = pickle.load(f)

Сообщение об ошибке:

/usr/lib/python3.5/pickle.py in load(self)
   1041                     raise EOFError
   1042                 assert isinstance(key, bytes_types)
-> 1043                 dispatch[key[0]](self)
   1044         except _Stop as stopinst:
   1045             return stopinst.value

/usr/lib/python3.5/pickle.py in load_global(self)
   1340         module = self.readline()[:-1].decode("utf-8")
   1341         name = self.readline()[:-1].decode("utf-8")
-> 1342         klass = self.find_class(module, name)
   1343         self.append(klass)
   1344     dispatch[GLOBAL[0]] = load_global

/usr/lib/python3.5/pickle.py in find_class(self, module, name)
   1394             return _getattribute(sys.modules[module], name)[0]
   1395         else:
-> 1396             return getattr(sys.modules[module], name)
   1397 
   1398     def load_reduce(self):

AttributeError: module '__main__' has no attribute 'decode'
...