Bei den meisten dieser Arten von Anwendungen müssen Sie einen Großteil Ihres eigenen Codes für eine statistische Klassifizierungsaufgabe rollen. Wie Lucka vorgeschlagen hat, ist NLTK das perfekte Tool für die Manipulation natürlicher Sprachen in Python, solange Ihr Ziel den nichtkommerziellen Charakter seiner Lizenz nicht beeinträchtigt. Ich würde jedoch andere Softwarepakete für die Modellierung vorschlagen. Ich habe nicht viele stark fortgeschrittene Modelle für maschinelles Lernen gefunden, die für Python verfügbar sind, daher werde ich einige eigenständige Binärdateien vorschlagen, die problemlos damit zusammenarbeiten können.
Möglicherweise interessieren Sie sich für das Toolkit für erweiterte diskriminierende Modellierung , das problemlos mit Python verbunden werden kann. Dies wurde für Klassifizierungsaufgaben in verschiedenen Bereichen der Verarbeitung natürlicher Sprache verwendet. Sie haben auch eine Auswahl verschiedener Modelle. Ich würde vorschlagen, mit der Klassifizierung der maximalen Entropie zu beginnen, solange Sie bereits mit der Implementierung eines Naive Bayes-Klassifizierers vertraut sind. Wenn nicht, möchten Sie vielleicht einen Blick darauf werfen und einen Code erstellen, um ein gutes Verständnis der statistischen Klassifizierung als maschinelle Lernaufgabe zu erhalten.
Die Computerlinguistik-Gruppen der University of Texas in Austin haben Kurse abgehalten, in denen die meisten Projekte, die aus ihnen hervorgegangen sind, dieses großartige Tool verwendet haben. Auf der Kursseite für Computerlinguistik II können Sie sich ein Bild davon machen, wie es funktioniert und welche früheren Anwendungen es bedient hat.
Ein weiteres großartiges Werkzeug, das auf die gleiche Weise funktioniert, ist Mallet . Der Unterschied zwischen Mallet besteht darin, dass etwas mehr Dokumentation und einige weitere Modelle verfügbar sind, z. B. Entscheidungsbäume, und dass es sich um Java handelt, was es meiner Meinung nach etwas langsamer macht. Weka ist eine ganze Reihe verschiedener Modelle für maschinelles Lernen in einem großen Paket, das einige grafische Elemente enthält, aber eigentlich hauptsächlich für pädagogische Zwecke gedacht ist und nicht wirklich etwas ist, das ich in Produktion bringen würde.
Viel Glück bei Ihrer Aufgabe. Der wirklich schwierige Teil wird wahrscheinlich die Menge an Knowledge Engineering sein, die im Voraus erforderlich ist, damit Sie den „Startwert“ klassifizieren können, von dem Ihr Modell lernen wird. Es muss ziemlich groß sein, je nachdem, ob Sie eine binäre Klassifizierung (glücklich gegen traurig) oder eine ganze Reihe von Emotionen durchführen (was noch mehr erfordert). Stellen Sie sicher, dass Sie einige dieser technischen Daten zum Testen bereithalten, oder führen Sie zehnfache oder entfernte Tests durch, um sicherzustellen, dass Sie tatsächlich gute Vorhersagen treffen, bevor Sie sie veröffentlichen. Und vor allem viel Spaß! Dies ist meiner Meinung nach der beste Teil von NLP und AI.
Viel Glück damit.
Die Stimmung ist enorm kontextabhängig, und die Tweeting-Kultur verschlimmert das Problem, da Sie für die meisten Tweets nicht den Kontext erhalten . Der springende Punkt bei Twitter ist, dass Sie die große Menge an gemeinsam genutzten "realen" Kontexten nutzen können, um eine aussagekräftige Kommunikation in einer sehr kurzen Nachricht zu packen.
Wenn sie sagen, dass das Video schlecht ist, bedeutet das schlecht oder schlecht ?
quelle
Vielen Dank an alle für Ihre Vorschläge, sie waren in der Tat sehr nützlich! Am Ende habe ich einen naiven Bayes'schen Klassifikator verwendet, den ich hier ausgeliehen habe . Ich begann damit, es mit einer Liste von guten / schlechten Schlüsselwörtern zu füttern und fügte dann eine "Lern" -Funktion hinzu, indem ich Benutzer-Feedback verwendete. Es stellte sich heraus, dass es ziemlich gut funktionierte.
Die vollständigen Details meiner Arbeit wie in einem Blogbeitrag .
Auch hier war Ihre Hilfe sehr nützlich, also danke!
quelle
Ich habe eine Wortliste mit Sentiment erstellt. Sie können von hier aus darauf zugreifen:
http://www2.compute.dtu.dk/pubdb/views/edoc_download.php/6010/zip/imm6010.zip
Ein kurzes Python-Programm finden Sie in meinem Blog:
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.
Word-Listen-Ansätze haben ihre Grenzen. Eine Untersuchung der Einschränkungen meiner Wortliste finden Sie im Artikel "Eine neue ANEW: Auswertung einer Wortliste für die Stimmungsanalyse in Microblogs". Dieser Artikel ist auf meiner Homepage verfügbar.
Bitte beachten Sie, dass
unicode(s, 'utf-8')
im Code ein fehlt (aus pädagogischen Gründen).quelle
Viele Forschungsarbeiten weisen darauf hin, dass ein guter Ausgangspunkt für die Stimmungsanalyse die Betrachtung von Adjektiven ist, z. B. positive oder negative Adjektive. Für einen kurzen Textblock ist dies so ziemlich Ihre einzige Option ... Es gibt Artikel, die ganze Dokumente oder eine Analyse auf Satzebene betrachten, aber wie Sie sagen, Tweets sind ziemlich kurz ... Es gibt keinen wirklich magischen Ansatz, um das zu verstehen Ich denke, Ihre beste Wahl wäre es, eine dieser Forschungsarbeiten aufzuspüren und zu versuchen, ihren Datensatz positiv / negativ orientierter Adjektive zu erhalten.
Nachdem dies gesagt wurde, ist die Stimmung domänenspezifisch, und es könnte schwierig sein, mit einem Allzweckdatensatz ein hohes Maß an Genauigkeit zu erzielen.
Viel Glück.
quelle
Ich denke, es fällt Ihnen möglicherweise schwer, das zu finden, wonach Sie suchen. Das nächste, was ich kenne, ist LingPipe , das über einige Funktionen zur Stimmungsanalyse verfügt und unter einer begrenzten Art von Open-Source-Lizenz verfügbar ist, jedoch in Java geschrieben ist.
Außerdem werden Stimmungsanalysesysteme normalerweise entwickelt, indem ein System auf Produkt- / Filmüberprüfungsdaten trainiert wird, das sich erheblich vom durchschnittlichen Tweet unterscheidet. Sie werden für Text mit mehreren Sätzen zum gleichen Thema optimiert. Ich vermute, Sie sollten besser selbst ein regelbasiertes System entwickeln, das möglicherweise auf einem Lexikon von Stimmungsbegriffen basiert, wie es die Universität von Pittsburgh bietet .
Schauen Sie sich We Feel Fine an, um eine ähnliche Idee mit einer wirklich schönen Oberfläche (und Twitrratr ) umzusetzen .
quelle
Schauen Sie sich das Twitter-Tool zur Stimmungsanalyse an . Es ist in Python geschrieben und verwendet den Naive Bayes-Klassifikator mit halbüberwachtem maschinellem Lernen. Die Quelle finden Sie hier .
quelle
Vielleicht ist TextBlob (basierend auf NLTK und Muster) das richtige Stimmungsanalyse-Tool für Sie.
quelle
Ich bin vor einiger Zeit auf das 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.
quelle
Etwas verrückter Gedanke: Sie könnten versuchen, mithilfe der Twitter-API eine große Menge von Tweets herunterzuladen und dann eine Teilmenge dieser Menge mithilfe von 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 nach weiteren Hinweisen mit Frequenz- oder Grammanalyse oder etwas in dieser Richtung suchen.
Es mag albern erscheinen, aber diesbezüglich wurden ernsthafte Untersuchungen durchgeführt (Suche nach "Stimmungsanalyse" und Emoticon). Einen Blick wert.
quelle
Es gibt eine Twitter Sentiment API von TweetFeel, die erweiterte sprachliche Analysen von Tweets durchführt und positive / negative Tweets abrufen kann. Siehe http://www.webservius.com/corp/docs/tweetfeel_sentiment.htm
quelle
Für diejenigen, die Twitter Sentiment Analyis von Grund auf neu codieren möchten, gibt es einen Coursera-Kurs " Data Science " mit Python-Code auf GitHub (als Teil von Aufgabe 1 - Link ). Die Gefühle sind Teil des AFINN-111 .
Sie können Arbeitslösungen, zum Beispiel finden sich hier . Zusätzlich zur AFINN-111-Stimmungsliste gibt es eine einfache Implementierung zum Erstellen einer dynamischen Begriffsliste basierend auf der Häufigkeit von Begriffen in Tweets mit einem Pos / Neg-Score (siehe hier ).
quelle