Průvodce začátečníka latentní dirichletovou alokací(LDA)

Tématické modelování je metoda neřízené klasifikace dokumentů, podobná shlukování číselných dat, která nachází určité přirozené skupiny položek (témata), i když si nejsme jisti, co hledáme.

Dokument může být součástí více témat, podobně jako při fuzzy shlukování (soft clustering), kdy každý datový bod patří do více než jednoho shluku.

Proč tematické modelování?

Tematické modelování poskytuje metody pro automatické uspořádání, pochopení, vyhledávání a shrnutí rozsáhlých elektronických archivů.
Může pomoci s následujícími úkoly:

  • objevení skrytých témat ve sbírce.
  • klasifikace dokumentů do objevených témat.
  • využití klasifikace k uspořádání/shrnutí/vyhledávání dokumentů.

Řekněme, že dokument patří do témat jídlo, psi a zdraví. Pokud se tedy uživatel zeptá na „žrádlo pro psy“, může najít výše uvedený dokument jako relevantní, protože pokrývá tato témata(kromě jiných témat). Jsme schopni zjistit jeho relevanci vzhledem k dotazu, aniž bychom museli projít celý dokument.

Anotací dokumentu na základě témat předpovězených metodou modelování jsme tedy schopni optimalizovat proces vyhledávání.

LDA

Jedná se o jednu z nejoblíbenějších metod modelování témat. Každý dokument se skládá z různých slov a každé téma má také různá slova, která k němu patří. Cílem metody LDA je najít témata, ke kterým dokument patří, na základě slov v něm obsažených. Jste hodně zmatení? Zde je příklad, který vás tím provede.

Definice modelu

.

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.
    Z každého tématu je vybráno x nejlepších slov, která reprezentují dané téma. Pokud x = 10, seřadíme všechna slova v tématu1 podle jejich skóre a vybereme 10 nejlepších slov, která budou reprezentovat téma.
    Tento krok nemusí být vždy nutný, protože pokud je korpus malý, můžeme uložit všechna slova seřazená podle jejich skóre.
  • Alternativně můžeme nastavit práh skóre. Všechna slova v tématu, která mají skóre vyšší než práh, můžeme uložit jako jeho zástupce, a to v pořadí podle jejich skóre.

.

Foto: Anusha Barwa on Unsplash

Řekněme, že máme 2 témata, která lze klasifikovat jako CAT_related a DOG_related. Téma má pro každé slovo pravděpodobnost, takže slova jako mléko, mňau a kotě budou mít v tématu CAT_related vyšší pravděpodobnost než v tématu DOG_related. Stejně tak téma DOG_related bude mít vysoké pravděpodobnosti pro slova jako štěně, štěkat a kost.

Máme-li dokument obsahující následující věty:

„Psi rádi žvýkají kosti a aportují klacky.“
„Štěňata pijí mléko.“
„Oba rádi štěkají.“

Můžeme snadno říci, že patří do tématu DOG_related, protože obsahuje slova jako Psi, kosti, štěňata a štěkat. I když obsahuje slovo mléko, které patří do tématu CAT_related, dokument patří do DOG_related, protože se k němu hodí více slov.

Předpoklady:

  • Každý dokument je jen sbírka slov neboli „pytel slov“. Pořadí slov a gramatická role slov (podmět, předmět, sloveso, …) se tedy v modelu nezohledňují.
  • Slova jako jsem/je/jsou/od/a/ale/… nenesou žádnou informaci o „tématech“, a proto je lze z dokumentů v rámci předzpracování vyřadit. Ve skutečnosti můžeme odstranit slova, která se vyskytují alespoň v 80 % ~ 90 % dokumentů, aniž bychom ztratili jakoukoli informaci.
    Příklad pokud náš korpus obsahuje pouze lékařské dokumenty, slova jako člověk, tělo, zdraví atd. se mohou vyskytovat ve většině dokumentů, a proto je lze odstranit, protože nepřidávají žádnou specifickou informaci, která by dokument odlišila.
  • Předem víme, kolik témat chceme. ‚k‘ je předem rozhodnuto.
  • Všechna přiřazení témat kromě aktuálního slova, o které se jedná, jsou správná, a pak aktualizujeme přiřazení aktuálního slova pomocí našeho modelu generování dokumentů

Jak funguje LDA?

V LDA jsou dvě části:

  • Slova, která patří do dokumentu, která již známe.
  • Slova, která patří do tématu, nebo pravděpodobnost, že slova patří do tématu, kterou potřebujeme vypočítat.

Algoritmus pro zjištění toho druhého

  • Projděte každý dokument a náhodně přiřaďte každé slovo v dokumentu k jednomu z k témat (k je předem zvoleno).
  • Pro každý dokument d projděte každé slovo w a vypočítejte :
  1. p(téma t | dokument d): podíl slov v dokumentu d, která jsou přiřazena k tématu t. Snaží se zachytit, kolik slov patří k tématu t pro daný dokument d. S výjimkou aktuálního slova.
    Pokud hodně slov z d patří k t, je pravděpodobnější, že slovo w patří k t.
    ( #slova v d s t +alfa/ #slova v d s libovolným tématem+ k*alfa)
  2. p(slovo w|téma t): podíl přiřazení k tématu t na všech dokumentech, které pocházejí z tohoto slova w. Snaží se zachytit, kolik dokumentů patří do tématu t kvůli slovu w.
    LDA představuje dokumenty jako směs témat. Podobně je téma směsicí slov. 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: Soragrit Wongsa na Unsplash

V albu se rozhodnete vytvořit k=2 sekce – příroda a město. Rozdělení samozřejmě není tak jednoznačné, protože na některých fotografiích s městem jsou stromy a květiny, zatímco na fotografiích s přírodou mohou být nějaké budovy. Pro začátek se rozhodnete zařadit fotografie, které mají v sobě pouze prvky přírody nebo města, do příslušných kategorií, zatímco ostatní jste zařadili náhodně.

Všimnete si, že mnoho fotografií v přírodě má v popisku slovo strom. Dospěli jste tedy k závěru, že slovo strom a téma příroda spolu musí úzce souviset.

Poté vyberete slovo budova a zkontrolujete, kolik fotografií je v přírodě, protože mají v popisku slovo budova. Mnoho jich nenajdete a nyní jste si méně jisti tím, že budova patří do tématu příroda, a silněji si ji spojujete s tématem město.

Poté vyberete fotografii, která má popisek „Strom je před budovou a za autem“, a zjistíte, že je aktuálně v kategorii příroda.
Poté vyberete slovo strom a vypočtete první pravděpodobnost p(téma t | dokument d): další slova v popisku jsou budova a auto, většina fotografií, které mají popisky s budovou nebo autem, je ve městě, takže dostanete nízkou pravděpodobnost.
Nyní druhá pravděpodobnost p(slovo w| téma t): víme, že mnoho fotografií v přírodě má slovo strom. Zde tedy získáte vysoké skóre.
Součinem těchto dvou hodnot aktualizujete pravděpodobnost, že strom patří do přírody. Získáte nižší hodnotu než předtím pro strom v tématu příroda, protože nyní jste viděli, že strom a slova jako budova/auto jsou ve stejném popisku, což znamená, že stromy se mohou vyskytovat i ve městech.
Z téhož důvodu, když aktualizujete pravděpodobnost pro strom patřící do tématu město, zjistíte, že bude větší, než jaká byla předtím.

Po několika iteracích nad všemi fotografiemi a pro každé téma budete mít přesné skóre pro každé slovo s ohledem na každé téma. Vaše odhady budou stále lepší a lepší, protože z kontextu usoudíte, že slova jako budovy, chodník, metro se vyskytují společně, a tudíž musí patřit do stejného tématu, které můžeme snadno odhadnout na město.
Slova jako hory, pole, pláž, která se možná nevyskytují společně v mnoha titulcích, ale vyskytují se často bez slov město, a proto budou mít vyšší skóre pro přírodu.
Proti tomu slova jako stromy, květiny, psi, obloha budou mít téměř stejnou pravděpodobnost, že budou patřit do obou témat, protože se vyskytují v obou tématech.

Když u fotografie vidíte, že má 1 slovo (se střední pravděpodobností) z kategorie příroda a 2 slova (s vysokou pravděpodobností) z kategorie město, dojdete k závěru, že patří do města silněji než do přírody, a proto se rozhodnete přidat ji do města.

Poznámka na okraj

Použití metody LDA se nemusí omezovat pouze na zpracování přirozeného jazyka. Nedávno jsem realizoval práci, ve které používáme LDA( spolu s neuronovou sítí) k extrakci kontextu obrázku specifického pro danou scénu. Pokud máte zájem dozvědět se o tom více, zanechte mi prosím komentář nebo zprávu.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *