Skrivandet bakom Topic Modelling

Inser efter skrivandet att detta inlägg kanske kan vinna något sorts pris för  mest misslyckade försök att göra något enklare. Likväl:

Ett bra exempel på när det kan vara värt att fundera över den modell som ligger bakom en algoritm är Topic Modelling (TM). Den som vill läsa mer exakt om hur TM fungerar kan till exempel titta på David Bleis ”Probabilistic Topic Models”, som innehåller både förklarande bilder och en del krånglig matematik.

Jag skall här försöka översätta den modell som TM utgår från, till en berättelse om hur en text måste ha skapats för att denna modell skall framstå som passande.

Idén som TM utgår från är att en författare, när hon sätter sig ner för att författa texten, bär på ett antal teman, ”topics”, som hon vill skriva om. Med matematik kan vi säga att hon bär på teman t_1, t_2, \ldots , t_n där n är det totala antalet teman hon vill få in i sin text.

Ett tema är en sannolikhetsfördelning över ord w_1, w_2, \ldots , w_m som tillhör en vokabulär V med totalt m olika ord. Att ett tema är en ”sannolikhetsfördelning” betyder för det första att varje ord i temat hänger ihop med ett tal s_i, som ligger mellan 0 och 1 – man kan skriva det: 0<s_i<1. För det andra betyder det att summan av alla s_i blir 1.

Idén med denna sannolikhetsfördelning kan förklaras av det förenklade exemplet där en författare bara har ett tema som hon vill skriva om. En text blir då till genom att hon grunnar på ett ord i taget, och sannolikheten för att ett visst ord w_i blir ”valt” varje gång är proportionell mot dess tal s_i. Om vi till exempel har följande lilla vokabulär:

    \[ V=\{ \textrm{hare, och, ett} \} \]

och följande tema

    \[ t_0=\{ 0.8, 0.1, 0.1 \} \]

och författaren bestämmer sig för att skriva en text med 100 ord. Då skulle ordet ”hare” i genomsnitt förekomma 80 gånger, medan de övriga två orden, ”och” och ”ett” skulle förekomma 10 gånger vardera. Här är ett exempel på en typisk sådan text:

och hare hare hare hare hare hare hare ett hare hare hare hare hare hare hare hare hare hare hare hare hare ett hare hare hare hare hare hare hare hare hare hare hare hare hare ett hare hare hare hare hare hare hare och hare hare hare hare hare hare hare hare och hare hare hare hare och hare hare hare ett hare ett och hare hare hare hare ett
ett hare hare hare hare ett hare hare hare hare ett hare hare hare hare hare hare hare ett hare hare hare hare hare och ett hare hare hare

Man skulle kunna tänka sig någon sorts modernistisk eller postmodern poesi som skapats på detta sätt kanske.

I allmänhet tänker man sig, när man arbetar med TM, att författaren haft fler än bara ett tema i huvudet. Nämligen, som vi sa ovan, n teman. Det som gör TM lite komplicerat att förstå är att författaren inte bara bär på en sannolikhetsfördelning över ord inom varje tema: hon bär också på en sannolikhetsfördelning över teman. Låt mig försöka sätta ihop ett exempel:

    \[ V=\{ \textrm{hare, och, ett, hund, boll, hos, heter, varför, erik} \} \]

    \[ t_0=\{ 0.049,0.06,0.12,0.067,0.1,0.15,0.077,0.29,0.094 \} \]

    \[ t_1=\{ 0.004,0.15,0.23,0.14,0.14,0.17,0.01,0.041,0.11 \} \]

    \[ t_2=\{ 0.024,0.2,0.18,0.078,0.21,0.14,0.026,0.077,0.067 \} \]

Här har vi alltså en vokabulär med 9 ord och tre teman. Det första temat t_0 handlar mest om ”varför” (med vikt 0.29 , medan temat t_1 har sin största vikt 0.23  vid ”ett”.

Så till det komplicerade. Det som ger texten sin särart, enligt TM, är en viss sannolikhetsfördelning mellan temana. Vi har här tre teman, så en sådan sannolikhetsfördelning måste ha tre tal, tex. r=\{0.2,0.2,0.6\}.

Vad författaren antas göra när hon skriver är att – för varje ord – först välja ett tema enligt sannolikhetsfördelningen över teman, och sedan ett ord utifrån sannolikhetsfördelningen över orden i detta tema. På så sätt genereras den sekvens av ord som utgör texten. Givet talen i exemplet ovan kan en typisk text om 100 ord så ut så här:

ett hund hund heter och boll hare ett hund ett hare ett varför hos boll boll hos erik boll ett boll erik och erik och hare och erik hare heter hare boll heter och hund och hos boll hund och boll varför erik boll boll och ett hos erik och erik boll hos hund hos hos hos hare hare hare hund heter och ett hos och erik ett erik hos och hund hos varför hos hare hund hund ett boll varför ett boll och boll hund varför erik och hos hare hos och och hos hos hund boll varför erik

Vad i hela fridens namn skall man ha detta till? Kanske läsaren undrar.

Jo, vår författare har nämligen skrivit en mängd texter. Varje gång när hon bestämt sig för att skriva en text, har hon också bestämt sig för hur mycket av varje tema den skall innehålla. Men, och detta är viktigt, genom hela sitt skrivande rör hon sig hela tiden med samma teman. Vad som ändrar sig mellan texterna är bara hur mycket av varje tema hon väljer att stoppa in var och en av texterna.

Så, är antagandet bakom TM, skapas text. Eller mer exakt: en sådan författarprocess ligger bakom skapandet av alla texter i en viss begränsad mängd av texter, till exempel alla böcker i en enskild författares författarskap, eller alla statens offentliga utredningar. Eller, för den delen, alla sidor i en enskild bok – vilket alltså skulle implicera att författaren, just vid varje ny sida, ombestämde sig angående sina teman, och sedan höll fast vid detta sidan ut.

Vad man gör när man använder TM är emellertid inte att skapa text – texten finns ju redan. Det man försöker göra är en sorts backward engineering. Man har resultatet, texten, och – vilket är själva poängen med det här blogginlägget – man vet hur texten kommit till! Givet dessa två komponenter, att man har resultatet, och kunskap om processen, så kan man med hjälp av en algoritm hitta

  • en uppsättning teman/topics

och

  • en fördelning mellan teman för varje text

som är sådana att det, givet hur texten nu faktiskt ser ut, är mest troligt att det var precis dessa teman och dessa temafördelningar som ”var verksamma”, eller hur man nu skall uttrycka det, när texterna skapades.

Nu är det så att jag tycker TM är en riktigt cool metod. Dels bygger TM på ett i min mening spännande antagande om hur texter skapas. Fulllständigt orealistiskt, men ändå potentiellt användbart. Dels fascineras jag över att problemet – att räkna sig bakåt från texterna – alls går att lösa. Det är helt enkelt vilt kompliceras att utföra dessa beräkningar. Det kräver kluriga algoritmer.

Men – och det är igenom poängen här – det finns en mängd steg i detta resonemang som man utan allt för stor illvilja kan sätt ett litet frågetecken efter. Varför just n teman? Vad kom det antagandet ifrån? Ofta sätter man bara n till 50 eller 100. Och är det rimligt att tänka sig att temana är stabila över skapandet av alla texter i den mängd man tittar på? De kanske har olika författare? De kanske är författade vid olika tidpunkter? Och vilken mening ger det att tänka sig ett ”tema” som en sannolikhetsfördelning över alla ord? Finns sådana ”teman” över huvud taget? Tänker människor på det sättet?

Vad kunskap om modellerings-steget i TM kan öppna för är justeringar av dessa antaganden. När man ändrat på dem, så är det en öppen fråga om man fortfarande kan ”räkna sig bakåt” från textmaterialet till ”ämnen” eller vad för något det är man nu postulerat existerar. Så är det med relationen mellan modell och algoritm. En bättre modell kanske gör beräkningssteget omöjligt.

← Tidigare inlägg

Följande inlägg →

3 Kommentarer

  1. Väldigt klargörande om tankeoperationerna som ligger bakom TM! Jag tänker att ”orealistiskt men användbart” är giltigt för flera digitala metoder, och det är ju i sin tur intressant rent vetenskapsteoretiskt.

    Jag funderar på hur man kan implementera den här algoritmen och testa den på lite texter. Hur långt har du kommit där?

    • Tack för positiv feedback. Jag var rätt skeptisk till hur begripligt detta egentligen blev i slutändan… 🙂 Men vad menar du med frågan om implemetation egentligen? Detta är ju algoritmen som *är* Topic Modelling, dvs den som både du och jag använt flera gånger.

      Eller menar du att köra algoritmen ”framåt”, som jag experimenterar med i inlägget? Vilket på modellspråk skulle innebära att försöka ”rekonstruera” texter med utgångspunkt från Topicmodellen? Det kunde vara intressant som illustration av problematiken.

Kommentera