2016-04-19 8 views
2

Ich habe an Sentiment Analyse mit Sklearn gearbeitet. Ich habe eine CSV-Datei von 3000 ungeraden Bewertungen und ich trainiere meinen Klassifikator auf 60% dieser Bewertungen. Wenn ich versuche, eine benutzerdefinierte Überprüfung zu geben, für die Klassifizierer das Etikett mit CountVectorizer.transform(), um vorherzusagen, es wird folgende Fehler wirft:CountVectorizer funktioniert nicht für Testzeichenfolge in sklearn

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! 

Bitte helfen Sie mir, dies ist der Code den Trainingssatz für die Montage:

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 

Und das ist der Code für die Vorhersage der Stimmung einer benutzerdefinierten Bewertung:

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) 
+0

'mn = MultinomialNB()' 'cv = CounterVectorizer()' '# Daten ist Ihr Beispiel, oder Test, Daten #' 'X = cv.fit_transform (['' .join (row) für row in data]) ' ' #y verteilt nur Ihre Daten in Kategorien # ' ' y = ["irgendein zufälliges Ding", "irgendein zufälliges anderes Ding"] ' ' mn.fit (X, y) .predict_proba (cv.transform (['' .join ([Test])])) ' So etwas sollte für Sie arbeiten. – NationWidePants

+0

Sie müssen auch Fälle lösen, in denen keine Daten vorhanden sind. Dieses Modell hat Probleme mit 'NULL'-Mengen. – NationWidePants

Antwort

0
  1. Ich habe hier keinen Klassifizierer gesehen, Sie verwenden nur Transformatoren (CountVectorizer, TfidfTransformer). Um Vorhersagen zu erhalten, müssen Sie den Klassifikator für die Ausgabe von TfidfTransformer trainieren.
  2. Es ist nicht klar, ob Sie denselben CountVectorizer und TfidfTransformer verwenden (die zuvor im Trainingssatz trainiert wurden), um Testsatztexte oder einige neue zu transformieren. Um den korrekten Eingang für den zuvor montierten Klassifikator bereitzustellen, müssen Sie ihn von zuvor eingebauten Transformatoren (nicht neu) speisen.

Schauen Sie hier für gutes Beispiel für die Textverarbeitung http://scikit-learn.org/stable/auto_examples/model_selection/grid_search_text_feature_extraction.html#example-model-selection-grid-search-text-feature-extraction-py

Verwandte Themen