A kezdő útmutató a Latent Dirichlet Allocation(LDA)

A témamodellezés a dokumentumok felügyelet nélküli osztályozására szolgáló, a numerikus adatok klaszterezéséhez hasonló módszer, amely akkor is talál néhány természetes elemcsoportot (témát), ha nem vagyunk biztosak abban, hogy mit keresünk.

Egy dokumentum több témához is tartozhat, hasonlóan a fuzzy klaszterezéshez (soft clustering), ahol minden adatpont egynél több klaszterhez tartozik.

Miért téma modellezés?

A téma modellezés módszereket kínál a nagy elektronikus archívumok automatikus rendszerezésére, megértésére, keresésére és összegzésére.
A következőkben segíthet:

  • a gyűjteményben rejlő rejtett témák felfedezése.
  • a dokumentumok besorolása a felfedezett témákba.
  • az osztályozás felhasználása a dokumentumok rendszerezésére/összefoglalására/keresésére.

Tegyük fel például, hogy egy dokumentum az étel, kutyák és egészség témakörökhöz tartozik. Tehát ha egy felhasználó lekérdezi a “kutyaeledel” kifejezést, akkor a fent említett dokumentumot relevánsnak találhatja, mivel az ezeket a témákat (más témák mellett) lefedi. Képesek vagyunk kitalálni a relevanciáját a lekérdezés szempontjából anélkül, hogy a teljes dokumentumot átnéznénk.

Ezért a dokumentum annotálásával a modellezési módszer által megjósolt témák alapján optimalizálhatjuk a keresési folyamatot.

LDA

Ez az egyik legnépszerűbb témamodellezési módszer. Minden dokumentum különböző szavakból áll, és minden témához különböző szavak is tartoznak. Az LDA célja, hogy a benne lévő szavak alapján megtalálja azokat a témákat, amelyekhez egy dokumentum tartozik. Nagyon összezavarodott? Íme egy példa, hogy végigvigyük.

Modell meghatározása

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.
    Az egyes témákból kiválasztjuk a témát reprezentáló legjobb x szót. Ha x = 10, akkor a topic1 összes szavát a pontszámuk alapján rendezzük, és a top 10 szót választjuk ki a téma képviseletére.
    Ez a lépés nem mindig szükséges, mert ha a korpusz kicsi, akkor az összes szót tárolhatjuk a pontszámuk alapján rendezve.
  • Alternatívaként beállíthatunk egy küszöbértéket a pontszámra. Egy téma minden olyan szavát, amelynek pontszáma a küszöbérték felett van, a pontszámuk szerinti sorrendben tárolhatjuk a téma képviselőjeként.

Photo by Anusha Barwa on Unsplash

Tegyük fel, hogy van 2 témánk, amelyek a CAT_related és a DOG_related kategóriába sorolhatók. Egy téma minden szóhoz valószínűséggel rendelkezik, így az olyan szavak, mint a milk, meow és cica, nagyobb valószínűséggel szerepelnek a CAT_related témában, mint a DOG_relatedben. A DOG_related témához hasonlóan a DOG_related témához magas valószínűségek tartoznak az olyan szavak, mint a puppy, bark, és bone.

Ha van egy dokumentumunk, amely a következő mondatokat tartalmazza:

“A kutyák szeretnek csontokat rágcsálni és botokat hozni.”
“A kiskutyák tejet isznak.”
“Mindketten szeretnek ugatni.”

Egyszerűen mondhatjuk, hogy a DOG_related témához tartozik, mert olyan szavakat tartalmaz, mint a Dogs, bones, puppies, és bark. Annak ellenére, hogy tartalmazza a tej szót, amely a CAT_related témakörhöz tartozik, a dokumentum a DOG_related témakörhöz tartozik, mivel több szó illik hozzá.

Feltételek:

  • Minden dokumentum csak szavak gyűjteménye vagy “szavak zsákja”. Így a szavak sorrendjét és a szavak nyelvtani szerepét (alany, tárgy, igealak, …) a modell nem veszi figyelembe.
  • Az olyan szavak, mint am/is/are/of/a/the/but/… nem hordoznak semmilyen információt a “témákról”, ezért előfeldolgozási lépésként eltávolíthatók a dokumentumokból. Valójában a dokumentumok legalább %80 ~ %90 %-ában előforduló szavakat eltávolíthatjuk anélkül, hogy bármilyen információt elveszítenénk.
    Például, ha a korpuszunk csak orvosi dokumentumokat tartalmaz, az olyan szavak, mint emberi, test, egészség, stb. a dokumentumok többségében előfordulhatnak, és ezért eltávolíthatók, mivel nem adnak hozzá olyan konkrét információt, amely kiemelné a dokumentumot.
  • Előre tudjuk, hogy hány témát szeretnénk. A ‘k’ előre meg van határozva.
  • Az aktuális kérdéses szó kivételével minden téma hozzárendelése helyes, majd az aktuális szó hozzárendelésének frissítése a dokumentumok keletkezésének modellje alapján

Hogyan működik az LDA?

Az LDA-ban 2 rész van:

  • A dokumentumhoz tartozó szavak, amelyeket már ismerünk.
  • A témához tartozó szavak vagy a témához tartozó szavak valószínűsége, amit ki kell számolnunk.

Az utóbbiak megtalálására szolgáló algoritmus

  • Megyünk végig minden dokumentumon és véletlenszerűen rendelünk minden szót a dokumentumban a k téma egyikéhez (a k-t előre kiválasztjuk).
  • Minden d dokumentumhoz menj végig minden w szót, és számítsd ki :
  1. p(t téma | d dokumentum): a d dokumentumban található azon szavak aránya, amelyek a t témához tartoznak. Megpróbálja megragadni, hogy adott d dokumentum esetében hány szó tartozik a t témához. az aktuális szót leszámítva.
    Ha a d dokumentumból sok szó tartozik a t témához, akkor valószínűbb, hogy w szó a t témához tartozik.
    ( #words in d with t +alpha/ #words in d with any topic+ k*alpha)
  2. p(word w| topic t): a t témához való hozzárendelések aránya az összes dokumentumon belül, amelyek ebből a w szóból származnak. Megpróbálja megragadni, hogy hány dokumentum tartozik a t témához a w szó miatt.
    Az LDA a dokumentumokat témák keverékeként ábrázolja. Hasonlóképpen, egy téma szavak keveréke. 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.

Fotó: Soragrit Wongsa on Unsplash

Eldönti, hogy k=2 szekciót hoz létre az albumában – természet és város. Természetesen a besorolás nem olyan egyértelmű, hiszen néhány városi fotón fák és virágok vannak, míg a természeti fotókon esetleg épületek is szerepelnek. Kezdetnek úgy döntesz, hogy azokat a fényképeket, amelyeken csak természeti vagy városi elemek vannak, a megfelelő kategóriába sorolod, míg a többit véletlenszerűen osztod be.

Észreveszed, hogy a természetben sok fénykép feliratában a fa szó szerepel. Így arra a következtetésre jutsz, hogy a fa szó és a természet téma szorosan összefügghet.

Ezután kiválasztod az épület szót, és megnézed, hány fénykép tartozik a természetbe, mert a képaláírásukban szerepel az épület szó. Nem találsz sokakat, és most már kevésbé vagy biztos abban, hogy az épület a természet témakörhöz tartozik, és inkább a város témakörhöz társítod.

Ezután kiválasztasz egy fényképet, amelynek a felirata “A fa az épület előtt és egy autó mögött van”, és látod, hogy jelenleg a természet kategóriába tartozik.
Ezután kiválasztod a fa szót, és kiszámítod az első valószínűséget p(téma t | d dokumentum): a képaláírásban szereplő többi szó az épület és az autó, a legtöbb olyan fénykép, amelynek képaláírása épületet vagy autót tartalmaz, a város kategóriába tartozik, így alacsony valószínűséget kapsz.
Most a második valószínűség p(w szó| téma t): tudjuk, hogy a természetben sok fényképen szerepel a fa szó. Tehát itt magas pontszámot kapunk.
A kettő szorzatával frissítjük a fa természetbe tartozásának valószínűségét. Az előzőnél alacsonyabb értéket kapsz a fa természet témakörbe tartozására, mert most már láttad, hogy a fa és az olyan szavak, mint épület/autó ugyanabban a képaláírásban szerepelnek, ami arra utal, hogy a fák városokban is megtalálhatók.
Ugyanezen okból, amikor frissíti a város témakörhöz tartozó fa valószínűségét, észre fogja venni, hogy nagyobb lesz, mint ami korábban volt.

Az összes fényképen és minden témakörön végzett többszöri ismétlés után pontos pontszámokat fog kapni minden szóra az egyes témakörök tekintetében. A találgatásai egyre jobbak és jobbak lesznek, mert a kontextusból arra fog következtetni, hogy az olyan szavak, mint épületek, járda, metró együtt jelennek meg, és ezért ugyanahhoz a témához kell tartozniuk, amiről könnyen kitalálhatjuk, hogy város.
Az olyan szavak, mint a hegyek, mezők, tengerpart, amelyek talán nem sok képaláírásban jelennek meg együtt, de gyakran előfordulnak a város szavak nélkül, és ezért magasabb pontszámot fognak kapni a természetre vonatkozóan.
Az olyan szavak, mint a fák, virágok, kutyák, égbolt, majdnem ugyanolyan valószínűséggel fognak mindkét témakörbe tartozni, mivel mindkét témakörben előfordulnak.

A fénykép esetében látjuk, hogy 1 szó (átlagos valószínűséggel) a természet kategóriából és 2 szó (nagy valószínűséggel) a városból származik, ebből arra következtetünk, hogy erősebben tartozik a városhoz, mint a természethez, ezért úgy döntünk, hogy a városhoz adjuk.

Mellékjegyzet

Az LDA alkalmazása nem feltétlenül korlátozódik a természetes nyelvi feldolgozásra. Nemrég valósítottam meg egy dolgozatot, ahol az LDA-t( egy neurális hálózattal együtt) arra használjuk, hogy kivonjuk egy kép helyszínspecifikus kontextusát. Ha többet szeretne megtudni erről, kérem, hagyjon megjegyzést vagy üzenetet.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük