Der folgende Blogbeitrag soll einen kurzen Überblick über die Grundlagen der Sentimentanalyse und mögliche Anwendungsfelder bieten.
Was ist Sentiment Analyse?
Sentiment Analyse (häufig auch ‘opinion mining’ genannt) ist ein Teilgebiet des Natural Language Processings (NLP). Unter einem Sentiment versteht man eine Empfindung oder eine affektive bzw. emotionale Einstellung.
Ziel einer Sentimentanalyse ist somit, die emotionale Einstellung einer Person gegenüber einer Sache oder eines Ereignisses aus einer Texteinheit zu extrahieren und zu quantifizieren.
Anwendungsfelder
Die am häufigsten verwendeten Daten in der praktischen Anwendung sind Kundenrezensionen und Social Media Daten (z.B. von Twitter oder Facebook). Mögliche Ziele können sein:
- - Produktrezensionen in positiv/negativ klassifizieren
- - Häufige Kritikpunkte an einem Produkt aus Kundenrezensionen identifizieren
- - Analyse der Bewertung eines neuen Produkts durch (potenzielle) Kunden auf Social Media Kanälen
- - Imageanalysen für Marken oder Produkte
- - Euphorie / Unsicherheit von Anlegern an der Börse ermitteln
- - Bewertung politischer Entscheidungen in Medien und Social Media erfassen
- - Sozioökonomische und geographische Unterschiede in der Bewertung von Produkten erfassen
Bag of Words Modell
Auch wenn es verschiedene Herangehensweisen für Sentiment Analysen gibt, ist die am weitesten verbreitete das sogenannte ‘Bag of Words’ Modell. Dabei wird ein Satz als Multimenge seiner Wörter betrachtet, also als Menge im mathematischen Sinne, in welcher Elemente jedoch mehrfach vorkommen können. Somit werden in diesem Modell Grammatik und Reihenfolge der Wörter nicht berücksichtigt. Das Ziel dieses Modells ist es, eine numerische Repräsentation von Textdaten zu finden, auf welche anschließend Machine Learning Algorithmen angewendet werden können. Jedes Wort, dass im Korpus von Texteinheiten (z.B. einem Datensatz mit Kundenrezensionen) vorkommt, stellt ein eigenes Feature dar. Jede Texteinheit (also jede Rezension) bekommt nun einen Wert zugewiesen, welcher angibt, ob (und ggf. wie präsent) ein Wort in der Texteinheit ist. Im einfachsten Falle verwendet man dazu Häufigkeiten. Es gibt jedoch auch andere Gewichtungsmaße (z.B. TD-IDF), die in der Praxis wesentlich häufiger verwendet werden. Ein kurzes Beispiel soll das Bag of Words Modell veranschaulichen:
- 1. Ich finde dieses Buch ist sehr unterhaltsam.
- 2. Dieses Buch ist unterhaltsam und es ist spannend.
Aus diesen beiden Texteinheiten wird die folgende Liste von Wörtern erstellt:
[“Ich”, “finde”, “dieses”, “Buch”, “ist”, “sehr”, “unterhaltsam”, “es”, “und”, “spannend”]
Jedes dieser Wörter stellt nun ein eigenes Feature dar und für die beiden Texteinheiten ergibt sich die folgende numerische Repräsentation:
- 1. [1, 1, 1, 1, 1, 1, 1, 0, 0, 0]
- 2. [0, 0, 1, 1, 2, 0, 1, 1, 1, 1]
N-Gramme
Da das einfache Bag of Word Modell keinerlei Kontext berücksichtigt, können speziell in Bezug auf das Sentiment einer Person Probleme auftreten. So werden im Bag of Words Modell die folgenden beiden Sätze identisch repräsentiert, obwohl sie ein gegensätzliches Sentiment tragen:
- 1. Das Buch ist schlecht geschrieben, insgesamt nicht empfehlenswert!
- 2. Das Buch ist nicht schlecht geschrieben, insgesamt empfehlenswert!
Um etwas mehr Kontext und wichtige Strukturen wie Negationen zu berücksichtigen, kann ein Bag of Words Modell mit N-Grammen erweitert werden. N-Gramme sind Textfragmente bestehend aus N aufeinander folgenden Wörtern. Für N=2 (“Bigramme”) ergibt sich für (1):
[“Das Buch”, “Buch ist”, “ist schlecht”, “schlecht geschrieben”, “geschrieben insgesamt”, “insgesamt nicht”, “nicht empfehlenswert”]
Vereinfacht gesagt erlauben längere N-Gramme mehr Kontext als kürzere. Da jedoch immer auch alle N-Gramme niedrigerer Ordnung erzeugt werden, steigt die Anzahl der extrahierten Features. In der Praxis werden bei kürzeren Texteinheiten wie Rezensionen oder Tweets daher meist Uni- und Bigramme verwendet.
Preprocessing, Stopwords und Lemmatization
Wie alle Arten von Daten, erfordern auch Textdaten eine gewisse Vorbereitung, um effizienter von Machine Learning Modellen genutzt werden zu können. Da nicht alle Wörter gleichermaßen relevant für das Sentiment einer Texteinheit sind, können einige Wörter entfernt werden, ohne das Sentiment zu verändern. Dies sind vor allem Wörter, die allgemein sehr häufig verwendet werden und daher wenig Sentiment tragen. Diese Wörter (z.B.'der', 'die', 'das', 'und', 'oder', 'doch', 'weil', 'an', 'in', 'von') , werden als Stopwords bezeichnet. Mittels vordefinierter Stopword Listen können diese Wörter erkannt und herausgefiltert werden.
Weitere Preprocessing Techniken sind Ersetzen von bestimmten Ausdrücken (z.B. Synonymen oder Abkürzungen), Entfernen von Groß- und Kleinschreibung und Entfernen von Satzzeichen und Sonderzeichen.
Ein weiterer wichtiger Schritt ist die Umwandlung von Wörtern in ihre Grundform, so haben z.B. “lesen”, “gelesen” und “las” alle das gleiche Lemma, nämlich “lesen”.
Diese Techniken helfen, die Anzahl der Features zu limitieren und irrelevante Informationen auszuschließen, sorgen somit also für weniger Noise in den Daten und eine bessere Modellperformance.
Gewichtung
Anstelle der einfachen Häufigkeit, als numerische Repräsentation eines N-Grams in einer Texteinheit, können verschiedene Gewichtungsmetriken verwendet werden. Häufig verwendet wird der TF-IDF Score, der die Häufigkeit eines Wortes in einer Texteinheit ins Verhältnis zu seiner Häufigkeit im gesamten Korpus setzt. Ein hoher TF-IDF Score gibt somit an, dass ein N-Gram relativ häufig in einer Texteinheit vorkommt, verglichen mit seiner Häufigkeit im gesamten Korpus. Somit erhalten N-Gramme die allgemein häufig vorkommen ein niedriges Gewicht.
Klassifikation vs. Regression
Nachdem diese Schritte vorgenommen wurden, liegen die Daten in einer Form vor, die die Anwendung von Machine Learning Algorithmen erlaubt. Je nachdem, ob es sich um Klassifikation (positiv/negativ) oder Regression (z.B. Ratings / “Sterne-Bewertungen”) handelt, können nun entsprechende Modellklassen, wie z.B. Support Vector Machines, Naive Bayes Classifier oder Logistische Regression für Klassifikation oder Lineare Regression, Support Vector Regression oder Neuronale Netze für Regression eingesetzt werden. Von diesem Schritt an, können (und sollten!) alle gängigen Machine Learning Techniken zur Modellwahl, Feature Selection, Parameter Tuning und Modellevaluation wie sonst auch verwendet werden.
Literaturempfehlung
Bing Liu (2015) - Sentiment Analysis: Mining Opinions, Sentiments, and Emotions