J'essaie de répliquer Go Et Al. Twitter sentiment analyse qui peut être trouvé ici http://help.sentiment140.com/for-students Le problème que je rencontre est le nombre de fonctionnalités est 364464. J'utilise actuellement nltk et nltk.NaiveBayesClassifier pour ce faire où les tweets contient une réplication des tweets 1,600,000 et là la polarité:Python nltk classifier avec grand ensemble de fonctionnalités (Répliquer 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))
Tout ne prend pas beaucoup de temps en dehors de la fonction extract_features
def extract_features(tweet, featureList):
tweet_words = set(tweet)
features = {}
for word in featureList:
features['contains(%s)' % word] = (word in tweet_words)
return features
en effet, pour chaque tweet est la création d'un dictionnaire de taille 364464 pour représenter si quelque chose est présent ou non.
Existe-t-il un moyen de rendre ceci plus rapide ou plus efficace sans réduire le nombre de fonctionnalités comme dans ce document?
Je me demande pourquoi vous ne voulez pas utiliser les mêmes techniques que dans le document. Quoi qu'il en soit, les étapes de base de la PNL que vous pourriez prendre incluent: supprimer les mots vides, faire une vectorisation tfidf et supprimer les mots moins communs ou très communs ... Ceux-ci supprimeraient également des fonctionnalités, mais d'une manière différente. Comme je l'ai dit, je ne suis pas vraiment sûr de ce que vous voulez faire. – lrnzcig
Je courais dans les problèmes de mémoire comme vous pouvez l'imaginer, mais j'ai réussi à le résoudre. Merci pour la réponse – Adam