En nybörjarguide till Latent Dirichlet Allocation (LDA)

Tema-modellering är en metod för oövervakad klassificering av dokument, som liknar klusterindelning av numeriska data, och som hittar vissa naturliga grupper av objekt (teman) även när vi inte är säkra på vad vi letar efter.

Ett dokument kan vara en del av flera ämnen, ungefär som i fuzzy clustering(soft clustering) där varje datapunkt tillhör mer än ett kluster.

Varför ämnesmodellering?

Tema-modellering ger metoder för automatisk organisering, förståelse, sökning och sammanfattning av stora elektroniska arkiv.
Det kan hjälpa till med följande:

  • upptäckt av dolda teman i samlingen.
  • klassificering av dokumenten i de upptäckta temana.
  • användning av klassificeringen för att organisera/sammanfatta/söka i dokumenten.

Till exempel, låt oss säga att ett dokument tillhör ämnena mat, hundar och hälsa. Så om en användare frågar efter ”hundmat” kan han eller hon finna det ovan nämnda dokumentet relevant eftersom det täcker dessa ämnen(bland andra ämnen). Vi kan räkna ut dess relevans i förhållande till frågan utan att ens gå igenom hela dokumentet.

Därmed kan vi optimera vår sökprocess genom att annotera dokumentet baserat på de ämnen som förutsägs av modelleringsmetoden.

LDA

Det är en av de mest populära metoderna för ämnesmodellering. Varje dokument består av olika ord, och varje ämne har också olika ord som tillhör det. Syftet med LDA är att hitta ämnen som ett dokument tillhör, baserat på orden i det. Är du förvirrad? Här är ett exempel som hjälper dig att gå igenom det.

Modelldefinition

Each document is a collection of words.

We have 5 documents each containing the words listed in front of them( ordered by frequency of occurrence).

What we want to figure out are the words in different topics, as shown in the table below. Each row in the table represents a different topic and each column a different word in the corpus. Each cell contains the probability that the word(column) belongs to the topic(row).

Each topic contains a score for all the words in the corpus.

Finding Representative Words for a Topic

  • We can sort the words with respect to their probability score.
    De x bästa orden väljs från varje ämne för att representera ämnet. Om x = 10 sorterar vi alla ord i topic1 utifrån deras poäng och tar de 10 bästa orden för att representera ämnet.
    Detta steg är kanske inte alltid nödvändigt eftersom om korpusen är liten kan vi lagra alla ord i sorterade efter deras poäng.
  • Alternativt kan vi sätta ett tröskelvärde på poängen. Alla ord i ett ämne som har en poäng över tröskelvärdet kan lagras som dess representant, i ordning efter deras poäng.

.

Foto av Anusha Barwa på Unsplash

Vi kan säga att vi har två ämnen som kan klassificeras som KATTRelaterade och HUNDARelaterade. Ett ämne har sannolikheter för varje ord, så ord som milk, meow och kitten har en högre sannolikhet i ämnet CAT_related än i ämnet DOG_related. DOG_related-ämnet kommer på samma sätt att ha höga sannolikheter för ord som valp, skäll och ben.

Om vi har ett dokument som innehåller följande meningar:

”Hundar gillar att tugga på ben och hämta pinnar”.
”Valpar dricker mjölk.”
”Båda gillar att skälla.”

Vi kan lätt säga att det hör till ämnet DOG_related eftersom det innehåller ord som Hundar, ben, valpar och skäll. Även om det innehåller ordet mjölk som hör till ämnet CAT_related hör dokumentet till DOG_related eftersom fler ord matchar det.

Antaganden:

  • Varje dokument är bara en samling ord eller en ”bag of words”. Ordets ordning och ordens grammatiska roll (subjekt, objekt, verb, …) beaktas alltså inte i modellen.
  • Ord som am/is/are/of/a/the/but/… innehåller ingen information om ”ämnena” och kan därför avlägsnas från dokumenten som ett förbehandlingssteg. Faktum är att vi kan eliminera ord som förekommer i minst 80 % ~ 90 % av dokumenten utan att förlora någon information.
    Om vår korpus till exempel endast innehåller medicinska dokument kan ord som människa, kropp, hälsa etc. förekomma i de flesta dokumenten och kan därför tas bort eftersom de inte tillför någon specifik information som skulle få dokumentet att sticka ut.
  • Vi vet i förväg hur många ämnen vi vill ha. ’k’ är bestämt i förväg.
  • Alla ämnestilldelningar utom det aktuella ordet i fråga är korrekta, och sedan uppdaterar vi tilldelningen av det aktuella ordet med hjälp av vår modell för hur dokumenten genereras

Hur fungerar LDA?

Det finns 2 delar i LDA:

  • De ord som hör till ett dokument, som vi redan känner till.
  • De ord som hör till ett ämne eller sannolikheten för att orden hör till ett ämne, som vi måste beräkna.

Algoritmen för att hitta det sistnämnda

  • Gå igenom varje dokument och tilldela slumpmässigt varje ord i dokumentet till ett av k ämnen (k väljs i förväg).
  • För varje dokument d, gå igenom varje ord w och beräkna :
  1. p(ämne t | dokument d): andelen ord i dokument d som tilldelas ämne t. Försöker fånga upp hur många ord som tillhör ämnet t för ett givet dokument d. Exklusive det aktuella ordet.
    Om många ord från d tillhör t är det mer sannolikt att ord w tillhör t.
    ( #words in d with t +alpha/ #words in d with any topic+ k*alpha)
  2. p(word w| topic t): Andelen uppdrag till topic t över alla dokument som kommer från detta ord w. Försöker fånga hur många dokument som ingår i topic t på grund av ord w.
    LDA representerar dokumenten som en blandning av topics. På samma sätt är ett ämne en blandning av ord. If a word has high probability of being in a topic, all the documents having w will be more strongly associated with t as well. Similarly, if w is not very probable to be in t, the documents which contain the w will be having very low probability of being in t, because rest of the words in d will belong to some other topic and hence d will have a higher probability for those topic. So even if w gets added to t, it won’t be bringing many such documents to t.
  • Update the probability for the word w belonging to topic t, as
p(word w with topic t) = p(topic t | document d) * p(word w | topic t)

A layman’s example

Suppose you have various photographs(documents) with captions(words). You want to display them in a gallery so you decide to categorize the photographs on various themes(topics) based on which you will create different sections in your gallery.

Foto av Soragrit Wongsa på Unsplash

Du bestämmer dig för att skapa k=2 sektioner i ditt album – natur och stad. Naturligtvis är indelningen inte så tydlig eftersom vissa fotografier med stad har träd och blommor medan naturbilderna kanske har några byggnader. Till att börja med bestämmer du dig för att placera de fotografier som endast innehåller natur- eller stadselement i sina respektive kategorier medan du slumpmässigt fördelade resten.

Du lägger märke till att många naturfotografier har ordet träd i sina bildtexter. Så du drar slutsatsen att ordet träd och ämnet natur måste vara nära besläktade.

Nästan väljer du ordet byggnad och kontrollerar hur många fotografier som hör till natur eftersom de har ordet byggnad i sin bildtext. Du hittar inte många och är nu mindre säker på att byggnad tillhör ämnet natur och associerar det starkare med ämnet stad.

Därefter väljer du ett fotografi som har bildtexten ”Trädet står framför byggnaden och bakom en bil” och ser att det för närvarande tillhör kategorin natur.
Du väljer sedan ordet träd och beräknar den första sannolikheten p(ämne t | dokument d): andra ord i bildtexten är byggnad och bil, de flesta fotografier som har bildtexter med byggnad eller bil i är i stad, så du får en låg sannolikhet.
Nu kommer den andra sannolikheten p(ord w| ämne t): vi vet att en hel del fotografier i natur har ordet träd i det. Så du får en hög poäng här.
Du uppdaterar sannolikheten för att träd hör hemma i naturen genom att multiplicera de två. Du får ett lägre värde än tidigare för träd i ämnet natur eftersom du nu har sett det trädet och ord som byggnad/bil i samma bildtext, vilket antyder att träd också kan finnas i städer. är du uppdaterar sannolikheten för att träd tillhör ämnet stad kommer du av samma anledning att märka att den blir större än vad den var tidigare.

Efter flera iterationer över alla fotografier och för varje ämne kommer du att ha korrekta poäng för varje ord med avseende på varje ämne. Dina gissningar kommer att bli bättre och bättre eftersom du utifrån sammanhanget kommer att dra slutsatsen att ord som byggnader, trottoar, tunnelbana förekommer tillsammans och därmed måste tillhöra samma ämne, vilket vi lätt kan gissa är stad. rd som berg, fält, strand förekommer kanske inte tillsammans i många bildtexter, men de förekommer ofta utan stadsord och kommer därför att få högre poäng för natur.
Men ord som träd, blommor, hundar och himmel har nästan samma sannolikhet att ingå i något av dem eftersom de förekommer i båda ämnena.

För fotografiet ser du att det har ett ord (med genomsnittlig sannolikhet) från kategorin natur och två ord (med hög sannolikhet) från staden, och du drar slutsatsen att det hör till staden i högre grad än det hör till naturen, och därför beslutar du dig för att lägga till det i staden.

Notis vid sidan om

Ansökningarna av LDA behöver inte begränsas till behandling av naturliga språk. Jag har nyligen genomfört en artikel där vi använder LDA (tillsammans med ett neuralt nätverk) för att extrahera en bilds scenspecifika sammanhang. Om du är intresserad av att lära dig mer om detta kan du lämna en kommentar eller ett meddelande.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *