Вам необходимо сохранить объект CountVectorizer так же, как вы сохраняете nb
.
Когда вы звоните
CountVectorizer(analyzer=text_process).fit(x)
вы переучиваете CountVectorizer на новых данных, поэтому найденные им функции (словарный запас) будут отличаться от используемых во время обучения, и, следовательно, сохраненные nb
, которые были обучены на более ранних функциях, жалуются на несоответствие размеров.
Лучше выбрать их в разных файлах, но при желании вы можете сохранить их в одном файле.
Чтобы засолить оба в одном объекте:
file = open(sentiment_MNB_path + 'sentiment_MNB_model.pickle', 'wb')
pickle.dump(bow_transformer, file) <=== Add this
pickle.dump(nb, file)
Чтобы прочитать оба в следующем звонке:
file = open(sentiment_MNB_path + 'sentiment_MNB_model.pickle', 'rb')
bow_transformer = pickle.load(file)
nb = pickle.load(file)
Пожалуйста, посмотрите на этот ответ более подробно: https://stackoverflow.com/a/15463472/3374996