webentwicklung-frage-antwort-db.com.de

Ist es möglich, die Stimmung eines Benutzers anhand der Textstruktur zu erraten?

Ich gehe davon aus, dass ein Prozessor für natürliche Sprache verwendet werden muss, um den Text selbst zu analysieren. Welche Vorschläge haben Sie für einen Algorithmus, um die Stimmung eines Benutzers anhand des von ihm geschriebenen Texts zu ermitteln? Ich bezweifle, dass es sehr genau wäre, aber ich bin trotzdem interessiert.

EDIT: Ich bin kein Experte für Linguistik oder Verarbeitung natürlicher Sprache, daher entschuldige ich mich, wenn diese Frage zu allgemein oder zu dumm ist.

55
David Brown

Dies ist die Grundlage für einen Bereich der Verarbeitung natürlicher Sprache mit dem Namen Stimmungsanalyse . Obwohl Ihre Frage allgemein ist, ist sie sicherlich nicht dumm - diese Art von Recherche wird beispielsweise von Amazon über den Text in Produktbewertungen durchgeführt.

Wenn Sie dies ernst meinen, könnte eine einfache Version erreicht werden durch:

  1. Sammle einen Korpus positiver/negativer Gefühle . Wenn dies ein professionelles Projekt war, können Sie sich etwas Zeit nehmen und einen Korpus manuell mit Anmerkungen versehen, aber wenn Sie es eilig haben oder dies zunächst nur ausprobieren möchten, dann würde ich vorschlagen, den Sentiment Polarity Corpus von Bo Nachforschungen von Pang und Lillian Lee. Das Problem bei der Verwendung dieses Korpus ist, dass er nicht auf Ihre Domäne zugeschnitten ist (insbesondere verwendet der Korpus Filmkritiken), er sollte jedoch weiterhin anwendbar sein.

  2. Teilen Sie Ihren Datensatz in positive oder negative Sätze auf . Für das Korpus der Stimmungspolarität können Sie jede Bewertung in ihre zusammengesetzten Sätze aufteilen und dann das Kennzeichen für die allgemeine Stimmungspolarität (positiv oder negativ) auf alle diese Sätze anwenden. Teilen Sie diesen Korpus in zwei Teile auf - 90% sollten für das Training sein, 10% sollten für den Test sein. Wenn Sie Weka verwenden, kann es die Aufteilung des Korpus für Sie erledigen.

  3. Wenden Sie einen Algorithmus für maschinelles Lernen an (wie SVM, Naive Bayes, Maximale Entropie) auf den Trainingskorpus auf Word-Ebene. Dieses Modell heißt Wortsammlung Modell , das nur den Satz als die Wörter darstellt, aus denen er besteht. Dies ist dasselbe Modell, auf dem viele Spam-Filter ausgeführt werden. Für eine nette Einführung in die Algorithmen des maschinellen Lernens gibt es eine Anwendung mit dem Namen Weka , die eine Reihe dieser Algorithmen implementiert und Ihnen eine grafische Benutzeroberfläche bietet, mit der Sie spielen können. Sie können dann die Leistung des maschinell erlernten Modells anhand der Fehler testen, die beim Klassifizieren Ihres Testkörpers mit diesem Modell aufgetreten sind .

  4. Wende diesen Algorithmus für maschinelles Lernen auf deine Benutzerbeiträge an . Trennen Sie den Beitrag für jeden Benutzerbeitrag in Sätze und klassifizieren Sie sie anhand Ihres maschinell erlernten Modells.

Also ja, wenn Sie es ernst meinen, dann ist es erreichbar - auch ohne Erfahrung in der Computerlinguistik. Es wäre eine Menge Arbeit, aber auch mit Word-basierten Modellen können gute Ergebnisse erzielt werden.

Wenn Sie weitere Hilfe benötigen, können Sie sich gerne an mich wenden - ich helfe gerne anderen, die sich für NLP interessieren =]


Kleine Notizen -

  1. Das bloße Teilen eines Textsegments in Sätze ist ein Feld von NLP - genannt Satzgrenzenerkennung . Es gibt eine Reihe von Werkzeugen, OSS oder frei, um dies zu tun, aber für Ihre Aufgabe eine einfache Aufteilung in Leerzeichen und Interpunktion sollte gut sein.
  2. SVMlight ist auch ein weiterer zu berücksichtigender Maschinenlerner, und tatsächlich erledigt ihr induktiver SVM eine ähnliche Aufgabe wie das, was wir uns ansehen - indem er versucht, die Reuter-Artikel über "Unternehmensakquisitionen" mit 1000 positiven und 1000 negativen Beispielen zu klassifizieren .
  3. Das Umwandeln der Sätze in Merkmale zum Klassifizieren kann einige Arbeit erfordern. In diesem Modell ist jedes Wort ein Merkmal - dies erfordert das Tokenisieren des Satzes, dh das Trennen von Wörtern und Satzzeichen voneinander. Ein weiterer Tipp ist, alle separaten Word-Token in Kleinbuchstaben zu schreiben, sodass "Ich hasse dich" und "Ich hasse dich" beide als gleich gelten. Mit mehr Daten könnten Sie versuchen und auch einschließen, ob die Großschreibung bei der Klassifizierung hilft, ob jemand verärgert ist, aber ich glaube, Wörter sollten zumindest für eine anfängliche Anstrengung ausreichen.

Bearbeiten

Ich habe gerade LingPipe entdeckt, das in der Tat ein Tutorial zur Stimmungsanalyse unter Verwendung des von mir erwähnten Bo Pang und Lillian Lee Sentiment Polarity Corpus) enthält. Wenn Sie Java verwenden, ist dies möglicherweise ein hervorragendes Werkzeug, und selbst wenn nicht Durchläuft alle Schritte, die ich oben besprochen habe.

65
Smerity

Zweifellos ist es möglich, die Stimmung eines Benutzers anhand des von ihm eingegebenen Textes zu beurteilen, aber es wäre keine triviale Sache. Dinge, an die ich denken kann:

  • Großbuchstaben neigen dazu, Aufregung, Ärger oder Frustration zu bedeuten und sind sicherlich eine emotionale Reaktion, aber auch einige Neulinge tun dies, weil sie die Bedeutung nicht erkennen, so dass Sie dies nicht annehmen können, ohne sich anzusehen, was sie geschrieben haben (um sicherzugehen) es ist nicht alles in Großbuchstaben);
  • Hauptstädte sind wirklich nur eine Form der Betonung. Andere sind die Verwendung bestimmter aggressiver Farben (z. B. Rot) oder die Verwendung fetter oder größerer Schriftarten.
  • Einige Leute machen mehr Rechtschreib- und Grammatikfehler und Tippfehler, wenn sie sehr emotional sind.
  • Das Scannen nach Emoticons könnte Ihnen ein sehr klares Bild davon geben, was der Benutzer empfindet, aber auch hier könnte so etwas wie :) als glücklich, "Ich habe es Ihnen gesagt" oder sogar sarkastisch interpretiert werden.
  • Die Verwendung von Sprengsätzen hat tendenziell eine klare Bedeutung, ist aber wiederum nicht eindeutig. Die Umgangssprache vieler Menschen enthält routinemäßig bestimmte Wörter aus vier Buchstaben. Für einige andere Leute sagen sie vielleicht nicht einmal "Hölle", sondern "Teufel", so dass jede Explosion (sogar "saugt") von Bedeutung ist.
  • Gruppen von Interpunktionszeichen (wie @ # $ @ $ @) werden in einem Kontext, in dem Expletive nicht unbedingt angemessen sind, für Expletive ersetzt, sodass die Wahrscheinlichkeit geringer ist, dass sie umgangssprachlich sind.
  • Ausrufezeichen können auf Überraschung, Schock oder Verzweiflung hinweisen.

Vielleicht möchten Sie sich ansehen Fortschritte bei der schriftlichen Textanalyse oder sogar Bestimmung der Stimmung für ein Blog durch Kombination mehrerer Beweisquellen .

Schließlich ist zu beachten, dass geschriebene Texte in der Regel als negativer empfunden werden als sie tatsächlich sind. Dies ist beispielsweise ein häufiges Problem bei der E-Mail-Kommunikation in Unternehmen.

12
cletus

Ich kann nicht glauben, dass ich das ernst nehme ... unter der Annahme eines eindimensionalen Stimmungsraums:

  • Wenn der Text ein Fluchwort enthält, -10 Stimmung.
  • Ich denke Ausrufe würden tendenziell negativ sein, also -2 Stimmung.
  • Wenn ich frustriert bin, tippe ich Very ein. Kurz. Sätze. -5 Stimmung.

Je mehr ich darüber nachdenke, desto klarer ist es, dass viele dieser Bezeichner im Allgemeinen eine extreme Stimmung anzeigen, aber es ist nicht immer klar, welche Art Stimmung vorliegt.

3

Wenn Sie Schriftarten unterstützen, ist fetter roter Text wahrscheinlich ein verärgerter Benutzer. Grüne normal große Texte mit Schmetterlingsclipart ein glückliches.

3
Alex

Mein Gedächtnis ist zu diesem Thema nicht gut, aber ich glaube, ich habe Nachforschungen über die Grammatikstruktur des Textes und den allgemeinen Ton angestellt. Das könnte auch so einfach sein wie kürzere Wörter und Emotionsausdrücke (na ja, Expletiven sind ziemlich offensichtlich).

Bearbeiten : Ich stellte fest, dass die erste Person, die antwortete, einen im Wesentlichen ähnlichen Beitrag hatte. Es könnte tatsächlich eine ernsthafte Idee zu kürzeren Sätzen geben.

2
ilya n.

Ich stimme ojblass zu, dass dies eine ernste Frage ist.

Stimmungskategorisierung ist derzeit ein heißes Thema im Bereich Speech Recognition. Wenn Sie darüber nachdenken, muss eine IVR-Anwendung (Interactive Voice Response) verärgerte Kunden ganz anders behandeln als ruhige: Verärgerte Personen sollten mit der richtigen Erfahrung und Schulung schnell an menschliche Bediener weitergeleitet werden. Der Vokalton ist ein ziemlich zuverlässiger Indikator für Emotionen, der praktisch genug ist, damit Unternehmen darauf aus sind, dass dies funktioniert. Google "Speech Emotion Recognition", oder lesen Sie diesen Artikel , um mehr zu erfahren.

Die Situation sollte in webbasierten GUIs nicht anders sein. Unter erneuter Bezugnahme auf Cletus 'Kommentare sind die Analogien zwischen der Erkennung von Text- und Sprachemotionen interessant. Wenn eine Person GROSSBUCHSTABEN eingibt, wird gesagt, dass sie "schreit", als ob seine Stimme über eine Sprachschnittstelle in Lautstärke und Tonhöhe ansteigen würde. Das Erkennen von typisierten Schimpfwörtern ist analog zum "Keyword Spotting" von Schimpfwörtern in Sprachsystemen. Wenn eine Person verärgert ist, macht sie über eine grafische Benutzeroberfläche oder eine Sprachbenutzeroberfläche (Voice User Interface, VUI) mehr Fehler und kann an einen Menschen weitergeleitet werden.

Hier gibt es ein Forschungsgebiet für "multimodale" Emotionserkennung. Stellen Sie sich ein Webinterface vor, mit dem Sie auch sprechen können (in Anlehnung an die Implementierung von IBM/Motorola/Opera XHTML + Voice Profile Prototyp). Die Emotionserkennung könnte auf einer Kombination von Hinweisen aus der Sprache und der visuellen Eingabemodalität basieren.

1
Jim Ferrans

Die Analyse von Stimmung und Verhalten ist eine sehr ernsthafte Wissenschaft. Trotz der anderen verspottenden Antworten untersuchen die Strafverfolgungsbehörden seit Jahren die Kategorisierung der Stimmung. Verwendungen in Computern, von denen ich gehört habe, hatten im Allgemeinen mehr Kontext (Timing-Informationen, Sprachmuster, Geschwindigkeit beim Kanalwechsel). Ich denke, dass Sie mit einigem Erfolg feststellen können, ob ein Benutzer in einer bestimmten Stimmung ist, indem Sie ein neuronales Netzwerk mit Stichproben aus zwei bekannten Gruppen trainieren: wütend und nicht wütend. Viel Glück bei deinen Bemühungen.

1
ojblass

Ich denke, mein Algorithmus ist ziemlich einfach, aber warum nicht Smilics durch den Text berechnen? :) vs :(

Offensichtlich löst sich der Text ":) :) :) :)" zu einem zufriedenen Benutzer auf, während ":( :( :(" sich sicherlich zu einem traurigen auflöst. Viel Spaß!

1
SadSido

Fuzzy Logic wird es wohl tun. In jedem Fall ist es recht einfach, mit mehreren Regeln zur Bestimmung der Stimmung des Benutzers zu beginnen und dann die "Engine" zu erweitern und mit genaueren und raffinierteren zu kombinieren.

0
bv.

Wenn ein Benutzer folgende Zeichen eingibt, ist er sehr wütend und versucht, ihn zuerst zu beruhigen ...

`K` 

`k`
0
silentsudo

Ja.

Ob Sie es schaffen oder nicht, ist eine andere Geschichte. Das Problem scheint zunächst vollständig zu sein.

Nun, wenn Sie Tastatureingaben hatten, sollten Sie in der Lage sein, es herauszufinden.

0
Joshua