CountVectorizer不适用于sklearn中的测试字符串

时间:2016-04-19 16:05:58

标签: python scikit-learn

我一直在使用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)

1 个答案:

答案 0 :(得分:1)

  1. 我在这里没有看到分类器,你只使用变换器(CountVectorizer,TfidfTransformer)。要获得预测 - 您必须在TfidfTransformer的输出上训练分类器。
  2. 目前尚不清楚您是否正在使用相同的CountVectorizer和TfidfTransformer(之前接受过训练集训练)来转换测试集文本或一些新文本。为先前安装的分类器提供正确的输入 - 您必须从之前安装的变压器(非新的)提供它。
  3. 在这里查看文本处理的好例子http://scikit-learn.org/stable/auto_examples/model_selection/grid_search_text_feature_extraction.html#example-model-selection-grid-search-text-feature-extraction-py