Ankur Tomar

Follow

Nov 25, 2018 – 9 min read

Credits: Christine Doig

Hallo zusammen. Es ist schon lange her, dass ich meinen letzten Blog über die verschiedenen Arten von Empfehlungssystemen geschrieben habe. Dieses Mal werde ich über Topic Modelling schreiben.

Es gibt zahlreiche Quellen, in denen man lernen kann, was Topic Modelling ist, aber ich denke, die meisten davon sind etwas technisch und erfordern gute Kenntnisse in Mathematik und anderen Techniken wie Markov-Ketten. In diesem Artikel werde ich versuchen, die Idee hinter Topic Modelling auf eine sehr intuitive Art und Weise mit einem Minimum an Mathematik und Technik zu erklären. Ich werde diesen Artikel in zwei Teilen schreiben. Im ersten Teil werde ich versuchen zu erklären, was Topic Modeling ist, und im zweiten Teil werde ich ein Python-Tutorial zur Verfügung stellen, wie man Topic Modeling auf einem realen Datensatz durchführt.

Bevor ich beginne, möchte ich anerkennen, dass dieser Artikel stark von der Vorlesung meines explorativen Datenanalytikers Prof. Edward McFowland, dem Coursera-Kurs über natürliche Sprachverarbeitung der Higher School of Economics und Jordan Boyd-Grabers Erklärung des Gibbs-Samplings inspiriert ist.

Was ist Topic Modeling?

Topic Modeling ist ein Zweig der unüberwachten natürlichen Sprachverarbeitung, der verwendet wird, um ein Textdokument mit Hilfe mehrerer Themen darzustellen, die die zugrundeliegenden Informationen in einem bestimmten Dokument am besten erklären können. Dies kann mit dem Clustering verglichen werden, jedoch mit einem Unterschied. Anstelle von numerischen Merkmalen haben wir nun eine Sammlung von Wörtern, die wir so gruppieren wollen, dass jede Gruppe ein Thema in einem Dokument darstellt.

Warum brauchen wir Themenmodellierung?

Okay, nun stellt sich die Frage, warum wir Themenmodellierung brauchen? Wenn wir uns umschauen, sehen wir eine riesige Menge an unstrukturierten Textdaten in Form von Nachrichtenartikeln, Forschungsarbeiten, Beiträgen in sozialen Medien usw., und wir brauchen eine Möglichkeit, diese Daten zu verstehen, zu organisieren und zu kennzeichnen, um fundierte Entscheidungen zu treffen. Die Themenmodellierung wird in verschiedenen Anwendungen eingesetzt, z. B. bei der Suche nach ähnlichen Fragen auf Stack Overflow, der Aggregation und Analyse von Nachrichtenströmen, Empfehlungssystemen usw. Bei all diesen Anwendungen geht es darum, die verborgene thematische Struktur im Text zu finden, da davon ausgegangen wird, dass jeder Text, den wir schreiben, sei es ein Tweet, ein Posting oder eine Forschungsarbeit, aus Themen wie Sport, Physik, Luft- und Raumfahrt usw. besteht.

Wie führt man Themenmodellierung durch?

Zurzeit gibt es viele Möglichkeiten, Themenmodellierung durchzuführen, aber in diesem Beitrag werden wir einen probabilistischen Modellierungsansatz namens Latent Dirichlet Allocation (LDA) erörtern, der 2003 von Prof. David M. Blei entwickelt wurde. Dabei handelt es sich um eine Erweiterung der Probabilistischen Latenten Semantischen Analyse (PLSA), die 1999 von Thomas Hoffman entwickelt wurde, mit einem winzigen Unterschied in Bezug auf die Behandlung der Verteilung pro Dokument. Beginnen wir also direkt mit der Funktionsweise von LDA.

Latent Dirichlet Allocation

Zunächst sollten wir die Bedeutung jedes einzelnen Wortes im Titel verstehen, denn ich denke, es enthält alles, was wir wissen müssen, um zu verstehen, wie LDA funktioniert.

Latent: Dies bezieht sich auf alles, was wir a priori nicht wissen und was in den Daten verborgen ist. Hier sind die Themen, aus denen das Dokument besteht, nicht bekannt, aber es wird angenommen, dass sie vorhanden sind, da der Text auf der Grundlage dieser Themen generiert wird.

Dirichlet: Es ist eine „Verteilung von Verteilungen“. Ja, Sie haben richtig gelesen. Aber was bedeutet das? Überlegen wir uns das anhand eines Beispiels. Nehmen wir an, es gibt eine Maschine, die Würfel herstellt, und wir können kontrollieren, ob die Maschine immer einen Würfel herstellt, bei dem alle Seiten gleich gewichtet sind, oder ob es eine Verzerrung für einige Seiten gibt. Die Maschine, die Würfel produziert, ist also eine Verteilung, da sie Würfel verschiedener Typen produziert. Wir wissen auch, dass der Würfel selbst eine Verteilung ist, da wir mehrere Werte erhalten, wenn wir einen Würfel werfen. Das bedeutet, dass es sich um eine Verteilung von Verteilungen handelt, und das ist es, was Dirichlet ist. Im Zusammenhang mit der Themenmodellierung ist Dirichlet die Verteilung der Themen in den Dokumenten und die Verteilung der Wörter im Thema. Vielleicht ist das zu diesem Zeitpunkt noch nicht ganz klar, aber das ist in Ordnung, denn wir werden uns das in Kürze genauer ansehen.

Verteilung: Das bedeutet, dass wir, sobald wir Dirichlet haben, die Themen den Dokumenten und die Wörter des Dokuments den Themen zuordnen.

Das war’s. Das ist, was LDA in einer Nussschale ist. Nun wollen wir verstehen, wie dies bei der Themenmodellierung funktioniert.

Zur Erinnerung: LDA besagt, dass jedes Wort in jedem Dokument aus einem Thema stammt und das Thema aus einer Verteilung pro Dokument über Themen ausgewählt wird. Wir haben also zwei Matrizen:

1. ϴtd = P(t|d), das ist die Wahrscheinlichkeitsverteilung der Themen in den Dokumenten

2. Фwt = P(w|t), das ist die Wahrscheinlichkeitsverteilung der Wörter in den Themen

Und wir können sagen, dass die Wahrscheinlichkeit eines Wortes in einem Dokument i.d. h. P(w|d) ist gleich:

wobei T die Gesamtzahl der Topics ist. Nehmen wir außerdem an, dass unser Vokabular für alle Dokumente eine Anzahl von W Wörtern enthält.

Wenn wir bedingte Unabhängigkeit annehmen, können wir sagen, dass

P(w|t,d) = P(w|t)

und somit P(w|d) gleich ist:

Das ist das Punktprodukt von ϴtd und Фwt für jedes Thema t.

Dies kann in Form einer Matrix wie folgt dargestellt werden:

Credit: Higher School of Economics

So gesehen können wir uns LDA ähnlich wie die Matrixfaktorisierung oder SVD vorstellen, bei der wir die Wahrscheinlichkeitsverteilungsmatrix eines Wortes in einem Dokument in zwei Matrizen zerlegen, die aus der Verteilung des Themas in einem Dokument und der Verteilung der Wörter in einem Thema bestehen.

Daher erhalten wir zum Beispiel Folgendes:

Credit: David M. Blei

Und um auf unser Würfelbeispiel zurückzukommen, können wir sagen, dass jedes Wort in der Verteilung der Wörter in einem Thema einer Seite des Würfels ähnelt, und wir haben Dirichlet-Parameter, um zu kontrollieren, ob alle Wörter in einem Thema die gleiche Wahrscheinlichkeit haben oder ob dieses Thema eine extreme Neigung zu einigen Wörtern hat. Dieselbe Intuition gilt für die Verteilung der Themen in einem Dokument.

Gut. Jetzt kommt der wichtige Teil. Wie lernen wir die Gewichte dieser beiden Matrizen?

Zu Beginn weisen wir beiden Matrizen zufällig Gewichte zu und nehmen an, dass unsere Daten wie folgt generiert werden:

1. Wählen Sie zufällig ein Thema aus der Verteilung der Themen in einem Dokument auf der Grundlage der ihnen zugewiesenen Gewichte. Im vorangegangenen Beispiel haben wir uns für das Thema Rosa entschieden

2. Als Nächstes wählen wir auf der Grundlage der Verteilung der Wörter für das gewählte Thema ein Wort nach dem Zufallsprinzip aus und fügen es in das Dokument ein

3. Diesen Schritt wiederholen wir für das gesamte Dokument

Wenn unsere Schätzung der Gewichte falsch ist, sind die tatsächlichen Daten, die wir beobachten, bei den angenommenen Gewichten und dem Datenerzeugungsprozess sehr unwahrscheinlich. Nehmen wir zum Beispiel an, wir haben ein Dokument D1, das aus folgendem Text besteht:

„Qualcomm® Adreno™ 630 Visual Processing Subsystem featuring room-scale 6DoF with SLAM, Adreno Foveation“

und nehmen wir an, dass wir dem Thema T1 hohe Gewichte zuweisen, das hohe Gewichte für Wörter wie Löffel, Teller, Zwiebeln usw. hat, dann werden wir sehen, dass es angesichts unserer Annahme, wie die Daten generiert werden, sehr unwahrscheinlich ist, dass T1 zu D1 oder diese Wörter zu T1 gehören. Wir versuchen also, die Wahrscheinlichkeit unserer Daten angesichts dieser beiden Matrizen zu maximieren.

Um die richtigen Gewichte zu ermitteln, verwenden wir einen Algorithmus namens Gibbs-Sampling. Verstehen wir nun, was Gibbs Sampling ist und wie es in LDA funktioniert.

Gibbs Sampling

Gibbs Sampling ist ein Algorithmus zum sukzessiven Sampling von bedingten Verteilungen von Variablen, deren Verteilung über die Zustände auf lange Sicht zur wahren Verteilung konvergiert. Dies ist ein etwas abstraktes Konzept und erfordert ein gutes Verständnis der Monte-Carlo-Markov-Ketten und des Bayes-Theorems. Diese Konzepte und die dahinter stehende Mathematik sind ziemlich komplex und würden den Rahmen dieses Blogs sprengen. Hier werde ich versuchen, eine Vorstellung davon zu vermitteln, wie Gibbs Sampling funktioniert, um Themen in den Dokumenten zu identifizieren.

Wie ich bereits erwähnt habe, gehen wir zunächst davon aus, dass wir die ϴ- und Ф-Matrizen kennen. Nun werden wir diese Matrizen langsam verändern, um zu einer Antwort zu gelangen, die die Wahrscheinlichkeit der Daten, die wir haben, maximiert. Wir werden dies Wort für Wort tun, indem wir die Themenzuordnung eines Wortes ändern. Wir gehen davon aus, dass wir die Themenzuweisung des gegebenen Wortes nicht kennen, aber wir kennen die Zuweisung aller anderen Wörter im Text, und wir werden versuchen, abzuleiten, welches Thema diesem Wort zugewiesen wird.

Wenn wir dies auf mathematische Weise betrachten, versuchen wir, die bedingte Wahrscheinlichkeitsverteilung der Themenzuweisung eines einzelnen Wortes in Abhängigkeit von den übrigen Themenzuweisungen zu finden. Wenn wir alle mathematischen Berechnungen ignorieren, erhalten wir eine bedingte Wahrscheinlichkeitsgleichung, die für ein einzelnes Wort w im Dokument d, das zum Thema k gehört, wie folgt aussieht:

Credit: Jordan Boyd-Graber

wobei:

n(d,k): Anzahl, wie oft Dokument d das Thema k verwendet

v(k,w): Anzahl der Verwendungen des Themas k durch das gegebene Wort

αk: Dirichlet-Parameter für die Verteilung von Dokument zu Thema

λw: Dirichlet-Parameter für die Verteilung zwischen Thema und Wort

Diese Gleichung besteht aus zwei Teilen. Der erste Teil sagt uns, wie viel jedes Thema in einem Dokument vorhanden ist, und der zweite Teil sagt uns, wie sehr jedes Thema ein Wort mag. Beachten Sie, dass wir für jedes Wort einen Vektor von Wahrscheinlichkeiten erhalten, der erklärt, wie wahrscheinlich dieses Wort zu jedem der Themen gehört. In der obigen Gleichung ist zu erkennen, dass die Dirichlet-Parameter auch als Glättungsparameter fungieren, wenn n(d,k) oder v(k,w) Null ist, was bedeutet, dass immer noch eine gewisse Chance besteht, dass das Wort ein Thema wählt.

Lassen Sie uns nun ein Beispiel durchgehen:

Angenommen, wir haben ein Dokument mit einer zufälligen Wort-Themen-Zuordnung, wie zum Beispiel unten gezeigt:

Wir haben auch unsere Zählmatrix v(k,w) wie unten gezeigt:

Nun wollen wir die Zuordnung des Wortes Welt im Dokument ändern.

  • Zunächst reduzieren wir die Anzahl von Welt in Thema 1 von 28 auf 27, da wir nicht wissen, zu welchem Thema Welt gehört.
  • Zweitens stellen wir die Matrix n(d,k) auf folgende Weise dar, um zu zeigen, wie sehr ein Dokument jedes Thema verwendet

– Drittens, stellen wir v(k,w) auf folgende Weise dar, um zu zeigen, wie oft jedes Thema diesem Wort zugeordnet ist

  • Viertens, multiplizieren wir diese beiden Matrizen, um unsere bedingten Wahrscheinlichkeiten zu erhalten

  • Schließlich wählen wir nach dem Zufallsprinzip ein beliebiges Thema aus und ordnen es der Welt zu, und wir wiederholen diese Schritte auch für alle anderen Wörter. Intuitiv sollte das Thema mit der höchsten bedingten Wahrscheinlichkeit ausgewählt werden, aber wie wir sehen können, haben auch andere Themen eine gewisse Chance, ausgewählt zu werden

Das war’s. Das ist es, was der Gibbs-Sampling-Algorithmus unter der Haube macht. Wir haben zwar einige Details wie die Abstimmung der Hyperparameter übersprungen, aber aus der Sicht der Intuition funktioniert Gibbs Sampling bei der Themenmodellierung so.

So, das war’s mit der Theorie der Latent Dirichlet Allokation. Ich hoffe, dies war hilfreich, um zu verstehen, was Themenmodellierung ist und wie wir LDA mit Gibbs für die Themenmodellierung verwenden. Im nächsten Artikel werde ich die Implementierung von LDA mit Python vorstellen.

Dankeschön!

admin

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

lg