Ich versuche Go Et Al zu replizieren. Twitter Sentiment Analyse, die hier gefunden werden kann http://help.sentiment140.com/for-students Das Problem, das ich habe, ist die Anzahl der Funktionen ist 364464. Ich verwende derzeit nltk und nltk.NaiveBayesClassifier zu tun, wo Tweets eine Replikation der 1.600.000 Tweets hält und dort Polarität:Python nltk klassifizieren mit großem Funktionsumfang (Replicate Go Et Al 2009)
for tweet in tweets:
tweet[0] = extract_features(tweet[0], features)
classifier = nltk.NaiveBayesClassifier.train(training_set)
# print "NB Classified"
classifier.show_most_informative_features()
print(nltk.classify.util.accuracy(classifier, testdata))
Alles dauert nicht sehr lange außer dem extract_features funktioniert
def extract_features(tweet, featureList):
tweet_words = set(tweet)
features = {}
for word in featureList:
features['contains(%s)' % word] = (word in tweet_words)
return features
Dies liegt daran, für jeden einen Wörterbuch der Größe 364464 es tweet Schaffung darzustellen, ob etwas vorhanden ist oder nicht.
Gibt es eine Möglichkeit, dies schneller oder effizienter zu machen, ohne die Anzahl der Funktionen wie in diesem Dokument zu reduzieren?
Ich frage mich, warum Sie nicht die gleichen Techniken wie in dem Papier verwendet werden sollen. Wie auch immer, grundlegende NLP-Schritte, die Sie ergreifen könnten, sind: Entfernen von Stoppwörtern, Ausführen einer Tfidf-Vektorisierung und Entfernen von weniger gebräuchlichen oder sehr häufigen Wörtern ... Diese würden auch Merkmale entfernen, aber nur auf eine andere Weise. Wie gesagt, ich bin mir nicht sicher, was du machen willst. – lrnzcig
Ich habe Speicher Probleme wie Sie sich vorstellen können, aber ich habe es geschafft, es zu lösen. Danke für die Antwort – Adam