2016-04-17 5 views
-1

Ich habe einen Datenrahmen, der Bewertungen und Polarität wie folgt hat. Ich habe nur 2 Proben hier genommen, aber ähnlich zu, dass ich mehr als 1000 Bewertungen und PolaritätPython: Getting Error: Zu viele Werte zu entpacken (erwartet 2) beim Durchlaufen von Spalten von Dataframe

Reviews    Polarity 
This movie is good Positive 
This is bad   negative 

Ich habe eine Funktion geschrieben namens find_features haben, auf dem ich brauche alle Bewertungen dieses Datenrahmen passieren, einige Manipulationen tun und Erhalte sie als Liste in Feature-Sets. Ich versuche, die unten Technik eine Schleife durch die Überprüfung Spalten von df und für jene Spalte in ähnlicher Weise zu verwenden, sollte ich den Wert der Polarität in featuresets

featuresets = [(find_features(df.reviews), df.polarity) for (df.reviews, df.polarity) in df] 

Find_features Funktion zugewiesen bekommen:

def find_features(document): 
words = word_tokenize(document) 
features = {} 
for w in word_features: 
    features[w] = (w in words) 
return features 

Durch den Aufruf Bei dieser Funktion werden alle Wörter in meiner Spalte reviews als Ergebnis der Tokenize-Funktion in find_feature aufgeteilt und erhalten eine Polarität (positiv oder negativ). Ich habe eine bestimmte Liste von Wörtern erzeugt, die ich mit den häufigsten Wörtern verglichen habe, und word_feature hat am häufigsten verwendete Wörter.

all_words = nltk.FreqDist(all_words) 
word_features = list(all_words.keys()) 

good - positive 
bad  - negative 

während featuresets Funktion zu schreiben, erhalte ich die folgenden Fehler:

ValueError: too many values to unpack (expected 2) 

ich die obige Logik wissen für jede Art von Liste oder Wörterbuch funktioniert, aber ich wollte ähnliche Art von Logik verwenden für Datenrahmen. Könnten Sie mir bitte dabei helfen?

+1

ich, was Sie wollen, ist: 'featuresets = [(find_features (item.reviews), Punkt .polarity) für item in df] ' –

+1

Ich habe das versucht. Aber einen weiteren Fehler bekommen: AttributeError: 'str' Objekt hat kein Attribut 'Bewertungen' –

+0

Was macht 'find_features'? Nimmt es ein Objekt von Reviews und gibt ein anderes 'str' Objekt aus? – quapka

Antwort

0

obwohl die Sequenzierung der gegebenen Code-Schnipsel ist nicht sehr intuitiv, Ich bemerke, 2 Dinge, die in dem gegebenen Schnipsel ungewöhnlich sind:

  • for (df.reviews, df.polarity) in df: die übliche Art und Weise for col_name in df ist, dass iteriert über die verfügbare Spalte Namen in df.
  • wenn find_features soll ein dict Sie versuchen, Platz zurückzugeben, die in dem Ausdruck in ein tuple führen denken (find_features(df.reviews), df.polarity)
Verwandte Themen