Guida per principianti alla Latent Dirichlet Allocation(LDA)

La modellazione per argomenti è un metodo per la classificazione non supervisionata dei documenti, simile al clustering su dati numerici, che trova alcuni gruppi naturali di elementi (argomenti) anche quando non siamo sicuri di cosa stiamo cercando.

Un documento può far parte di più argomenti, un po’ come nel fuzzy clustering (soft clustering) in cui ogni punto dati appartiene a più di un cluster.

Perché la modellazione per argomenti?

La modellazione per argomenti fornisce metodi per organizzare, comprendere, cercare e riassumere automaticamente grandi archivi elettronici.
Può aiutare nei seguenti casi:

  • scoprire i temi nascosti nella collezione.
  • classificare i documenti nei temi scoperti.
  • utilizzare la classificazione per organizzare/sintetizzare/ricercare i documenti.

Per esempio, diciamo che un documento appartiene ai temi cibo, cani e salute. Quindi, se un utente interroga “cibo per cani”, potrebbe trovare il suddetto documento rilevante perché copre questi argomenti (tra gli altri argomenti). Siamo in grado di capire la sua rilevanza rispetto alla query senza nemmeno passare attraverso l’intero documento.

Quindi, annotando il documento, sulla base degli argomenti predetti dal metodo di modellazione, siamo in grado di ottimizzare il nostro processo di ricerca.

LDA

È uno dei metodi di modellazione di argomenti più popolari. Ogni documento è composto da varie parole, e ogni argomento ha anche varie parole che gli appartengono. Lo scopo di LDA è quello di trovare gli argomenti a cui un documento appartiene, basandosi sulle parole in esso contenute. Molto confuso? Ecco un esempio per spiegarvi come funziona.

Definizione modello

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.
    Le migliori x parole sono scelte da ogni argomento per rappresentare l’argomento. Se x = 10, ordineremo tutte le parole dell’argomento1 in base al loro punteggio e prenderemo le prime 10 parole per rappresentare l’argomento.
    Questo passo potrebbe non essere sempre necessario perché se il corpus è piccolo possiamo memorizzare tutte le parole ordinate in base al loro punteggio.
  • In alternativa, possiamo impostare una soglia sul punteggio. Tutte le parole di un argomento che hanno un punteggio superiore alla soglia possono essere memorizzate come suo rappresentante, in ordine di punteggio.

Foto di Anusha Barwa su Unsplash

Diciamo di avere 2 argomenti che possono essere classificati come CAT_related e DOG_related. Un argomento ha delle probabilità per ogni parola, quindi parole come latte, miao, e gattino, avranno una probabilità più alta nell’argomento CAT_related che in quello DOG_related. L’argomento DOG_related, allo stesso modo, avrà alte probabilità per parole come puppy, bark, e bone.

Se abbiamo un documento che contiene le seguenti frasi:

“Ai cani piace masticare le ossa e prendere i bastoni”.
“I cuccioli bevono il latte.”
“A entrambi piace abbaiare.”

Possiamo facilmente dire che appartiene all’argomento DOG_related perché contiene parole come Dogs, bones, puppies, e bark. Anche se contiene la parola latte che appartiene all’argomento CAT_related, il documento appartiene a DOG_related perché più parole vi corrispondono.

Assunzioni:

  • Ogni documento è solo una collezione di parole o un “sacco di parole”. Quindi, l’ordine delle parole e il ruolo grammaticale delle parole (soggetto, oggetto, verbi, …) non sono considerati nel modello.
  • Parole come am/is/are/of/a/the/but/… non portano alcuna informazione sugli “argomenti” e quindi possono essere eliminate dai documenti come passo di preprocessing. Infatti, possiamo eliminare le parole che ricorrono in almeno il %80 ~ %90 dei documenti, senza perdere alcuna informazione.
    Per esempio, se il nostro corpus contiene solo documenti medici, parole come umano, corpo, salute, ecc potrebbero essere presenti nella maggior parte dei documenti e quindi possono essere rimosse in quanto non aggiungono alcuna informazione specifica che possa far risaltare il documento.
  • Sappiamo in anticipo quanti argomenti vogliamo. Tutti gli argomenti assegnati tranne la parola corrente in questione sono corretti, e quindi aggiorniamo l’assegnazione della parola corrente usando il nostro modello di come i documenti sono generati

Come funziona LDA?

Ci sono 2 parti in LDA:

  • Le parole che appartengono a un documento, che già conosciamo.
  • Le parole che appartengono a un argomento o la probabilità che le parole appartengano a un argomento, che dobbiamo calcolare.

L’algoritmo per trovare quest’ultimo

  • Passa attraverso ogni documento e assegna casualmente ogni parola del documento a uno dei k argomenti (k è scelto in anticipo).
  • Per ogni documento d, esamina ogni parola w e calcola :
  1. p(topic t | document d): la proporzione di parole nel documento d che sono assegnate al topic t. Cerca di catturare quante parole appartengono al topic t per un dato documento d. Escludendo la parola corrente.
    Se molte parole di d appartengono a t, è più probabile che la parola w appartenga a t.
    ( #parole in d con t +alpha/ #parole in d con qualsiasi argomento+ k*alpha)
  2. p(parola w| argomento t): la proporzione di assegnazioni all’argomento t su tutti i documenti che provengono da questa parola w. Cerca di catturare quanti documenti sono nell’argomento t a causa della parola w.
    LDA rappresenta i documenti come una miscela di argomenti. Allo stesso modo, un argomento è un miscuglio di parole. 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 di Soragrit Wongsa su Unsplash

Hai deciso di creare k=2 sezioni nel tuo album – natura e città. Naturalmente, la classificazione non è così chiara perché alcune fotografie con la città hanno alberi e fiori mentre quelle con la natura potrebbero avere alcuni edifici. Tu, come inizio, decidi di assegnare le fotografie che hanno solo elementi di natura o città nelle loro rispettive categorie, mentre le altre le assegni a caso.

Ti accorgi che molte fotografie di natura hanno la parola albero nelle loro didascalie. Quindi hai concluso che la parola albero e l’argomento natura devono essere strettamente correlati.

Poi scegli la parola edificio e controlli quante fotografie sono in natura perché hanno la parola edificio nella loro didascalia. Non ne trovi molte e ora sei meno sicuro che edificio appartenga all’argomento natura e lo associ più fortemente all’argomento città.

Poi scegli una fotografia che ha la didascalia “L’albero è davanti all’edificio e dietro una macchina” e vedi che è nella categoria natura attualmente.
Allora scegliete la parola albero, e calcolate la prima probabilità p(argomento t | documento d): le altre parole nella didascalia sono edificio e auto, la maggior parte delle fotografie che hanno didascalie con edificio o auto sono in città, quindi ottenete una bassa probabilità.
Ora la seconda probabilità p(parola w| argomento t): sappiamo che molte fotografie in natura hanno la parola alberi. Quindi qui si ottiene un punteggio alto.
Aggiornate la probabilità che l’albero appartenga alla natura moltiplicando i due. Si ottiene un valore più basso di prima per albero in argomento natura perché ora si è visto quell’albero e parole come edificio/auto nella stessa didascalia, implicando che gli alberi si possono trovare anche in città.
Per lo stesso motivo, quando aggiornate la probabilità che l’albero appartenga all’argomento città, noterete che sarà maggiore di quello che era prima.

Dopo iterazioni multiple su tutte le fotografie e per ogni argomento, avrete punteggi accurati per ogni parola rispetto ad ogni argomento. Le tue ipotesi continueranno a migliorare perché concluderai dal contesto che parole come edifici, marciapiede, metropolitana appaiono insieme e quindi devono appartenere allo stesso argomento, che possiamo facilmente indovinare essere città.
Parole come montagne, campi, spiaggia che potrebbero non apparire insieme in molte didascalie ma appaiono spesso senza le parole città e quindi avranno punteggi più alti per la natura.
Mentre parole come alberi, fiori, cani, cielo avranno quasi la stessa probabilità di essere in entrambe le categorie, dato che appaiono in entrambi gli argomenti.

Per quanto riguarda la fotografia, si vede che ha 1 parola (con probabilità media) dalla categoria natura e 2 parole (con alta probabilità) dalla città, si conclude che appartiene più fortemente alla città che alla natura e quindi si decide di aggiungerla in città.

Nota a margine

Le applicazioni di LDA non devono essere limitate al Natural Language Processing. Recentemente ho realizzato un lavoro in cui usiamo LDA (insieme a una rete neurale) per estrarre il contesto specifico di un’immagine. Se siete interessati a saperne di più, lasciate un commento o un messaggio.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *