Hoi iedereen. Het is alweer een hele tijd geleden dat ik mijn laatste blog schreef over de verschillende soorten aanbevelingssystemen. Deze keer schrijf ik over Topic Modelling.
Er zijn talloze bronnen te vinden waar je kunt leren wat Topic Modelling is, maar ik denk dat de meeste nogal technisch zijn en een goede kennis van wiskunde en andere technieken zoals Markov Chains vereisen. In dit artikel zal ik proberen om het idee achter Topic Modelling uit te leggen op een zeer intuïtieve manier met een minimum aan wiskunde en technische details. Ik zal dit artikel in twee delen schrijven. In het eerste deel zal ik proberen uit te leggen wat topic modeling is en in het tweede deel zal ik een python tutorial geven van hoe je topic modeling kunt doen op de real-world dataset.
Voordat ik begin, wil ik erkennen dat dit artikel sterk geïnspireerd is door de lezing van mijn exploratory data analytics Prof. Edward McFowland, de cursus Natural Language Processing van Coursera door de Higher School of Economics en Jordan Boyd-Graber uitleg over Gibbs sampling.
Wat is topic modeling?
Topic modeling is een tak van unsupervised natural language processing die wordt gebruikt om een tekstdocument weer te geven met behulp van verschillende topics, die de onderliggende informatie in een bepaald document het beste kunnen verklaren. Dit kan worden gedacht in termen van clustering, maar met een verschil. In plaats van numerieke kenmerken hebben we nu een verzameling woorden die we zodanig willen groeperen dat elke groep een onderwerp in een document vertegenwoordigt.
Waarom hebben we topic modeling nodig?
Okay, dus nu rijst de vraag waarom hebben we topic modeling nodig? Als we om ons heen kijken, zien we een enorme hoeveelheid ongestructureerde tekstuele gegevens in de vorm van nieuwsartikelen, onderzoekspapers, berichten in de sociale media, enz. en we hebben een manier nodig om deze gegevens te begrijpen, te ordenen en te labelen om weloverwogen beslissingen te kunnen nemen. Topic modeling wordt gebruikt in verschillende toepassingen zoals het vinden van vragen op stack overflow die gelijkaardig zijn aan elkaar, nieuwsstroom aggregatie en analyse, recommender systemen enz. Al deze toepassingen richten zich op het vinden van de verborgen thematische structuur in de tekst, omdat wordt aangenomen dat elke tekst die we schrijven, of het nu een tweet, post of een onderzoeksartikel is, is samengesteld uit thema’s zoals sport, natuurkunde, ruimtevaart, enz.
Hoe doe je aan topic modeling?
Er zijn momenteel veel manieren om aan topic modeling te doen, maar in deze post zullen we een probabilistische modelbenadering bespreken die Latente Dirichlet Allocatie (LDA) wordt genoemd en die in 2003 door Prof. David M. Blei is ontwikkeld. Dit is een uitbreiding van Probabilistic Latent Semantic Analysis (PLSA), ontwikkeld in 1999 door Thomas Hoffman, met een miniem verschil in de manier waarop ze de verdeling per document behandelen. Dus laten we meteen beginnen met hoe LDA werkt.
Latente Dirichlet Allocatie
Laten we beginnen met het begrijpen van de betekenis van elk woord in de titel, omdat ik denk dat het alles bevat wat we moeten weten om te begrijpen hoe LDA werkt.
Latent: Dit verwijst naar alles wat we niet a priori weten en verborgen zijn in de gegevens. Hier zijn de thema’s of onderwerpen waaruit het document bestaat onbekend, maar ze worden verondersteld aanwezig te zijn omdat de tekst op basis van die onderwerpen wordt gegenereerd.
Dirichlet: Het is een “verdeling van verdelingen”. Ja, u leest het goed. Maar wat betekent dit? Laten we daar eens over nadenken met behulp van een voorbeeld. Stel dat er een machine is die dobbelstenen produceert en we kunnen controleren of de machine altijd een dobbelsteen zal produceren met een gelijk gewicht voor alle kanten, of dat er een vooroordeel zal zijn voor sommige kanten. De machine die dobbelstenen produceert is dus een verdeling, want zij produceert dobbelstenen van verschillende soorten. Ook weten we dat de dobbelsteen zelf een verdeling is, omdat we meerdere waarden krijgen als we met een dobbelsteen gooien. Dit is wat het betekent om een verdeling van verdelingen te zijn en dit is wat Dirichlet is. Hier, in de context van topic modeling, is de Dirichlet de verdeling van topics in documenten en de verdeling van woorden in het topic. Het is misschien niet erg duidelijk op dit moment, maar het is prima, want we zullen het over een tijdje in meer detail bekijken.
Allocatie: Dit betekent dat zodra we Dirichlet hebben, we onderwerpen aan de documenten zullen toewijzen en woorden van het document aan onderwerpen.
Dat is het. Dit is wat LDA is in een notendop. Laten we nu eens begrijpen hoe dit werkt in topic modeling.
Let even ter herinnering, wat LDA zegt is dat elk woord in elk document afkomstig is van een topic en dat het topic wordt gekozen uit een per-document verdeling over topics. We hebben dus twee matrices:
1. ϴtd = P(t|d) dat is de waarschijnlijkheidsverdeling van onderwerpen in documenten
2. Фwt = P(w|t) dat is de waarschijnlijkheidsverdeling van woorden in onderwerpen
En, we kunnen zeggen dat de waarschijnlijkheid van een woord gegeven document i.d. P(w|d) gelijk is aan:
waarbij T het totale aantal onderwerpen is. Laten we ook aannemen dat onze woordenschat voor alle documenten W aantal woorden bevat.
Als we uitgaan van voorwaardelijke onafhankelijkheid, kunnen we zeggen dat
P(w|t,d) = P(w|t)
En dus is P(w|d) gelijk aan:
Nu gaan we de toewijzing van het woord wereld in het document veranderen.
- Eerst zullen we het aantal werelden in onderwerp 1 terugbrengen van 28 naar 27, omdat we niet weten tot welk onderwerp wereld behoort.
- Tweede laten we de matrix n(d,k) op de volgende manier weergeven om te laten zien hoeveel een document elk onderwerp gebruikt
– Ten derde, laten we v(k,w) op de volgende manier weergeven om te laten zien hoe vaak elk onderwerp aan dit woord is toegewezen
- Vierde, vermenigvuldigen we deze twee matrices om onze voorwaardelijke kansen te krijgen
- Tot slot kiezen we willekeurig een onderwerp en wijzen we dat onderwerp toe aan wereld en herhalen we deze stappen ook voor alle andere woorden. Intuïtief zou het onderwerp met de hoogste voorwaardelijke waarschijnlijkheid moeten worden geselecteerd, maar zoals we kunnen zien, hebben andere onderwerpen ook een kans om te worden geselecteerd
Dat is het. Dit is wat het Gibbs bemonsteringsalgoritme onder de motorkap doet. We hebben weliswaar enkele details overgeslagen, zoals de afstemming van hyperparameters, maar intuïtief gezien werkt Gibbs sampling zo voor topic modeling.
Dus, dit is het voor de theorie van Latente Dirichlet Allocatie. Ik hoop dat dit nuttig was om te begrijpen wat topic modelling is en hoe we LDA met Gibbs gebruiken voor topic modelling. In het volgende artikel zal ik de implementatie van LDA met behulp van Python.
Dank!