Definirea modelului
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. Cele mai bune x cuvinte sunt alese din fiecare subiect pentru a reprezenta subiectul. Dacă x = 10, vom sorta toate cuvintele din topic1 în funcție de scorul lor și vom lua primele 10 cuvinte pentru a reprezenta topicul. Este posibil ca acest pas să nu fie întotdeauna necesar deoarece, dacă corpus-ul este mic, putem stoca toate cuvintele sortate în funcție de scorul lor.
Alternativ, putem stabili un prag pentru scor. Toate cuvintele dintr-un subiect care au un scor peste prag pot fi stocate ca reprezentant al acestuia, în ordinea scorurilor lor.
.Fotografie de Anusha Barwa pe Unsplash
Să spunem că avem 2 subiecte care pot fi clasificate ca fiind legate de PISICI și legate de CÂINI. Un subiect are probabilități pentru fiecare cuvânt, astfel încât cuvinte precum lapte, miau și pisoi, vor avea o probabilitate mai mare în subiectul CAT_related decât în cel DOG_related. Subiectul DOG_related, la fel, va avea probabilități ridicate pentru cuvinte precum cățeluș, lătrat și os.
Dacă avem un document care conține următoarele propoziții:
„Câinilor le place să mestece oase și să aducă bețe”. „Cățeii beau lapte.” „Amândurora le place să latre.”
Potem spune cu ușurință că aparține subiectului DOG_related deoarece conține cuvinte precum câini, oase, căței și lătrat. Chiar dacă conține cuvântul lapte care aparține subiectului CAT_related, documentul aparține subiectului DOG_related deoarece mai multe cuvinte se potrivesc cu acesta.
Ipoteze:
Care document este doar o colecție de cuvinte sau un „sac de cuvinte”. Astfel, ordinea cuvintelor și rolul gramatical al cuvintelor (subiect, obiect, verbe, …) nu sunt luate în considerare în model.
Vorbe precum am/este/este/este/din/la/but/… nu poartă nicio informație despre „subiecte” și, prin urmare, pot fi eliminate din documente ca un pas de preprocesare. De fapt, putem elimina cuvintele care apar în cel puțin %80 ~ %90 din documente, fără a pierde nicio informație. De exemplu, dacă corpus-ul nostru conține numai documente medicale, cuvinte precum om, corp, sănătate etc. ar putea fi prezente în majoritatea documentelor și, prin urmare, pot fi eliminate, deoarece nu adaugă nicio informație specifică care să scoată în evidență documentul.
Știm dinainte câte subiecte dorim. ‘k’ este prestabilit.
Toate atribuirile de subiecte, cu excepția cuvântului curent în cauză, sunt corecte, iar apoi actualizăm atribuirea cuvântului curent folosind modelul nostru de generare a documentelor
Cum funcționează LDA?
Există 2 părți în LDA:
Cuvintele care aparțin unui document, pe care le cunoaștem deja.
Cuvintele care aparțin unui subiect sau probabilitatea de apartenență a cuvintelor la un subiect, pe care trebuie să o calculăm.
Algoritmul pentru găsirea celor din urmă
Se trece prin fiecare document și se atribuie aleatoriu fiecare cuvânt din document la unul dintre cele k subiecte (k este ales în prealabil).
Pentru fiecare document d, treceți prin fiecare cuvânt w și calculați :
p(topic t | document d): proporția de cuvinte din documentul d care sunt atribuite subiectului t. Încearcă să capteze câte cuvinte aparțin subiectului t pentru un anumit document d. Excluzând cuvântul curent. Dacă o mulțime de cuvinte din d aparțin subiectului t, este mai probabil ca cuvântul w să aparțină lui t. ( #cuvinte din d cu t +alfa/ #cuvinte din d cu orice subiect+ k*alfa)
p(cuvânt w| subiect t): proporția de atribuiri la subiectul t în toate documentele care provin din acest cuvânt w. Încearcă să surprindă câte documente se află în subiectul t din cauza cuvântului w. LDA reprezintă documentele ca un amestec de subiecte. În mod similar, un subiect este un amestec de cuvinte. 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.
Fotografie de Soragrit Wongsa pe Unsplash
Decizi să creezi k=2 secțiuni în albumul tău – natură și oraș. Firește, clasificarea nu este atât de clară, deoarece unele fotografii cu orașul au copaci și flori, în timp ce cele cu natura ar putea avea câteva clădiri în ele. Pentru început, decideți să repartizați fotografiile care au în ele doar elemente de natură sau de oraș în categoriile respective, în timp ce pe restul le-ați repartizat la întâmplare.
Observați că o mulțime de fotografii din natură au cuvântul copac în legendele lor. Așa că ați ajuns la concluzia că cuvântul copac și subiectul natură trebuie să fie strâns legate.
În continuare, alegeți cuvântul clădire și verificați câte fotografii sunt în natură pentru că au cuvântul clădire în legenda lor. Nu găsiți multe și acum sunteți mai puțin sigur de apartenența clădirii la subiectul natură și o asociați mai puternic cu subiectul oraș.
Apoi alegeți o fotografie care are legenda „Copacul este în fața clădirii și în spatele unei mașini” și vedeți că se află în categoria natură în prezent. Apoi alegeți cuvântul copac și calculați prima probabilitate p(subiect t | document d): alte cuvinte din legendă sunt clădire și mașină, majoritatea fotografiilor care au legende cu clădire sau mașină sunt în oraș, deci obțineți o probabilitate scăzută. Acum a doua probabilitate p(cuvânt w| subiect t): știm că multe fotografii din natură au cuvântul copaci în ele. Deci aici obțineți un scor ridicat. Actualizați probabilitatea ca arborele să aparțină naturii prin înmulțirea celor două. Obțineți o valoare mai mică decât înainte pentru copac în subiectul natură, deoarece acum ați văzut acel copac și cuvinte precum clădire/mașină în aceeași legendă, ceea ce implică faptul că arborii pot fi găsiți și în orașe. Din același motiv, atunci când actualizați probabilitatea pentru apartenența copacului la subiectul oraș, veți observa că aceasta va fi mai mare decât era înainte.
După mai multe iterații pe toate fotografiile și pentru fiecare subiect, veți avea scoruri exacte pentru fiecare cuvânt în raport cu fiecare subiect. Ghicirile dvs. vor fi din ce în ce mai bune, deoarece veți concluziona din context că cuvinte precum clădiri, trotuar, metrou apar împreună și, prin urmare, trebuie să aparțină aceluiași subiect, pe care îl putem ghici cu ușurință că este oraș. Cuvintele precum munți, câmpuri, plajă, care s-ar putea să nu apară împreună în multe legende, dar apar adesea fără cuvintele oraș și, prin urmare, vor avea scoruri mai mari pentru natură. În timp ce cuvinte precum copaci, flori, câini, cer vor avea aproape aceeași probabilitate de a fi în oricare dintre ele, deoarece apar în ambele subiecte.
În ceea ce privește fotografia, vedeți că are 1 cuvânt (cu probabilitate medie) din categoria natură și 2 cuvinte (cu probabilitate mare) din oraș, concluzionați că aparține mai mult orașului decât naturii și, prin urmare, decideți să o adăugați în oraș.
Nota suplimentară
Aplicațiile LDA nu trebuie să se limiteze la prelucrarea limbajului natural. Am implementat recent o lucrare în care folosim LDA( împreună cu o rețea neuronală) pentru a extrage contextul specific scenei unei imagini. Dacă sunteți interesat să aflați mai multe despre asta, vă rog să lăsați un comentariu sau un mesaj.
.