it-swarm.com.de

Sentimentanalyse für Twitter in Python

Ich suche nach einer Open-Source-Implementierung, vorzugsweise in Python, der Textual Sentiment Analysis ( http://en.wikipedia.org/wiki/Sentiment_analysis ). Kennt jemand eine solche Open Source-Implementierung, die ich verwenden kann?

Ich schreibe eine Anwendung, die Twitter nach einem Suchbegriff durchsucht, beispielsweise "youtube", und "glückliche" Tweets vs. "traurige" Tweets zählt. Ich verwende die Appengine von Google, also in Python. Ich möchte die zurückgesendeten Suchergebnisse von Twitter klassifizieren können, und ich möchte dies in Python tun ... Ich konnte bisher keinen solchen Sentiment-Analysator finden, insbesondere nicht in Python. Kennen Sie eine solche Open Source-Implementierung, die ich verwenden kann? Vorzugsweise ist dies bereits in Python, aber wenn nicht, kann ich es hoffentlich in Python übersetzen.

Beachten Sie, die Texte, die ich analysiere, sind sehr kurz, sie sind Tweets. Idealerweise ist dieser Klassifikator für solche kurzen Texte optimiert.

Übrigens, Twitter unterstützt die ":)" - und ":(" - Operatoren auf der Suche, die genau dies tun sollen, aber leider ist die von ihnen bereitgestellte Klassifizierung nicht so toll, also dachte ich mir, ich könnte es selbst versuchen .

Vielen Dank!

Übrigens, eine frühe Demo ist hier und der Code, den ich bis jetzt habe, ist hier und ich würde es lieben, es mit jedem interessierten Entwickler zu öffnen.

84
Ran

Bei den meisten dieser Anwendungen müssen Sie einen Großteil Ihres eigenen Codes für eine statistische Klassifizierungsaufgabe rollen. Wie von Lucka vorgeschlagen, ist NLTK das perfekte Werkzeug für die Manipulation natürlicher Sprache in Python, solange Ihr Ziel nicht den nicht kommerziellen Charakter der Lizenz beeinträchtigt. Ich würde jedoch andere Softwarepakete für die Modellierung vorschlagen. Ich habe nicht viele starke fortgeschrittene maschinelle Lernmodelle für Python gefunden, daher werde ich einige eigenständige Binärdateien vorschlagen, die leicht damit arbeiten.

Möglicherweise interessieren Sie sich für Das Toolkit für die erweiterte Unterscheidungsmodellierung , das leicht mit Python verbunden werden kann. Dies wurde für Klassifizierungsaufgaben in verschiedenen Bereichen der Verarbeitung natürlicher Sprache verwendet. Sie haben auch die Wahl zwischen verschiedenen Modellen. Ich würde vorschlagen, mit der Maximum Entropy-Klassifikation zu beginnen, solange Sie bereits mit der Implementierung eines Naive Bayes-Klassifikators vertraut sind. Wenn nicht, möchten Sie vielleicht einen Blick darauf werfen und einen Code schreiben, um wirklich ein gutes Verständnis der statistischen Klassifizierung als eine maschinelle Lernaufgabe zu erhalten.

Die Computerlinguistik-Gruppen der University of Texas in Austin haben Kurse abgehalten, bei denen die meisten Projekte, die von ihnen ausgehen, dieses großartige Werkzeug verwendet haben. Auf der Kursseite zu Computational Linguistics II können Sie sich ein Bild machen, wie es funktioniert und welche früheren Anwendungen es bedient hat.

Ein weiteres großartiges Werkzeug, das auf dieselbe Weise funktioniert, ist Mallet . Der Unterschied zwischen Mallet ist, dass es ein wenig mehr Dokumentation und mehr Modelle gibt, wie etwa Entscheidungsbäume, und dies in Java, was meiner Meinung nach etwas langsamer wird. Weka ist eine ganze Reihe verschiedener maschineller Lernmodelle in einem großen Paket, das grafisches Material enthält, aber eigentlich hauptsächlich für pädagogische Zwecke gedacht ist und nicht wirklich etwas ist, das ich in Produktion bringe.

Viel Glück bei deiner Aufgabe. Der wirklich schwierige Teil wird wahrscheinlich die Menge an Knowledge Engineering sein, die im Vorfeld erforderlich ist, um den "Startwert" zu klassifizieren, aus dem Ihr Modell lernen wird. Es muss ziemlich groß sein, abhängig davon, ob Sie eine binäre Klassifizierung (glücklich vs. traurig) oder eine ganze Reihe von Emotionen (die noch mehr erfordern) durchführen. Stellen Sie sicher, dass Sie einige dieser technischen Daten zu Testzwecken zur Hand haben, oder führen Sie zehnfache Tests aus oder entfernen Sie einen Test, um sicherzustellen, dass Sie wirklich gute Vorhersagen machen, bevor Sie sie auf den Markt bringen. Und vor allem viel Spaß! Dies ist meiner Meinung nach der beste Teil von NLP und AI.

41
Robert Elwell

Viel Glück damit.

Das Gefühl ist enorm kontextabhängig, und die Tweeterkultur verschlimmert das Problem, weil Sie erhalten nicht den Kontext für die meisten Tweets. Der springende Punkt von Twitter ist, dass Sie die riesige Menge an gemeinsam genutzten "realen" Kontexten nutzen können, um sinnvolle Kommunikation in eine sehr kurze Nachricht zu packen.

Wenn sie sagen, dass das Video schlecht ist, bedeutet das schlecht oder schlecht ?

Ein Professor für Linguistik lehrte eines Tages zu ihrer Klasse. "Auf Englisch," Sie sagte: "Ein Doppelnegativ bildet ein positives. In einigen Sprachen ist jedoch ein negatives Negativ, wie Russisch, noch immer ein negatives. Allerdings gibt es keine Sprache, in der das Doppelte vorhanden ist Positiv kann ein Negativ bilden. "

Eine Stimme aus dem hinteren Teil des Raumes "Ja...."

74
MarkusQ

Vielen Dank an alle für Ihre Vorschläge, sie waren wirklich sehr nützlich! Ich habe am Ende einen Naive Bayes'schen Klassifikator verwendet, den ich mir von hier geliehen habe. Ich begann, indem ich eine Liste mit guten/schlechten Schlüsselwörtern fügte, und fügte dann eine Lernfunktion hinzu, indem Benutzerfeedback verwendet wurde. Es stellte sich heraus, dass es ziemlich schön war.

Die vollständigen Details meiner Arbeit wie in einem Blog-Post .

Auch hier war Ihre Hilfe sehr nützlich, also vielen Dank!

17
Ran

Ich habe eine mit Sentiment beschriftete Wortliste erstellt. Sie können von hier aus darauf zugreifen:

http://www2.compute.dtu.dk/pubdb/views/edoc_download.php/6010/Zip/imm6010.Zip

In meinem Blog finden Sie ein kurzes Python-Programm: 

http://finnaarupnielsen.wordpress.com/2011/06/20/simplest-sentiment-analysis-in-python-with-af/

Dieser Beitrag zeigt, wie die Wortliste sowohl mit einzelnen Sätzen als auch mit Twitter verwendet wird.

Wortlistenansätze haben ihre Grenzen. Eine Untersuchung der Einschränkungen meiner Word-Liste finden Sie im Artikel "Eine neue ANEW: Auswertung einer Word-Liste für die Analyse der Gefühle in Mikroblogs". Dieser Artikel ist auf meiner Homepage verfügbar.

Bitte beachten Sie, dass eine unicode(s, 'utf-8') (aus pädagogischen Gründen) nicht im Code enthalten ist.

13

Viele Forschungsarbeiten deuten darauf hin, dass ein guter Ausgangspunkt für die Stimmungsanalyse Adjektive ist, z. B. positive Adjektive oder negative Adjektive. Für einen kurzen Textblock ist dies so ziemlich die einzige Option ... Es gibt Papiere, die ganze Dokumente betrachten oder die Analyse auf Satzebene, aber wie Sie sagen, Tweets sind recht kurz ... Gefühl eines Satzes, also denke ich, Ihre beste Wette wäre es, eine dieser Forschungsarbeiten zu jagen und zu versuchen, ihren Datensatz von positiv/negativ orientierten Adjektiven zu erhalten.

Nun, dies wurde gesagt, die Stimmung ist domänenspezifisch, und es könnte schwierig sein, mit einem Allzweck-Datensatz ein hohes Maß an Genauigkeit zu erreichen.

Viel Glück.

9
Ben Coe

Ich denke, es fällt Ihnen möglicherweise schwer, das zu finden, wonach Sie suchen. Das, was ich am besten kenne, ist LingPipe , das einige Sentiment-Analysefunktionen bietet und unter einer begrenzten Art von Open-Source-Lizenz verfügbar ist, aber in Java geschrieben ist.

Sentiment-Analysesysteme werden normalerweise entwickelt, indem ein System mit Produkt-/Filmprüfungsdaten trainiert wird, die sich erheblich vom durchschnittlichen Tweet unterscheiden. Sie werden für Text mit mehreren Sätzen optimiert, die sich auf dasselbe Thema beziehen. Ich nehme an, Sie würden besser ein regelbasiertes System entwickeln, vielleicht basierend auf einem Lexikon von Gefühlsausdrücken wie dem, was die University of Pittsburgh bietet .

Check out We Feel Fine für eine Implementierung einer ähnlichen Idee mit einem wirklich schönen Interface (und twitrratr ).

4
Stompchicken

Werfen Sie einen Blick auf Twitter - Analyse der Sentimentanalyse . Es ist in Python geschrieben und verwendet Naive Bayes-Klassifizierer mit halb-überwachtem maschinellem Lernen. Die Quelle finden Sie hier .

2
cyhex

Ich bin vor einiger Zeit auf Natural Language Toolkit gestoßen. Sie könnten es wahrscheinlich als Ausgangspunkt verwenden. Es hat auch viele Module und Addons, also haben sie vielleicht schon etwas ähnliches.

1
Luka Marinko

Vielleicht ist TextBlob (basierend auf NLTK und Pattern) das richtige Werkzeug für die Sentimentanalyse.

1
Sonson123

Für diejenigen, die an Twitter Sentiment Analysis interessiert sind, gibt es einen Coursera-Kurs " Data Science " mit Python-Code auf GitHub (als Teil von Aufgabe 1 - link ). Die Gefühle sind Teil der AFINN-111 .

Arbeitslösungen finden Sie zum Beispiel hier . Zusätzlich zur AFINN-111-Sentiment-Liste gibt es eine einfache Implementierung des Aufbaus einer dynamischen Term-Liste basierend auf der Häufigkeit von Termen in Tweets, die einen pos/neg-Score haben (siehe hier ).

0
philshem

Es gibt eine Twitter Sentiment API von TweetFeel, die fortgeschrittene linguistische Analysen von Tweets durchführt und positive/negative Tweets abrufen kann. Siehe http://www.webservius.com/corp/docs/tweetfeel_sentiment.htm

0

Etwas verrückter Gedanke: Sie könnten versuchen, mithilfe der Twitter-API eine große Menge von Tweets herunterzuladen und dann eine Teilmenge dieser Gruppe mit Emoticons zu klassifizieren: eine positive Gruppe für ":)", ":]", ": D" usw und eine andere negative Gruppe mit ":(" usw.

Sobald Sie diese grobe Klassifizierung haben, können Sie mit Hilfe der Häufigkeits- oder Ngram-Analyse oder etwas Ähnlichem nach weiteren Hinweisen suchen.

Es mag dumm erscheinen, aber dazu wurde ernsthaft geforscht (Suche nach "Gefühlsanalyse" und Emoticon). Einen Blick wert. 

0
user18015