我一直在用sklearn进行情绪分析。我有一个包含3000多条评论的csv文件,我正在训练我的分类器处理60%的评论。
当我尝试使用CountVectorizer.transform()对分类器进行自定义检查以预测标签时,它将引发以下错误:
Anaconda\lib\site-packages\sklearn\feature_extraction\text.py", line 864, in transform
raise ValueError("Vocabulary wasn't fitted or is empty!")
ValueError: Vocabulary wasn't fitted or is empty!
请帮助我,这是安装训练集的代码:
def preprocess():
data,target = load_file()
count_vectorizer = CountVectorizer(binary='true',min_df=1)
data = count_vectorizer.fit_transform(data)
tfidf_data = TfidfTransformer(use_idf=False).fit_transform(data)
return tfidf_data
这是预测客户评论情绪的代码:
def customQuestionScorer(question, clf):
X_new_tfidf = vectorizer.transform([question]).toarray()
print (clf.predict(X_new_tfidf))
q = "I really like this movie"
customQuestionScorer(q,classifier)
最佳答案
我在这里没有看到分类器,您只使用了transformers(CountVectorizer,tfidftranformer)。要获得预测-必须在tfidftransfer的输出上训练分类器。
目前还不清楚您是使用相同的CountVectorizer和TfidfTransformer(之前在训练集上受过训练)来转换测试集文本,还是使用一些新的文本。要为以前安装的分类器提供正确的输入-必须从以前安装的变压器(不是新的)输入。
请看下面的文本处理示例http://scikit-learn.org/stable/auto_examples/model_selection/grid_search_text_feature_extraction.html#example-model-selection-grid-search-text-feature-extraction-py
关于python - CountVectorizer在sklearn中不适用于测试字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36723786/