Data Science beschleunigt die Welt.
Wir synchronisieren Ihr Unternehmen.
02.09.2022 | Maschinelles Lernen
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 und wird 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. Sie können sich 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.
Ein einfaches Beispiel – für mehr Details einfach draufklicken!
Möchten Sie also zum Beispiel wissen, welche Texte über Kund:innen sprechen, dann schauen Sie sich die Vektor-Einträge an, die zum Wort „Kunden“ gehören. Ist der Eintrag > 0 wird über das Thema „Kunde“ gesprochen. Bestimmt schweben Ihnen 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 das durch die Berechnung der Ähnlichkeiten zwischen den Vektoren umgesetzt werden. Ein klassisches Maß für die Ähnlichkeit, ist die sogenannte „Cosine Similarity“ (Cosinus-Ähnlichkeit). Sie beschreibt den Winkel (Bogenmaß) zwischen den zwei Vektoren. Im Grunde heißt es: je besser die 1en der Vektoren sich überschneiden, desto ähnlicher sind sie sich.
Ähnlichkeiten zwischen den Sätzen – für mehr Details einfach draufklicken!
Satz 1 und Satz 2 haben eine große Ähnlichkeit, da sie 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.
Das Preprocessing – für mehr Details einfach draufklicken!
Die Einbeziehung von mehreren Wortformen (zum Beispiel „Hierarchie“ und „Hierarchien“) hat dabei auch Einfluss auf die Ähnlichkeiten. Sie werden nämlich deutlich kleiner, da viele Wörter in unterschiedlichen Formen vorkommen und somit separate Einträge in den Vektoren sind.
Ähnlichkeiten zwischen den Sätzen – für mehr Details einfach draufklicken!
Obwohl wir nur die Formulierung geändert haben, haben die ersten beiden Sätze jetzt eine Ähnlichkeit von null. Wie Sie aber aus dem einfachen Beispiel wissen, 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 Ihnen 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 kleingeschrieben. Durch Satzanfänge und Substantivierung werden nämlich Wörter, die eigentlich gleich sind, unterschiedlich gemacht – in diesem Beispiel „Die“ und „die“.
Groß- und Kleinschreibung – für mehr Details einfach draufklicken!
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.
Stopwords – für mehr Details einfach draufklicken!
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:
Stemming und Ähnlichkeiten nach dem Preprocessing – für mehr Details einfach draufklicken!
Das 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 Klassifizierungsalgorithmen 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. Sie 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 Million) 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.
Ihr Ansprechpartner:
Michael Ellers
Junior Data Scientist
Data-Science-News direkt in Ihr Postfach
Sobald wir einen Beitrag in unserem Blog veröffentlichen, schicken wir Ihnen gerne eine E-Mail. Und keine Sorge – wir mögen auch keinen Spam!
Weitere interessante Beiträge aus der Kategorie: Maschinelles Lernen
Auf der Datenwelle
Hier finden Sie unsere Events und Webinare für Data-Science-Enthusiasten.
Folge einem manuell hinzugefügten Link
AM 05. DEZEMBER 2024
Deeper Insights Day
Von Datenflut zu Entscheidungsbasis – Das Webinar zeigt, wie effiziente Market-Intelligence-Reportings Tempo und Wirkung steigern können.
Folge einem manuell hinzugefügten Link
VERGANGENE WEBINARE
Vom Datensammeln zum Consulting
Ein Webinar darüber, wie Hassia mit Dashboards abteilungsübergreifend den Umgang mit Daten verändert