Du willst wissen, was man mit Tableau aus einem Online-Reporting alles rausholen kann? Wir haben die neue Staffel Kitchen Impossible zum Anlass genommen, um Dir genau das zu zeigen. Hier geht’s zum Journal-Beitrag!
Mit einer „Bag-of-Words“ in die Welt der Textanalysen einsteigen
Sollen Textdaten in Machine Learning-Modellen verwendet werden, ergibt sich ein Problem: Die Methoden des Machine Learnings verstehen Worte nicht, sondern benötigen Zahlen, um damit zu rechnen. Nun können Textdaten, zum Beispiel Google-Bewertungen, ganz unterschiedlich sein: einige sind lang und komplex, andere sind kurz und einfach geschrieben. Wie können diese unterschiedlichen Textdaten dann so in Zahlen umgewandelt werden, dass wir als Data Scientists damit arbeiten können?
Eine Lösung kann das sogenannte Bag-of-Words-Modell sein. Dieser Ansatz ist einfach und leicht verständlich, aber wird dennoch in vielen Bereichen erfolgreich eingesetzt. Grundsätzlich funktioniert das Bag-of-Words-Modell so, dass Texte in Form von Häufigkeiten einzelner Wörter repräsentiert werden. Durch Zählen der Wortvorkommen können so ganze Sätze in Vektoren umgewandelt werden. Der Aufbau der Sätze oder die Ordnung der Wörter spielt dabei keine Rolle. Es wird lediglich betrachtet, ob ein Wort vorkommt, aber nicht wo es im Dokument steht – ganz im Sinne einer „Tasche voller Worte“ (Bag-of-Words).
Um das Ganze zu veranschaulichen haben wir uns drei Kununu-Bewertungen aus unserem SKOPOS-Universum herausgesucht. Du kannst Dich also auf Beispiele aus der realen Welt freuen.
Einfaches Beispiel oder die ideale Welt der Textanalysen
In der idealen Welt der Textanalysen, wäre jedes Beispiel so einfach wie das folgende: drei einfache Sätze mit sehr ähnlichen Wörtern, die etwas ähnliches aussagen. Die folgende Tabelle zeigt in den Zeilen drei Sätze und in den Spalten alle Wörter, die in diesen drei Texten vorkommen. Jedes Wort wird, wie oben bereits erklärt, durch einen Vektor von Zahlen repräsentiert. Dabei entspricht jeder Eintrag in dem Vektor einem Wort. Die Zahl an einer Stelle im Vektor gibt an, wie häufig das Wort in dem Text vorkommt. Die Häufigkeit des Auftretens jedes Worts wird dann als Merkmal für das Training eines Algorithmus verwendet.
Möchtest Du also zum Beispiel wissen, welche Texte über Kund:innen sprechen, dann schaust Du Dir die Vektor-Einträge an, die zum Wort „Kunden“ gehören. Ist der Eintrag > 0 wird über das Thema „Kunde“ gesprochen. Bestimmt schweben Dir jetzt schon einige Anwendungsbeispiele im Kopf herum, dazu aber später mehr.
Ähnlichkeiten berechnen
Auch mit diesem einfachen Ansatz, lassen sich bereits spannende Fragen untersuchen: Möchte man zum Beispiel schauen, wie ähnlich sich zwei Sätze sind, kann dies durch die Berechnung der Ähnlichkeiten zwischen den Vektoren umgesetzt werden. Ein klassisches Maß für die Ähnlichkeit ist die so genannte „Cosine Similarity“ (Cosinus-Ähnlichkeit). Diese beschreibt den Winkel (Bogenmaß) zwischen den zwei Vektoren. Im Grunde heißt es: je besser die 1en der Vektoren sich überschneiden, desto ähnlicher sind sich diese.
Satz 1 und Satz 2 haben eine große Ähnlichkeit, da diese beide die flache Hierarchie beschreiben und viele gleiche Keywords enthalten. Satz 1 und Satz 3 haben keine Überschneidungen, und haben somit eine Ähnlichkeit von 0. Satz 2 und Satz 3 überschneiden sich nur teilweise.
Preprocessing oder die reale Welt
Wie bereits angedeutet war das obige Beispiel sehr idealisiert, da nur gleiche Wortformen verwendet wurden. Die reale Welt sieht meist etwas anders, und zwar sehr viel komplexer aus. Das folgende Beispiel ist zwar immer noch sehr einfach, doch es zeigt, wie nur kleine Änderungen in der Formulierung die Sache sehr viel komplexer machen: Wir ändern lediglich beim zweiten Satz „Hierarchie flach“ zu „Flache Hierarchien“ und verlängern den dritten Satz ein wenig.
Die Einbeziehung von mehreren Wortformen (zum Beispiel „Hierarchie“ und „Hierarchien“) hat dabei auch Einfluss auf die Ähnlichkeiten. Diese werden nämlich deutlich kleiner, da viele Wörter in unterschiedlichen Formen vorkommen und somit separate Einträge in den Vektoren sind.
Obwohl wir nur die Formulierung geändert haben, haben die ersten beiden Sätze jetzt eine Ähnlichkeit von null. Wie Du aber aus dem einfachen Beispiel weißt, bildet das nicht die Realität ab. Denn die Bedeutung der Sätze hat sich nicht grundlegend geändert. Das Problem ist, dass hier die Wörter in unterschiedlichen Formen vorkommen und somit keine gemeinsamen Wörter mehr haben. Um solche Probleme zu vermeiden, verwenden wir das sogenannte Preprocessing der Texte. Ziel ist es hierbei die Texte in ein einheitlicheres Format zu bekommen und ähnliche Wörter zusammenzulegen. Dazu gehören einige Schritte, die wir Dir im Folgenden erklären wollen.
Das Preprocessing verändert nichts an der eigentlichen Methode, macht uns die Arbeit mit den Texten deutlich einfacher. In vielen praktischen Anwendungen macht das Preprocessing am Ende mehr aus als die Wahl des Algorithmus.
Groß- und Kleinschreibung anpassen
In der Regel enthält die Groß- und Kleinschreibung keine besonders wichtigen Informationen und ist auch relativ selbsterklärend – es werden einfach alle Wörter klein geschrieben. Durch Satzanfänge und Substantivierung werden nämlich Wörter, die eigentlich gleich sind, unterschiedlich gemacht – in diesem Beispiel „Die“ und „die“.
Stopwords entfernen
Fast jede Sprache hat Wörter, die sehr häufig vorkommen und den Redefluss verbessern, aber zum Inhalt des Textes nichts beitragen, zum Beispiel “der, die, das, und, bei, usw.“. Diese Wörter führen dazu, dass Sätze als ähnlich angesehen werden, die eigentlich nichts miteinander zu tun haben – zum Beispiel Satz 1 und 3, die beide das Wort „die“ beinhalten. Deshalb werden in diesem Schritt alle Stopwords entfernt. Dazu gibt es für alle gängigen Sprachen Wortlisten, die diese enthalten – ein allgemeines Regelwerk quasi. Alternativ oder zusätzlich kann man auch alle Wörter entfernen, die in beispielsweise mehr als 70 % aller Texte vorkommen.
Stemming
Der letzte Schritt beinhaltet das sogenannte Stemming und ist der wohl wichtigste Schritt des Preprocessings. Beim Stemming werden Wörter auf ihren Wortstamm heruntergekürzt, sodass zum Beispiel „hierarchie“ und „hierarchien“ zu dem gleichen Keyword „hierarchie“ werden. Dadurch sind sich die Vektoren von Satz 1 und 2 nun wieder sehr ähnlich. In unserem Beispiel sieht das dann so aus:
Dies sind die gängigsten Preprocessing-Schritte die so gut wie immer eingesetzt werden, wenn wir mit Textdaten arbeiten. Es gibt je nach Kontext vielleicht aber auch noch weitere Schritte. Zum Beispiel lassen sich Texte mit vielen Rechtschreibfehlern korrigieren und Zahlen und Web-Adressen entfernen.
Anwendung in der Praxis
In der Regel werden die Vektoren nicht nur für Ähnlichkeiten verwendet, sondern für Machine Learning-Modelle. Beispielsweise können Vektoren dafür verwendet werden mit Klassifizierungsalorithmen, die Sätze in Kategorien einzuordnen, um sich zukünftige manuelle Zuordnungen zu sparen. In unserem Beispiel würden sich die Kategorien „Hierarchie“ und „Kunden“ eignen. Diese werden vorher festgelegt und die Sätze dann zunächst händisch codiert, sodass jeder Satz den Kategorien zugeordnet wird, in denen die Themen vorkommen. Mit diesen und vielen weiteren Satz-Code-Paaren wird dann ein Machine Learning-Modell trainiert. Dieses Modell lernt dann nicht nur welche Keywords zu den entsprechenden Kategorien passen, sondern auch welche Zusammenhänge zwischen den Keywords bestehen – und das ganz automatisch.
Probleme und Ausblick auf andere Methoden
Das größte Problem von Bag-of-Words ist, dass die Vektoren sehr groß werden können. Aus drei Sätzen haben wir bereits einen neun-dimensionalen Vektor generiert. Wenn wir 10.000 (oder 1 Millionen) Sätze verwenden, wird das Ganze unüberschaubar, weil zu viele unterschiedliche Wörter enthalten sind, die aber oft das gleiche meinen. In der Praxis werden dann nur die häufigsten Keywords verwendet. Dadurch gehen aber Informationen über nicht so häufig genannte Keywords verloren. Es ist deshalb ein ständiger Trade-Off zwischen Größe der Vektoren und Genauigkeit des Modells. Dazu kommt, dass sehr große Vektoren es dem Modell schwer machen zu lernen und viele Trainingsdaten gebraucht werden.
Deswegen sind Bag-of-Words-Modelle häufig nur ein erster Ansatz und es gibt weitere Methoden, um aus Textdaten Zahlen zu machen. Ein spannender und seit einigen Jahren häufig verwendeter Ansatz sind so genannte „Word Embeddings“. Auch hier werden Texte und Wörter in Vektoren umgewandelt – allerdings auf eine Art und Weise, die es ermöglicht Synonyme zu berücksichtigen und gleichzeitig weniger Zahlen für die gleiche Aussagekraft zu verwenden. In einem künftigen Beitrag gehen wir darauf nochmal genauer ein.
Du willst mehr über das Thema Textanalysen erfahren? Dann schau mal hier vorbei:
Du willst Marktforschung im Unternehmen sichtbar machen?
Dann lass uns gemeinsam deine Daten sichtbar werden!
Unser hochmotiviertes Team freut sich, von Dir und Deiner Fragestellung zu hören.