NLP cu R partea 1: Modelarea subiectelor către identificați subiectele în recenziile restaurantelor

(Jurriaan Nagelkerke) ( 13 noiembrie 2020)

Această poveste este scrisă de și . Face parte din NLP cu R series ( Prelucrarea limbajului natural în scopuri predictive cu R ) unde folosim Modelarea subiectelor, încorporarea cuvintelor, transformatoarele și BERT.

Într-o succesiune din articole comparăm diferite tehnici NLP pentru a vă arăta cum obținem informații valoroase din textul nestructurat. Acum aproximativ un an am adunat recenzii despre restaurantele olandeze. Ne întrebam dacă „înțelepciunea mulțimii” – recenziile vizitatorilor restaurantelor – ar putea fi folosită pentru a prezice care restaurante sunt cele mai susceptibile de a primi o nouă stea Michelin. Citiți această postare pentru a vedea cum a funcționat acest lucru. Am folosit modelarea subiectelor ca instrument principal pentru a extrage informații din textele recenziei și le-am combinat cu tehnici de modelare predictivă pentru a ajunge la predicțiile noastre.

Am primit multă atenție cu predicțiile noastre și, de asemenea, întrebări despre modul în care am făcut partea de analiză a textului. Pentru a răspunde la aceste întrebări, vom explica abordarea noastră în detaliu în articolele următoare. Dar nu am încetat să explorăm tehnicile NLP după publicarea noastră și, de asemenea, ne place să împărtășim idei de la adăugarea mai multor tehnici NLP noi. Mai exact vom folosi două tipuri de încorporări de cuvinte – un model clasic Word2Vec și un model de încorporare GLoVe – vom folosi transferul de învățare cu încorporări de cuvinte pre-antrenate și vom folosi BERT . Comparăm valoarea adăugată a acestor tehnici NLP avansate cu modelul nostru de temă de bază din același set de date. Arătând ce am făcut și cum am făcut-o, sperăm să îi îndrumăm pe alții care sunt dornici să folosească date textuale pentru propriile lor eforturi în domeniul științei datelor.

Într-un (articol anterior) am arătat cum am pregătit datele noastre pentru a fi utilizate pentru diverse tehnici NLP. Aici, începem seria noastră de articole despre tehnicile NLP prin introducerea Modelarea subiectelor și vă vom arăta cum să identificați subiectele, să vizualizați modelul subiectului rezultate. Într-un articol (ulterior), vă vom arăta cum să utilizați rezultatele modelului subiectului într-un model predictiv.

Ce este modelarea subiectelor?

Pentru a descoperi subiectele care recenzii despre restaurante scriu despre în recenziile lor despre restaurante, folosim Topic Modeling. Dar ce este un model de subiect? În învățarea automată și procesarea limbajului natural, un model de subiect este un tip de model statistic care poate fi utilizat pentru descoperirea subiectelor abstracte care apar într-o colecție de documente. Există o serie de algoritmi pentru extragerea subiectelor dintr-o colecție de texte, dar Alocarea latentă a Dirichlet este unul dintre cei mai populari algoritmi, deoarece este eficient subiecte foarte interpretabile. Interpretabilitatea subiectelor este o caracteristică importantă a unui model de subiect, întrucât nu dorim doar să găsim grupuri de cuvinte relevante statistic, ci și să putem eticheta subiectele identificate cu un nume de subiect cu care alții se pot referi. Ca atare, modelarea subiectelor are unele asemănări cu tehnicile de clusterizare, cum ar fi KMeans, în care interpretarea este, de asemenea, la fel de importantă ca și statisticile pentru a determina ce este o soluție „bună”. Cum funcționează modelarea subiectului / LDA, este vizualizat de Blei ca:

După cum se arată în figură:

  • Fiecare topic este o distribuție pe cuvinte
  • Fiecare document este o distribuție pe subiecte

Deci, după ce am terminat modelarea subiectelor recenziile noastre:

  • ar trebui să știm care sunt subiectele sau subiectele despre care recenzorii scriu în recenziile lor despre restaurant,
  • știm ce jetoane sau cuvinte sunt cele mai importante în aceste subiecte și
  • putem spune pentru fiecare recenzie individuală în ce măsură este vorba despre subiectele identificate și acest lucru poate fi un mix – 80\% despre subiectul X și 20\% despre subiectul Y .

Pasul 0: Configurarea contextului nostru

Mai întâi , ne-am configurat mediul de lucru cu pachetele necesare pentru a efectua modelarea subiectelor.

În (blog pe prepar date textuale) am introdus deja pe scurt textul ordonat și ordonat.Aici, adăugăm câteva alte pachete în listă:

  • topicmodels este un pachet pentru estimarea modelelor de subiecte cu LDA și versiuni pe structurile de date create cu pachetul tm
  • tm este un pachet puternic, generic, cu tot felul de funcționalități de extragere a textului, printre care crearea documentului matricile de termeni, de care avem nevoie pentru modelarea subiectelor
  • ldavis este un pachet excelent pentru a vizualiza și interpreta modelul subiectului și este foarte util la etichetare topicuri

Pasul 1. Încărcați datele preprocesate

Înainte ne adâncim în latura analitică a lucrurilor, avem nevoie de câteva date textuale pregătite. După cum știu toți oamenii de știință de date adevărate, pregătirea corectă a datelor îți ia cea mai mare parte a timpului și este cea mai decisivă pentru calitatea rezultatelor analizei cu care ajungi. Pregătirea datelor textuale este o altă ceașcă de ceai în comparație cu pregătirea datelor numerice sau categorice structurate. În acest blog, accentul nostru este pus pe analiza textului. Cu toate acestea, vrem să vă arătăm cum am curățat și pregătit datele pe care le-am adunat. În acest (blog anterior), explicăm în detaliu modul în care am preprocesat datele, rezultând următoarele 5 fișiere pe care le putem folosi în analiza noastră NLP:

  • reviews.csv: un fișier CSV cu texte de recenzie originale și pregătite – combustibilul pentru analizele noastre NLP. (cheie inclusă: restoreviewid, de unde și identificatorul unic pentru o recenzie)
  • labels.csv : a fișier CSV cu valori 1/0, care indică dacă recenzia este o recenzie pentru un restaurant Michelin sau nu (cheie inclusă: restoreviewid)
  • restoid.csv : un fișier CSV cu ID-ul restaurantului, pentru a putea determina ce recenzii aparțin unui restaurant (cheie inclusă: restoreviewid)
  • trainids.csv : un fișier CSV cu valori 1/0, care indică dacă recenzia trebuie utilizată pentru antrenament sau testare – deja împărțim recenziile în tren / test pentru a permite reutilizarea acelorași eșantioane pentru comparații corecte între tehnici (inclusă cheia: restoreviewid)
  • features.csv : un fișier CSV cu alte caracteristici referitoare la recenzii (cheie inclusă: restoreviewid)

Aceste fișiere cu Datele curățate și relevante pentru tehnicile NLP vă sunt puse la dispoziție prin stocare publică blob, astfel încât să puteți rula tot codul pe care vi-l prezentăm și să vedeți cum funcționează lucrurile mai detaliat. Pentru modelul nostru de subiecte, avem nevoie de trei dintre aceste fișiere:

Pasul 2: Pregătiți datele pentru subiect modelare

Pornind de la textele de recenzie curățate, trebuie să facem câteva lucruri înainte de a putea estima modelele noastre de subiecte:

  1. Tokenizează textul pregătit (inclusiv bigramele)
  2. Exemple de recenzii pentru instruirea modelului subiectului nostru
  3. Filtrează jetoanele relevante
  4. Creați matrice de termeni de documente

2.1. Tokenizează textul pregătit (inclusiv bigramele)

Alocarea latentă a Dirichlet (LDA), tehnica pe care o folosim pentru modelarea subiectelor, este o tehnică „sac de cuvinte”. Ceea ce înseamnă acest lucru este că tehnica NLP nu privește ordinea jetoanelor atunci când analizează textul. Prin urmare, unde jetonul este situat în text și ce alte jetoane sunt apropiate de jeton (jetoane precedente / ulterioare) în document nu este luat în considerare. Este ca și cum toate jetoanele din textul documentului sunt aruncate într-o pungă, amestecându-le, dar păstrând informațiile că jetoanele sunt în același document. Prin urmare, s-ar putea să pierdem informații cruciale dacă o mulțime de colocații interesante – combinații frecvente de jetoane – sunt prezente în text. Exemple populare sunt nume de persoane („Donald Trump”, „Jonnie Boer”) sau locuri („Statele Unite”, „Den Haag”), dar și combinații de cuvinte specifice contextului ar putea fi importante pentru a fi incluse în modelul tematic: „witte wijn ( vin alb ), rode wijn , ( vin roșu ), gaan eten ( mergi să mănânci ). Pentru a ne asigura că nu pierdem aceste colocații importante, adăugăm bigramele pregătite care sunt prezente în textul nostru. Amintiți-vă că am eliminat deja cuvintele de blocare și interpunerea din baza noastră de date.

După ce am adăugat bigramuri la textele încărcate și curățate, am împărțit textele din nou pentru a ajunge la un cadru de date în care fiecare rând este o combinație de recenzie – token. Filtrăm recenziile care au devenit prea scurte (5 jetoane) după eliminarea cuvintelor de oprire. În acest format, suntem pregătiți pentru ultimele noastre pregătiri înainte să putem începe modelarea subiectelor.

2.2 Exemple de recenzii pentru instruirea modelului subiectului nostru

În următorul nostru pas, vom filtra cele mai relevante jetoane pentru a le include în matricea termenului documentului și ulterior în modelarea subiectului.Dar mai întâi trebuie să stabilim ce documente (recenzii) sunt cele mai importante pentru noi. Din anumite motive, nu dorim să folosim toate recenziile ca elemente de intrare pentru modelul subiectului nostru:

  • În final, dorim să folosim subiectele într-un model de predicție pentru prezice stele Michelin. Este cea mai bună practică să renunțăm la un set de teste înainte de a construi modelul subiectului și de a folosi rezultatele acestuia în sarcina predictivă din aval. Astfel construim atât modelul nostru de subiect, cât și predicția noastră cu privire la datele trenurilor și păstrăm datele de testare nevăzute până la evaluare.
  • După cum se arată mai jos, nu mai mult de 3\% din toate recenziile sunt recenzii Michelin. Prin creșterea proporției recenziilor Michelin în setul de trenuri pe care îl folosim pentru modelarea subiectelor, este mai probabil ca subiectele specifice care sunt discutate în recenziile Michelin să fie identificate.

Din aceste motive, va concentra restul pregătirii către modelul nostru de subiect și estimarea modelelor de subiect pe un subset de recenzii. Acest subset conține doar recenzii care sunt deja specificate ca cazuri de instruire în caietul nostru de pregătire a datelor. În cadrul acestui subset, luăm toate recenziile Michelin (aproximativ 3.000) și completăm cu recenziile non-Michelin pentru a ajunge la aproximativ 10.000 recenzii:

# A tibble: 2 x 3
ind\_michelin n pct

1 0 141554 97\%
2 1 4313 3\%
# A tibble: 5 x 5
# Groups: train\_smpl, train [3]
train\_smpl train ind\_michelin n\_reviews n\_tokens

1 0 0 0 40997 433179
2 0 0 1 1290 35129
3 0 1 0 88505 773887
4 1 1 0 7181 111435
5 1 1 1 2971 70548
[1] "10152 unique reviews and 163137 unique tokens selected to train topic model"

2.3 Jetoane de filtrare

Acum că am adăugat bigramuri la jetoane și ne-am re-simbolizat textele, avem încă multe, multe jetoane disponibile pentru modelul nostru de subiecte . Este cea mai bună practică să scăpați de termenul lung de termeni mai puțini. Să vedem mai întâi cum arată distribuția frecvenței simbolurilor. Amintiți-vă că în (blogul nostru de pregătire a datelor) am eliminat deja toate cuvintele de oprire din texte, inclusiv 128 de cuvinte „oprire” personalizate de înaltă frecvență pe care le-am specificat examinând frecvența simbolului la pregătirea datelor. „c231bbb861”>

Complotul de mai sus arată clar că o cantitate imensă de jetoane unice apare rar în toate recenziile, 75\% apare o singură dată.

Concentrați-vă pe jetoanele care apar de 5 ori sau mai multe în corpusul trenului

După cum putem vedea din numărul de frecvențe de jetoane, există o mulțime de jetoane care apar doar o dată sau de câteva ori: Aproximativ 92\% din toate jetoanele unice apar de mai puțin de 5 ori în corpus de recenzii. Aceste jetoane cu frecvență joasă au impact asupra analizei modelului subiectului. Pentru a ne concentra pe jetoanele utilizate frecvent, selectăm jetoane care apar de 5 ori sau mai mult în datele pregătite ale trenului. Acest lucru este suficient, sperăm, pentru a învăța subiecte din jetoane care apar împreună în aceleași recenzii. Optimizând modelul subiectului, putem varia frecvența minimă pentru a evalua impactul asupra rezultatelor.

De ce nu TF-IDF?

După ce ați citit câteva despre instrumentele de analiză a textului, vă puteți întreba: De ce nu folosim TF-IDF pentru a selecta cele mai relevante jetoane? TF-IDF înseamnă Term Frequency – Frecvența inversă a documentului. Această valoare combină frecvența termenului – cât de des este prezent simbolul într-un document? – cu inversarea frecvenței documentelor – în câte documente unice este prezent termenul? Deși TF-IDF este adesea o alegere bună pentru a selecta cele mai relevante jetoane, nu este în contextul nostru, unde dimensiunea documentului este limitată și reapariția aceluiași jeton în același text este redusă. Nu de multe ori, un jeton are o frecvență de termen mai mare de 1. Ca urmare, doar partea Frecvența documentului invers este decisivă și acest lucru favorizează jetoanele care apar doar într-una sau două recenzii. Din acest motiv, nu folosim TF-IDF aici, ci analizăm frecvența generală pentru a alege jetoane relevante pentru modelarea subiectului. De asemenea, pentru că am eliminat deja lista personalizată de cuvinte stop din textul nostru, prin urmare, jetoanele prea frecvente sunt deja eliminate.

Prin filtrarea jetoanelor rare, am redus numărul de jetoane de luat în considerare. în LDA-ul nostru în mod dramatic, concentrându-ne pe cele mai frecvente jetoane de 12K (8\%) și eliminând jetoanele de 146K (92\%) care sunt prea rare în corpus. Aceste jetoane selectate reprezintă totuși 73\% din toate jetoanele din documente:

# A tibble: 2 x 5
min\_5\_freq n\_unique\_tokens n\_tokens pct\_unique\_tokens pct\_all\_tokens

1 token frequency: 2 token frequency: >=5 12525 518146 8\% 73\%

2.4 Creați DTM

După filtrarea jetoanelor pe care dorim să le folosim pentru a construi modelul tematic, putem crea intrarea pentru LDA. Acest lucru necesită un document-term-matrix sau DTM deci o matrice cu rândurile cu toate documentele noastre (recenzii) și în coloane cu toți termenii ( jetoane relevante). Rețineți că folosim frecvența generală a simbolurilor pentru parametrul value.S-ar putea să vă așteptați la frecvența termenului specific documentului aici, cu toate acestea, folosim frecvența generală a simbolurilor pentru a acorda mult mai mult accent în găsirea modelului de subiect termenilor care sunt mai frecvenți în general; având în vedere durata scurtă a recenziilor (în comparație cu cărțile sau articolele care sunt adesea folosite în modelarea subiectelor), probabilitatea ca un singur simbol să apară mai des în recenzie este limitată.

DTM dimensions: 
Documents (10152) x Tokens (12525) (average token frequency: 702.3)

Pasul 3: Elaborați modelul subiectului

Acum că avem un DTM, suntem pregătiți să începem modelarea subiectului! -grame de inclus, frecvența minimă a jetoanelor pentru a utiliza jetoanele … Și mai trebuie făcute câteva alegeri.

LDA are o serie de parametri care au impact asupra rezultatului, dintre care cei mai importanți sunt:

  • k : numărul de subiecte! Da, acesta este un parametru și nu un Rezultat. Similar tehnicilor de grupare, cum ar fi KMeans, trebuie să spuneți câte clustere / subiecte doriți să identificați ify.
  • metodă : pachetul topicmodels permite diferite metode de optimizare, VEM algorithm sau Gibbs sampling, implicit este VEM.
  • control : lista variabilelor de control pentru a ghida estimarea – parametrii relevanți depind de metoda aleasă VEM sau Gibbs, dar cei mai importanți sunt: ​​
  • nstart : numărul de rulări de efectuat cu aceleași setări, dar semințe diferite
  • seed : Pentru reproductibilitate poate fi setată o sămânță aleatorie. Dacă nstart> 1, trebuie să furnizați mai multe semințe, 1 per nstart (de exemplu, c (123, 234 „, 345”))
  • best : Dacă este TRUE (implicit), se păstrează doar rularea cu cel mai bun rezultat de ajustare, set, dacă FALSE se returnează o listă cu toate rulările, astfel încât să puteți examina toate dintre ele.

Pentru o prezentare completă a tuturor parametrilor și setărilor disponibile, consultați vigneta pachetului topicmodels .

Estimarea modelului de subiect LDA

Parametrul cel mai impactant este k : numărul de subiecte de identificat. Cum se alege o valoare pentru k? Acesta este parțial un rezultat al discuției (ce număr de subiecte ne așteptăm să găsim în acest context?) Și al probei & eroare (încercați diferite valori ale k, evaluați rezultatele). Unii oameni de știință de date s-ar putea să nu le placă, preferă să se uite la statistici pentru a-i îndruma în acest proces, dar pentru cei familiarizați cu alte tehnici nesupravegheate de știință a datelor, cum ar fi KMeans, acest lucru nu este atât de nou. Regruparea și, de asemenea, modelarea subiectelor este într-o oarecare măsură mai multă artă decât știință. Ghidat de tehnici și măsuri statistice, un om de știință al datelor sculptează o soluție de modelare a subiectelor care se potrivește nevoilor (de afaceri). În cazul în care aveți nevoie de un punct de plecare pentru k cu un anumit fundal statistic, puteți încerca această abordare sau aceasta Abordare .

Să începem cu un model de subiect pentru a identifica 3 subiecte și a explora rezultatul. Nu avem niciun motiv să schimbăm alte valori implicite în acest moment.

Evaluează modelul subiectului

Modelul de subiect este potrivit, deci, haideți să explorăm!

Obiectul lda montat conține o serie de matrici:

  • phi : matrice cu distribuție de jetoane (pe rânduri) pe subiecte (în coloane)
  • theta : matrice cu distribuție de documente (deci: recenzii, pe rânduri) pe subiecte (în coloane)

Atât pentru phi, cât și pentru theta, suma pe toate coloanele este egală cu 1, adică:

  • Pentru phi, suma tuturor scorurilor de jetoane dintr-un subiect este 1 – scoruri mai mari, ceea ce înseamnă o importanță mai mare a jetonului din cadrul subiectului .
  • Pentru theta, suma tuturor scorurilor subiectelor dintr-un document este de 1 – scoruri mai mari, ceea ce înseamnă că subiectul este mai prezent în documentul respectiv.

Pentru a explora modelul nostru de subiecte, să începem prin a analiza cele mai importante jetoane pe subiect. Pentru a face acest lucru, trebuie să specificăm când un simbol este important pentru un subiect. Am putea argumenta că simbolul este important pentru subiect atunci când are o mare probabilitate să apară în cadrul unui subiect p(token|topic). Să vedem cum arată acest lucru pentru modelul nostru de subiecte cu 3 subiecte. Vom folosi o funcție elegantă a pachetului tidytext, care ajută la pregătirea datelor modelului de subiect pentru a vizualiza cele mai importante jetoane pe subiect: tidy().

Cu acest complot, avem o primă impresie a ceea ce reprezintă subiectele din primul nostru model de subiect. După cum putem vedea din complot, analizarea probabilității simbolului pe subiect are dezavantajul că jetoanele care au o frecvență generală ridicată au o probabilitate mai mare să apară în top 10 pentru mai multe subiecte. De exemplu, restaurant apare în top-top-uri cu mai multe subiecte. Numai dacă ne uităm la probabilitățile generale ale subiectului, putem ascunde faptul că jetoanele specifice oarecum mai puțin frecvente sunt foarte legate de un subiect specific. Pentru a analiza acest lucru, putem face frecvența jetonului în subiectul relativ la frecvența generală a jetonului: p(token|topic)/p(token). Aceasta arată ce jetoane sunt puternic legate de subiect, independent de frecvența jetonelor.

Luând (numai) această din urmă abordare are propriul său dezavantaj, evidențiind jetoanele importante care ar putea să nu apară în că multe recenzii. Cea mai bună abordare ar putea fi undeva la mijloc: pentru a evalua un model de subiect, este cel mai valoros să puteți explora modelul de subiect din ambele perspective – probabilitatea termenului absolut și probabilitatea termenului relativ – și poate chiar un amestec al celor două. Din acest motiv, pachetul LDAvis este atât de valoros, deoarece vă permite să faceți exact asta! LDAvis are nevoie de un JSON care să conțină informații despre modelul de subiect și vocabularul dvs.:

O notă laterală aici: pachetul LDAvis R poate fi utilizat de la R sau RStudio, dar nu direct dintr-un mediu notebook ca Jupyter sau Databricks. Prin urmare, am folosit portul pyLDAvis la pachetul LDAvis, deoarece acest lucru face mai ușoară includerea minunatului instrument LDAvis într-un notebook. Cu toate acestea, în unele browsere pyLDAvis nu funcționează corect. Dacă se întâmplă acest lucru, vă rugăm să consultați un exemplu mai jos. Simțiți-vă liber să descărcați acest blocnotes și să încercați LDAvis-ul pentru dvs.

Pentru a rula LDAvis local cu R sau RStudio, puteți rula serVis(json) . Pentru a explora LDAvis interactiv din serigrafia de mai jos, consultați acest link .

Graficul din partea stângă arată dimensiunea Subiecte ( Câte documente sunt atribuite subiectului?) precum și distanța dintre subiecte ( Ce subiecte sunt mai mult / mai puțin legate între ele? ). În partea dreaptă sunt afișate jetoanele importante pentru subiectul selectat (sau cele mai importante jetoane generale din modelul subiectului atunci când nu este selectat niciun subiect). Cu glisorul din dreapta sus putem schimba lambda, unde lambda decide cât de mult preferăm să analizăm probabilitatea absolută a simbolului din subiect (p(token|topic), lambda = 1) sau preferăm simbolul relativ probabilitate în cadrul subiectului (p(token|topic)/p(token), lambda = 0). Jocul cu această vizualizare este adesea cel mai bun mod de a vă familiariza cu subiectele identificate. Și – cel mai important – găsirea unei etichete tematice adecvate pentru fiecare dintre subiecte! De asemenea, acest lucru este de mare ajutor pentru a decide dacă modelul de subiect actual este suficient pentru sarcina dvs. din aval sau dacă doriți să modificați unele setări (k, metodă, semințe, …) sau chiar datele (să schimbați documentele sau jetoanele selectate) pentru a obține un rezultat mai bun.

Ierații față de modelul dvs. de subiect câștigător

Am spus-o înainte: topic modeling este – la fel ca analiza clusterelor și alte tipuri de supraveghere nesupravegheate tehnici de învățare automată – mai multă artă decât știință! Prin urmare, probabil că veți petrece destul de mult timp modificându-vă modelul de subiect înainte de a ajunge la „cel mai bun” model de subiect. Așezăm „cel mai bun” în ghilimele aici, deoarece ceea ce este „cel mai bun” depinde în mare măsură atât de aplicațiile pe care le aveți în minte cu modelul de subiect, cât și de creativitatea dvs.! Deci, acest lucru este destul de subiectiv! În timpul procesului de a-ți găsi „cel mai bun” model de subiect, probabil că ai câteva momente pe care crezi că nu le-ai venit cu orice soluție pe care le poți folosi și alte momente în care trăiești extazul de a vedea acele subiecte intrinseci venind să trăiască prin jetoane care îl domină.În realizarea modelului de subiect optim, iată cele mai importante instrumente:

  • schimbare k – numărul de subiecte
  • excludeți jetoanele „prea dominante (frecvente)” suplimentare (acestea ar putea încă fii prea dominant și suprimă găsirea unor subdomenii mai interesante în textul tău)
  • crește frecvența minimă a simbolului la concentrați-vă pe jetoanele mai dominante
  • exemple de documente pentru a vă concentra pe cele mai relevante documente pentru a găsi subiecte importante , am putea schimba strategia de eșantionare

În afară de acești parametri, aveți și câțiva parametri LDA pe care îi puteți varia, dar, din experiența noastră, parametrii de mai sus sunt cei mai importanți pentru a începe. În timp ce creșterea sau micșorarea k înseamnă doar că trebuie să vă reestimați LDA, schimbarea eșantionării de recenzii sau jetoanelor de luat în considerare înseamnă că trebuie să vă recreați DTM-ul.

Ce am făcut? După multă transpirație, unele blesteme și explorarea a numeroase soluții, am făcut următoarele:

  • schimbăm k în 7 subiecte.
  • Îmbinați câteva jetoane și excludeți un număr prea frecvent de jetoane
  • Explorați mai multe rezultate semințe (cu nstart și best=FALSE) pentru a găsi cel mai bun model de subiect interpretabil **
  • În cele din urmă, selectați cea mai bună semință și setați best=TRUE pentru a păstra numai cel mai bun model LDA

** permite efectuarea mai multor rulări prin specificarea parametrului nstart pentru a seta numărul de rulări și cu setul seed semințele pentru a ghida aceste alergări. Când setați best=TRUE, se păstrează numai soluția cu cea mai bună probabilitate a jurnalului, setând-o la best=FALSE vă permite să explorați toate modelele de subiect obiectul returnat este acum o listă cu toate modelele de subiecte).

Iterarea și compararea rezultatelor au dus la 7 subiecte pe care le-am putea eticheta frumos cu nume de subiecte ale subiectelor despre care comentatorii vorbesc atunci când examinează restaurante. Iată soluția noastră pentru subiectele cu etichetele deja adăugate la acestea:

DTM dimensions: 
Documents (10152) x Tokens (12496) (average token frequency: 416.26)

Pentru a explora interfața LDAvis din serigrafia de mai jos, accesați acest fișier html .

Deși unele subiecte sunt încă un amestec de lucruri, suntem încântați să folosim această soluție în prezicerea stelelor Michelin. Vedem câteva distincții clare între subiectele identificate și ne așteptăm ca traducerea textului brut al fiecărei recenzii într-un vector de probabilități pentru aceste subiecte va ajuta la prezicerea stelelor Michelin. Iată o prezentare generală a subiectelor cu etichetele pe care le le oferim și a celor mai frecvente jetoane ale acestora:

Modelarea subiectelor – înfășurarea acestuia

În acest articol în care v-am arătat cum puteți construi un model de subiect pentru a identifica constructele latente sau despre care vorbesc „subiecte” în recenziile restaurantelor lor. După cum ați văzut, există destul de multe alegeri de făcut înainte de a avea ultimul nostru model de „cel mai bun” subiect și unele dintre aceste alegeri nu sunt ușor de făcut, deoarece statisticile orientative nu sunt întotdeauna disponibile. Amintiți-vă ce am afirmat anterior: Modelarea subiectului este o tehnică nesupravegheată și acest lucru îl face „mai multă artă decât știința”. Ceea ce este important pentru multe cazuri de utilizare este că veți ajunge la subiecte pe care sunteți capabil să le interpretați și să le explicați, deoarece trebuie să puteți interpreta caracteristicile pe care le-ați construit aici în timp ce le utilizați în sarcinile din aval. Cu modelul nostru cu 7 subiecte, ne simțim încrezători că putem face acest lucru!

Beneficii

Un lucru extraordinar despre modelarea subiectelor – și în special LDA – este că atunci când toate modificările și dificultățile sunt gata, probabil că veți ajunge la un număr de subiecte ușor de interpretat. Acest lucru vă permite să adăugați pentru fiecare document distribuția pe acele subiecte. Deoarece probabilitățile subiectului sunt 1 și sunt valori numerice, acum ați rezumat textele nestructurate, de lungime diferită, în doar câteva caracteristici noi, ușor de procesat. Funcții care pot avea o mare valoare în activitățile din aval, cum ar fi modelarea predictivă sau sarcinile de segmentare.

Dezavantaje

Cel mai mare dezavantaj al modelării subiectelor este cel mai probabil subiectivitatea în găsirea celui mai bun model . Prin urmare, s-ar putea să vă trebuiască destul de mult timp și efort pentru a veni cu o soluție adecvată de model de subiect. S-ar putea să existe mai multe soluții echivalente statistic, care pot diferi substanțial în temele rezultate.Prin urmare, atunci când reluați analiza cu date sau setări ușor diferite, există întotdeauna șansa ca interpretarea modelului să fie modificată dramatic. Mai ales atunci când nu există o soluție de subiect dominant în datele dvs. textuale, fiecare rulare ar putea duce la rezultate diferite. Asigurați-vă că țineți evidența rulărilor anterioare, asigurând semințe și seturi de date utilizate, astfel încât să nu experimentați frustrarea de a găsi o soluție de model de subiect frumoasă pe care o puteți interpreta frumos și să o pierdeți pentru a nu o mai restabili niciodată.

Privind înainte

Anterior, ne-am specificat obiectivul: să prezicem ce restaurante au o stea Michelin. Prin urmare, într-unul dintre blogurile noastre (următoare), folosim distribuția pe subiecte din textele recenziei pentru a prezice dacă recenzia este sau nu o recenzie Michelin. De asemenea, adunăm aceste predicții asupra tuturor recenziilor pe care un restaurant a trebuit să le evalueze în ce măsură suntem capabili să prezicem stele Michelin. În afară de aceasta, vom folosi (alte tehnici) (word2vec, GloVe, BERT) pentru a rezuma textele recenziei în caracteristici pe care le putem folosi pentru a prezice stelele Michelin și vom arăta ce abordare funcționează cel mai bine. Vom începe prin introducerea tehnicilor de încorporare a cuvintelor (word2vec, GloVe) în următorul nostru blog și vă vom arăta cum să transformați textele de recenzie în încorporări și cum să le interpretați și să le vizualizați.

Acest articol face parte din NLP cu seria R . O prezentare generală a tuturor articolelor din serie poate fi (găsită aici).

  • Anterior în această serie: (Pregătirea datelor pentru procesarea limbajului natural)
  • În continuare în această serie : (Formarea modelului de încorporare a cuvintelor și vizualizarea rezultatelor)

Vrei să faci asta singur? Vă rugăm să nu ezitați să descărcați Blocnotesul Databricks sau R-scriptul din pagina gitlab .

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *