我使用了 TfidfVectorizer 并通过 MultinomialNB 将其传递给文档分类,它工作正常。
但是现在我需要为 ex 传递超过 10 万的大量文档,当我尝试将这些文档内容传递给 TfidfVectorizer 时,我的本地计算机被挂起。它似乎有一个性能问题。所以我得到了一个使用 HashingVectorizer 的建议。
我使用下面的代码进行分类(只需用 HashingVectorizer 替换 TfidfVectorizer)
stop_words = open("english_stopwords").read().split("\n")
vect = HashingVectorizer(stop_words=stop_words, ngram_range=(1,5))
X_train_dtm = vect.fit_transform(training_content_list)
X_predict_dtm = vect.transform(predict_content_list)
nb = MultinomialNB()
nb.fit(X_train_dtm, training_label_list)
predicted_label_list = nb.predict(X_predict_dtm)
得到错误:
_count raise ValueError("Input X must be non -negative") ValueError:输入 X 必须为非负数
所以我得到 TfidfVectorizer 是根据单词的出现来计算的,所以它可以工作,但是 HashingVectorizer 逻辑是不同的,我无法弄清楚 HashingVectorizer 将如何在 MultinomialNB 中实现。
有人可以帮我解决这个性能问题。如果可以,我可以将 TfidfVectorizer 用于庞大的训练数据集,那么如何?如果没有,那么我如何在这里使用 HashingVectorizer?