Avec la plupart de ces types d'applications, vous devrez générer une grande partie de votre propre code pour une tâche de classification statistique. Comme Lucka l'a suggéré, NLTK est l'outil parfait pour la manipulation du langage naturel en Python, à condition que votre objectif n'interfère pas avec la nature non commerciale de sa licence. Cependant, je suggérerais d'autres logiciels pour la modélisation. Je n'ai pas trouvé beaucoup de modèles d'apprentissage machine avancés puissants disponibles pour Python, je vais donc suggérer des binaires autonomes qui coopèrent facilement avec lui.
Vous pourriez être intéressé par le Toolkit for Advanced Discriminative Modeling , qui peut être facilement interfacé avec Python. Cela a été utilisé pour les tâches de classification dans divers domaines du traitement du langage naturel. Vous avez également un choix d'un certain nombre de modèles différents. Je suggère de commencer par la classification d'entropie maximale tant que vous êtes déjà familiarisé avec la mise en œuvre d'un classificateur Naive Bayes. Sinon, vous voudrez peut-être l'examiner et en coder un pour vraiment comprendre correctement la classification statistique en tant que tâche d'apprentissage automatique.
Les groupes de linguistique computationnelle de l'Université du Texas à Austin ont organisé des cours où la plupart des projets qui en sont issus ont utilisé ce formidable outil. Vous pouvez consulter la page du cours de Computational Linguistics II pour avoir une idée de la façon de le faire fonctionner et des applications précédentes qu'il a servies.
Un autre excellent outil qui fonctionne dans la même veine est Mallet . La différence entre Mallet est qu'il y a un peu plus de documentation et d'autres modèles disponibles, tels que les arbres de décision, et c'est en Java, ce qui, à mon avis, le rend un peu plus lent. Weka est une suite complète de différents modèles d'apprentissage automatique dans un gros package qui comprend des éléments graphiques, mais c'est vraiment principalement destiné à des fins pédagogiques, et ce n'est pas vraiment quelque chose que je mettrais en production.
Bonne chance dans votre tâche. La partie la plus difficile sera probablement la quantité d'ingénierie des connaissances requise au départ pour que vous puissiez classer le «groupe de départ» dont votre modèle apprendra. Cela doit être assez important, selon que vous faites une classification binaire (heureux vs triste) ou toute une gamme d'émotions (ce qui en demandera encore plus). Assurez-vous de conserver certaines de ces données d'ingénierie pour les tests, ou exécutez des tests décuplés ou supprimés-un pour vous assurer que vous faites du bon travail de prédiction avant de les publier. Et le plus important, amusez-vous! C'est la meilleure partie de la PNL et de l'IA, à mon avis.
Bonne chance avec ça.
Le sentiment est extrêmement contextuel, et la culture des tweets aggrave le problème car on ne vous donne pas le contexte de la plupart des tweets. Tout l'intérêt de Twitter est que vous pouvez tirer parti de l'énorme quantité de contexte partagé "du monde réel" pour emballer une communication significative dans un message très court.
S'ils disent que la vidéo est mauvaise, est-ce que cela veut dire mauvaise ou mauvaise ?
la source
Merci à tous pour vos suggestions, elles ont en effet été très utiles! J'ai fini par utiliser un classifieur bayésien naïf, que j'ai emprunté ici . J'ai commencé par l'alimenter avec une liste de bons / mauvais mots-clés, puis j'ai ajouté une fonction «apprendre» en utilisant les commentaires des utilisateurs. Cela s'est avéré assez agréable.
Les détails complets de mon travail dans un article de blog .
Encore une fois, votre aide a été très utile, alors merci!
la source
J'ai construit une liste de mots étiquetés avec sentiment. Vous pouvez y accéder à partir d'ici:
http://www2.compute.dtu.dk/pubdb/views/edoc_download.php/6010/zip/imm6010.zip
Vous trouverez un petit programme Python sur mon blog:
http://finnaarupnielsen.wordpress.com/2011/06/20/simplest-sentiment-analysis-in-python-with-af/
Cet article montre comment utiliser la liste de mots avec des phrases simples ainsi qu'avec Twitter.
Les approches de listes de mots ont leurs limites. Vous trouverez une enquête sur les limites de ma liste de mots dans l'article "A new ANEW: Evaluation d'une liste de mots pour l'analyse des sentiments dans les microblogs". Cet article est disponible sur ma page d'accueil.
Veuillez noter qu'il
unicode(s, 'utf-8')
manque un dans le code (pour des raisons pédagogiques).la source
De nombreux articles de recherche indiquent qu'un bon point de départ pour l'analyse des sentiments est d'examiner les adjectifs, par exemple, sont-ils des adjectifs positifs ou des adjectifs négatifs. Pour un court bloc de texte, c'est à peu près votre seule option ... Il existe des articles qui examinent des documents entiers, ou une analyse au niveau des phrases, mais comme vous le dites, les tweets sont assez courts ... Il n'y a pas de véritable approche magique pour comprendre le sentiment d'une phrase, donc je pense que votre meilleur pari serait de traquer l'un de ces documents de recherche et d'essayer d'obtenir leur ensemble de données d'adjectifs orientés positivement / négativement.
Maintenant, cela étant dit, le sentiment est spécifique au domaine et vous pourriez avoir du mal à obtenir un haut niveau de précision avec un ensemble de données à usage général.
Bonne chance.
la source
Je pense que vous aurez peut-être du mal à trouver ce que vous recherchez. La chose la plus proche que je connaisse est LingPipe , qui dispose d'une fonctionnalité d'analyse des sentiments et est disponible sous un type limité de licence open source, mais est écrit en Java.
En outre, les systèmes d'analyse des sentiments sont généralement développés en formant un système sur des données de critique de produit / film qui sont très différentes du tweet moyen. Ils vont être optimisés pour le texte avec plusieurs phrases, tous sur le même sujet. Je pense que vous feriez mieux de créer vous-même un système fondé sur des règles, peut-être basé sur un lexique de termes sentimentaux comme celui fourni par l'Université de Pittsburgh .
Consultez We Feel Fine pour une implémentation d'une idée similaire avec une très belle interface (et twitrratr ).
la source
Jetez un œil à l' outil d'analyse des sentiments de Twitter . Il est écrit en python et utilise le classificateur Naive Bayes avec apprentissage automatique semi-supervisé. La source peut être trouvée ici .
la source
Peut-être que TextBlob (basé sur NLTK et modèle) est le bon outil d'analyse des sentiments pour vous.
la source
Je suis tombé sur Natural Language Toolkit il y a quelque temps. Vous pourriez probablement l'utiliser comme point de départ. Il a également beaucoup de modules et d'addons, alors peut-être qu'ils ont déjà quelque chose de similaire.
la source
Une pensée un peu farfelue: vous pouvez essayer d'utiliser l'API Twitter pour télécharger un grand ensemble de tweets, puis classer un sous-ensemble de cet ensemble à l'aide d'émoticônes: un groupe positif pour ":)", ":]", ": D", etc. , et un autre groupe négatif avec ":(", etc.
Une fois que vous avez cette classification grossière, vous pouvez rechercher plus d'indices avec une analyse de fréquence ou de ngram ou quelque chose du genre.
Cela peut paraître idiot, mais des recherches sérieuses ont été faites à ce sujet (recherche «analyse des sentiments» et émoticônes). Vaut le détour.
la source
Il existe une API Twitter Sentiment de TweetFeel qui effectue une analyse linguistique avancée des tweets et peut récupérer des tweets positifs / négatifs. Voir http://www.webservius.com/corp/docs/tweetfeel_sentiment.htm
la source
Pour ceux qui s'intéressent au codage de Twitter Sentiment Analyis à partir de zéro, il existe un cours Coursera " Data Science " avec code python sur GitHub (dans le cadre du devoir 1 - lien ). Les sentiments font partie de l' AFINN-111 .
Vous pouvez trouver des solutions de travail, par exemple ici . En plus de la liste de sentiments AFINN-111, il existe une implémentation simple de la création d'une liste de termes dynamique basée sur la fréquence des termes dans les tweets qui ont un score positif / négatif (voir ici ).
la source