计数器矢量器不适用于sklearn中的测试字符串



我一直在使用sklearn进行情绪分析。我有一个包含3000多条评论的csv文件,我正在对60%的评论进行分类器训练。当我尝试使用CountVectorizer.transform()对分类器进行自定义审查以预测标签时,它会抛出以下错误:

    Anacondalibsite-packagessklearnfeature_extractiontext.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)
  1. 我在这里没有看到分类器,您只使用转换器(CountVectorizer,TfidfTransformer)。要获得预测,您必须在TfidfTransformer的输出上训练分类器
  2. 目前还不清楚您是在使用相同的CountVectorizer和TfidfTransformer(之前在训练集上训练过)来转换测试集文本,还是使用一些新的文本。要为以前安装的分类器提供正确的输入,您必须从以前安装的变压器中输入(不是新的)

在这里查找文本处理的好例子http://scikit-learn.org/stable/auto_examples/model_selection/grid_search_text_feature_extraction.html#example-模型选择网格搜索文本特征提取py

相关内容

  • 没有找到相关文章

最新更新