NLP med R del 1: Emnemodellering til identificer emner i restaurantanmeldelser

(Jurriaan Nagelkerke) ( 13. nov 2020)

Denne historie er skrevet af og . Det er en del af vores NLP med R series ( Naturlig sprogbehandling til forudsigelige formål med R ) hvor vi bruger emnemodellering, ordindlejringer, transformere og BERT.

I en sekvens af artikler sammenligner vi forskellige NLP-teknikker for at vise dig, hvordan vi får værdifuld information fra ustruktureret tekst. For omkring et år siden samlede vi anmeldelser om hollandske restauranter. Vi undrede os over, om visdom fra mængden – anmeldelser fra restaurantbesøgende – kunne bruges til at forudsige, hvilke restauranter der mest sandsynligt ville modtage en ny Michelin-stjerne. Læs dette indlæg for at se, hvordan det fungerede. Vi brugte emnemodellering som vores primære værktøj til at udtrække information fra gennemgangsteksterne og kombinerede det med forudsigelige modelleringsteknikker for at ende med vores forudsigelser.

Vi fik stor opmærksomhed med vores forudsigelser og også spørgsmål om, hvordan vi lavede tekstanalysedelen. For at besvare disse spørgsmål vil vi forklare vores tilgang mere detaljeret i de kommende artikler. Men vi stoppede ikke med at udforske NLP-teknikker efter vores offentliggørelse, og vi kan også godt lide at dele indsigt i at tilføje flere nye NLP-teknikker. Mere specifikt bruger vi to typer ordindlejringer – en klassisk Word2Vec-model og en GLoVe-indlejringsmodel – vi bruger transfer learning med foruddefinerede ordindlejringer, og vi bruger BERT . Vi sammenligner merværdien af ​​disse avancerede NLP-teknikker med vores baseline-emnemodel på det samme datasæt. Ved at vise, hvad vi gjorde, og hvordan vi gjorde det, håber vi at guide andre, der er ivrige efter at bruge tekstdata til deres egen datavidenskabsindsats.

I en (forrige artikel) viste vi, hvordan vi forberedte vores data til brug til forskellige NLP-teknikker. Her begynder vi vores artikelserie om NLP-teknikker ved at introducere Emnemodellering og viser dig, hvordan du identificerer emner, visualiserer emnemodel resultater. I en (senere artikel) viser vi dig, hvordan du bruger emnemodellen til at give en forudsigende model.

Hvad er emnemodellering?

At finde ud af de emner, der restaurantanmeldere skriver om i deres restaurantanmeldelser, vi bruger Topic Modeling. Men hvad er en emnemodel? I maskinindlæring og naturlig sprogbehandling er en emnemodel en type statistisk model, der kan bruges til at opdage de abstrakte emner der findes i en samling dokumenter. Der er en række algoritmer til at udtrække emner fra en samling tekster, men Latent Dirichlet Allocation er en af ​​de mest populære algoritmer, fordi den er effektiv og resulterer i meget fortolkelige emner. Tolkning af emner er et vigtigt træk ved en emnemodel, da vi ikke kun ønsker at finde statistisk relevante grupperinger af ord, vi også vil være i stand til at mærke de identificerede emner med et emnenavn, som andre kan forholde sig til. Som sådan har emnemodellering nogle ligheder med klyngeteknikker som KMeans, hvor fortolkning også er lige så vigtig som statistiske målinger er for at bestemme, hvad der er en “god” løsning. Hvordan emnemodellering / LDA fungerer visualiseres af Blei som:

Som figuren viser:

  • Hver emne er en fordeling over ord
  • Hver dokument er en fordeling på emner

Så når vi er færdige med at modellere vores anmeldelser:

  • skal vi vide, hvad der er emner eller emner, som korrekturlæsere skriver om i deres restaurantanmeldelser,
  • vi ved, hvilke tokens eller ord der er vigtigst i disse emner, og
  • vi kan fortælle for hver enkelt anmeldelse, i hvilket omfang det handler om de identificerede emner og dette kan være en blanding – 80\% om emne X og 20\% ​​om emne Y .

Trin 0: Opsætning af vores kontekst

Først , oprettede vi vores projektmappemiljø med de nødvendige pakker til at udføre emnemodellering.

I vores (blog om forberedelse i tekstdataene) introducerede vi allerede kort tidyverse og tidytext.Her tilføjer vi et par andre pakker til listen:

  • topicmodels er en pakke til estimering af emnemodeller med LDA og builds efter datastrukturer oprettet med tm-pakken
  • tm er en kraftfuld, generisk pakke med alle mulige funktioner til tekstudvinding, blandt hvilke der oprettes dokument termmatricer, som vi har brug for til emnemodellering
  • ldavis er en fantastisk pakke til at visualisere og fortolke emnemodellen og en meget nyttig, når du mærker emner

Trin 1. Indlæs forbehandlede data

Før vi dykker ned i den analytiske side af tingene, vi har brug for nogle forberedte tekstdata. Som alle ægte dataforskere ved, tager korrekt dataforberedelse det meste af din tid og er mest afgørende for kvaliteten af ​​de analyseresultater, du ender med. Forberedelse af tekstdata er en anden kop te sammenlignet med forberedelse af strukturerede numeriske eller kategoriske data. I denne blog er vores fokus på tekstanalyse. Alligevel vil vi vise dig, hvordan vi rensede og forberedte de data, vi indsamlede. I denne (forrige blog) forklarer vi detaljeret, hvordan vi forbehandlede dataene, hvilket resulterede i følgende 5 filer, vi kan bruge i vores NLP-analyse:

  • reviews.csv: en csv-fil med originale og forberedte gennemgangstekster – brændstoffet til vores NLP-analyser. (inkluderet nøgle: restoreviewid, deraf den unikke id til en gennemgang)
  • labels.csv : a csv-fil med 1/0-værdier, der angiver, om anmeldelsen er en anmeldelse af en Michelin-restaurant eller ej (inkluderet nøgle: restoreviewid)
  • restoid.csv : en csv-fil med restaurant-ider for at kunne bestemme, hvilke anmeldelser der hører til hvilken restaurant (inkluderet nøgle: restoreviewid)
  • trainids.csv : en csv-fil med 1/0-værdier, der angiver, om gennemgangen skal bruges til træning eller test – vi har allerede delt anmeldelserne i tog / test for at muliggøre genbrug af de samme prøver til fair sammenligninger mellem teknikker (inkluderet nøgle: restoreviewid)
  • features.csv : en csv-fil med andre funktioner vedrørende anmeldelserne (inkluderet nøgle: restoreviewid)

Disse filer med th De rensede og relevante data til NLP-teknikker stilles til rådighed for dig via offentlig blob-lagring, så du kan køre al kode, vi præsenterer selv, og se, hvordan tingene fungerer mere detaljeret. Til vores emnemodel har vi brug for tre af disse filer:

Trin 2: Forbered data til emnet modellering

Med udgangspunkt i de rensede gennemgangstekster er vi nødt til at gøre nogle ting, før vi kan estimere vores emnemodeller:

  1. Tokenize vores forberedte tekst (inklusive bigrams)
  2. Eksempler på anmeldelser til træning af vores emnemodel
  3. Filtrer relevante tokens
  4. Opret dokumentterminematrix

2.1. Tokenize vores forberedte tekst (inklusive bigrams)

Latent Dirichlet Allocation (LDA), den teknik, vi bruger til emnemodellering, er en pose med ord -teknik. Hvad dette betyder er, at NLP-teknikken ikke ser på rækkefølgen af ​​tokens, når man analyserer teksten. Derfor, hvor tokenet er placeret i teksten, og hvilke andre tokens der er tæt på tokenet (forudgående / efterfølgende tokens) i dokumentet tages ikke i betragtning. Det er som om alle tokens fra dokumentteksten kastes i en pose og blander dem, men bevarer de oplysninger, som tokens er i det samme dokument. Som et resultat går vi måske glip af vigtig information, hvis der er mange interessante kolloktioner – hyppige kombinationer af tokens – i teksten. Populære eksempler er navne på mennesker (Donald Trump, Jonnie Boer) eller steder (USA, Den Haag), men også kontekstspecifikke kombinationer af ord kan være vigtige at medtage i vores emnemodel: witte wijn ( hvidvin ), rode wijn , ( rødvin ), gaan eten ( gå spis ). For at sikre, at vi ikke går glip af disse vigtige kollokationer, tilføjer vi de forberedte bigrams , der er til stede i vores tekst. Husk, at vi allerede har fjernet stopord og interpunktion i vores dataprep.

Efter at have tilføjet bigrams til de indlæste, rensede tekster, delte vi teksterne igen for at ende med en dataramme, hvor hver række er en anmeldelse – token-kombination. Vi filtrerer anmeldelser ud, der er blevet for korte (5 tokens) efter fjernelse af stopord. I dette format er vi klar til vores sidste forberedelser, inden vi kan starte modellering af emner.

2.2 Eksempel på anmeldelser til træning af vores emnemodel

I vores næste trin filtrerer vi de mest relevante tokens, der skal medtages i dokumentets termmatrix og derefter i emnemodellering.Men først skal vi afgøre, hvilke dokumenter (anmeldelser) der er vigtigst for os. Af nogle grunde ønsker vi ikke at bruge alle anmeldelser som input til vores emnemodel:

  • I sidste ende ønsker vi at bruge emnerne i en forudsigelsesmodel til forudsige Michelin-stjerner. Det er den bedste praksis at afsætte et testsæt, før vi bygger emnemodellen og bruger dens resultater i den forudsigende opgave. På denne måde bygger vi både vores emnemodel og vores forudsigelse på togedata og holder testdata usynlige indtil evaluering.
  • Som vist nedenfor er ikke mere end 3\% af alle anmeldelser Michelin-anmeldelser. Ved at øge andelen af ​​Michelin-anmeldelser i det togsæt, vi bruger til emnemodellering, er det mere sandsynligt, at specifikke emner, der diskuteres i Michelin-anmeldelser, identificeres.

Af disse grunde vi vil fokusere resten af ​​forberedelsen mod vores emnemodel og estimering af emnemodellerne på en delmængde af anmeldelser. Dette undersæt indeholder kun anmeldelser, der allerede er specificeret som træningssager i vores notesbog til dataforberedelse. Inden for denne delmængde tager vi alle Michelin-anmeldelser (ca. 3.000) og supplerer med anmeldelser, der ikke er Michelin, for at ende med omkring 10.000 anmeldelser:

# 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 Filtrer tokens

Nu hvor vi har tilføjet bigrams til tokens, og vi har gen-tokeniseret vores tekster, har vi stadig mange, mange unikke tokens tilgængelige til vores emnemodel . Det er den bedste praksis at slippe af med langhalet af sjældne vilkår. Lad os først se på, hvordan fordelingen af ​​tokenfrekvens ser ud. Husk, at vi i vores (dataforberedelsesblog) allerede fjernede alle stopord fra teksterne, inklusive 128 brugerdefinerede højfrekvente stop ord, som vi specificerede ved at se på tokenfrekvensen i forberedelsen af ​​dataene.

Plottet ovenfor viser tydeligt, at en enorm mængde af de unikke tokens sjældent forekommer i alle anmeldelser, 75\% forekommer kun én gang.

Fokuser på tokens, der forekommer 5 gange eller mere i tog Corpus

Som vi kan se fra antallet af tokenfrekvenser, er der mange tokens, der kun forekommer en eller et par gange: Omkring 92\% af alle unikke tokens forekommer mindre end 5 gange i vores korpus af anmeldelser. Disse lavfrekvente tokens påvirker emnemodelanalysen. For at fokusere på ofte anvendte tokens vælger vi tokens, der forekommer 5 gange eller mere i de forberedte togedata. Dette er forhåbentlig nok til at lære emner fra tokens, der forekommer sammen i de samme anmeldelser. Ved optimering af vores emnemodel kan vi variere minimumsfrekvensen for at evaluere indvirkningen på resultaterne.

Hvorfor ikke TF-IDF?

Når du har læst nogle på tekstanalyseværktøjer, undrer du dig måske over: Hvorfor bruger vi ikke TF-IDF til at vælge de mest relevante tokens? TF-IDF står for Term Frequency – Inverse Document Frequency. Denne metric kombinerer termfrekvensen – hvor ofte er symbolet til stede i et dokument? – med det omvendte af dokumentfrekvensen – i hvor mange unikke dokumenter er udtrykket til stede? Selvom TF-IDF ofte er et godt valg at vælge de mest relevante tokens, er det ikke i vores sammenhæng, hvor dokumentstørrelsen er begrænset, og gentagelsen af ​​det samme token i den samme tekst er lav. Ikke ofte har et token en termfrekvens over 1. Som et resultat er kun den omvendte dokumentfrekvensdel afgørende, og dette favoriserer de tokens, der kun forekommer i en eller to anmeldelser. Af denne grund bruger vi ikke TF-IDF her, men ser på den samlede frekvens for at vælge relevante tokens til emnemodellering. Også fordi vi allerede har fjernet den tilpassede liste med stopord fra vores tekst, er for hyppige tokens derfor allerede fjernet.

Ved at filtrere de sjældne tokens har vi reduceret antallet af tokens, der skal overvejes i vores LDA dramatisk med fokus på 12K (8\%) hyppigste tokens og fjernelse af 146K (92\%) tokens, der er for sjældne i corpus. Disse valgte tokens repræsenterer stadig 73\% af alle tokens i dokumenterne dog:

# 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 Opret DTM

Efter filtrering af de tokens, vi vil bruge til at opbygge vores emnemodel, kan vi oprette input til LDA. Dette kræver en document-term-matrix eller DTM derfor en matrix med i rækkerne alle vores dokumenter (anmeldelser) og i kolonnerne alle termerne ( relevante tokens). Bemærk, at vi bruger den samlede tokenfrekvens til parameteren value.Du kan forvente den dokumentspecifikke termfrekvens her, men vi bruger den samlede tokenfrekvens til at lægge meget mere vægt på at finde emnemodellen til udtryk, der er hyppigere generelt; i betragtning af den korte længde af anmeldelser (sammenlignet med bøger eller artikler, der ofte bruges i emnemodellering), er sandsynligheden for, at et enkelt token forekommer oftere i anmeldelsen, begrænset.

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

Trin 3: Udvikle emnemodel

Nu hvor vi har en DTM, vi er klar til at starte emnemodellering! Indtil videre har vi allerede taget nogle valg med indflydelse på vores analyseresultat: hvilken minimal gennemgangslængde vi skal bruge, hvilke stopord der skal udelukkes, hvad n -grammer, der skal medtages, den minimale tokenfrekvens for at bruge tokens … Og der skal foretages et par flere valg.

LDA har et antal parametre, der påvirker resultatet, hvoraf de vigtigste er:

  • k : Antallet af emner! Ja, dette er en parameter og ikke en Resultat. I lighed med klyngeteknikker som KMeans skal du fortælle, hvor mange klynger / emner du vil identificere ify.
  • metode : Thememodels-pakken muliggør forskellige optimeringsmetoder, VEM algorithm eller Gibbs sampling, standard er VEM.
  • kontrol : liste over kontrolvariabler til vejledning i estimering – relevante parametre afhænger af valgt metode VEM eller Gibbs, men de vigtigste er:
  • nstart : Antallet af kørsler, der skal udføres med de samme indstillinger, men forskellige frø
  • frø : For reproducerbarhed kan der indstilles et tilfældigt frø. Hvis nstart> 1, skal du angive flere frø, 1 pr. Nstart (f.eks. C (123, 234 “, 345”))
  • best : Hvis SAND (standard), er kun kørslen med det bedste passende resultat bevaret, angivet, hvis FALSE returneres en liste over alle kørsler, så du kan undersøge alle af dem.

For en komplet oversigt over alle tilgængelige parametre og indstillinger, se emnemodeller pakkevignet .

Anslå LDA-emnemodel

Parameter, der mest påvirker, er k : nummeret af emner at identificere. Hvordan vælger du en værdi for k? Dette er dels et resultat af diskussion (hvilket antal emner forventer vi at finde i denne sammenhæng?) Og prøve & fejl (prøv forskellige værdier af k, evaluer resultater). Nogle dataforskere kan ikke lide dette, de foretrækker at se på statistikker for at guide dem i denne proces, men for dem, der er bekendt med andre ikke-overvågede datavidenskabsteknikker som KMeans, er dette ikke så nyt. Klyngedannelse og også emnemodellering er til en vis grad mere kunst end videnskab. Vejledt af statistiske teknikker og målinger skulpterer en dataforsker en løsning til emnemodellering, der passer til (forretnings) behov. Hvis du har brug for et udgangspunkt for k med en eller anden statistisk baggrund, kan du prøve denne tilgang eller denne tilgang.

Lad os starte med en emnemodel for at identificere 3 emner og udforske resultatet. Vi har ingen grund til at ændre andre standardindstillinger på dette tidspunkt.

Evaluer emnemodel

Emnemodellen er monteret, så lad os udforske!

Det monterede lda-objekt indeholder et antal matricer:

  • phi : matrix med fordeling af tokens (i rækker) over emner (i kolonner)
  • theta : matrix med distribution af dokumenter (dermed: anmeldelser, i rækker) over emner (i kolonner)

Både til phi og for theta, summen over alle kolonner er lig med 1, hvilket betyder:

  • For phi er summen af ​​alle tokenpoints inden for et emne 1 – højere scores, hvilket betyder højere betydning af det token inden for emnet .
  • For theta er summen af ​​alle emnescore i et dokument 1 – højere scores, hvilket betyder, at emnet er mere til stede i dette dokument.

For at udforske vores emnemodel, lad os starte med at se på de vigtigste tokens pr. emne. For at gøre det skal vi angive, hvornår et token er vigtigt for et emne. Vi kan argumentere for, at tokenet er vigtigt for emnet, når det er høj sandsynlighed for at forekomme inden for et emne p(token|topic). Lad os se, hvordan dette ser ud til vores emne-model med 3 emner. Vi bruger en pæn funktion af tidytext -pakken, der hjælper med at forberede emnemodeldataene til at visualisere de vigtigste tokens pr. emne: tidy().

Med dette plot får vi en første fornemmelse af, hvad emnerne i vores første emnemodel repræsenterer. Som vi kan se fra plottet, har kig på token-sandsynligheden pr. Emne ulempen med, at tokens, der har en høj samlet frekvens, har en højere sandsynlighed for at dukke op i top-10 for flere emner. For eksempel vises restaurant i top-10ere med flere emner. Kun at se på de overordnede sandsynligheder for emner kan skjule, at specifikke noget mindre hyppige tokens er meget relateret til et specifikt emne. For at analysere det kan vi gøre tokenfrekvensen i emnet relativ til den samlede frekvens af tokenet: p(token|topic)/p(token). Dette viser, hvilke tokens der er stærkt relateret til emnet, uafhængigt af tokenfrekvensen.

At tage (kun) sidstnævnte tilgang har sin egen ulempe og fremhæver vigtige tokens, der muligvis ikke forekommer i så mange anmeldelser. Den bedste tilgang kan være et sted i midten: For at evaluere en emnemodel er det mest værdifuldt at være i stand til at udforske emnemodellen fra begge perspektiver – absolut sandsynlighed og relativ term sandsynlighed – og måske endda en blanding af de to. Af denne grund er pakken LDAvis så værdifuld, fordi den giver dig mulighed for at gøre netop det! LDAvis har brug for en JSON, der indeholder oplysninger om din emnemodel og ordforråd:

En sidebemærkning her: LDAvis R-pakken kan bruges fra R eller RStudio, men ikke direkte fra et notebookmiljø som Jupyter eller Databricks. Derfor brugte vi pyLDAvis-porten til LDAvis-pakken, da dette gør det let at inkludere det vidunderlige LDAvis-værktøj i en notesbog. I nogle browsere fungerer pyLDAvis imidlertid ikke korrekt. Hvis dette sker, se et eksempel nedenfor. Du er velkommen til download denne notesbog og prøv LDAvis selv.

For at køre LDAvis lokalt med R eller RStudio kan du køre serVis(json) . For at udforske den interaktive LDAvis fra skærmbilledet nedenfor, se dette link .

Diagrammet til venstre viser størrelsen på Emner ( Hvor mange dokumenter tilskrives emnet?) samt afstanden mellem emner ( Hvilke emner er mere / mindre relateret til hinanden? ). Højre side viser de vigtige tokens for det valgte emne (eller de overordnede vigtigste tokens i emnemodellen, når der ikke er valgt noget emne). Med skyderen øverst til højre kan vi ændre lambda, hvor lambda bestemmer, hvor meget vi foretrækker at se på den absolutte tokens sandsynlighed inden for emnet (p(token|topic), lambda = 1) eller foretrækker det relative token sandsynlighed inden for emnet (p(token|topic)/p(token), lambda = 0). At lege med denne visualisering er ofte den bedste måde at blive fortrolig med de identificerede emner på. Og – vigtigst af alt – at finde ud af en ordentlig emnemarkering til hvert af emnerne! Dette er også til stor hjælp med at afgøre, om den aktuelle emnemodel er tilstrækkelig til din downstream-opgave, eller at du vil ændre nogle indstillinger (k, metode, frø, …) eller endda dataene (ændre valgte dokumenter eller tokens) for at få et bedre resultat.

Iterationer mod din vindende emnemodel

Vi sagde det før: topic modeling er – ligesom klyngeanalyse og andre uden opsyn maskinindlæringsteknikker – mere kunst end videnskab! Derfor vil du sandsynligvis bruge lidt tid på at finjustere din emnemodel, før du ender med din “bedste” emnemodel. Vi sætter “bedst” ​​i citater her, fordi hvad der er “bedst” ​​afhænger stærkt af både de applikationer, du har i tankerne med din emnemodel, og din kreativitet! Så dette er ret subjektivt! Under processen med at finde din “bedste” emnemodel har du sandsynligvis nogle øjeblikke, som du tror, ​​du ikke vil komme med nogen løsning, du kan bruge, og andre øjeblikke, som du oplever ekstase ved at se de iboende emner, der kommer til at leve gennem poletter, der dominerer det.Her er dine vigtigste værktøjer til udskæring af din optimale emnemodel:

  • skift k – antallet af emner
  • udelukker ekstra for dominerende (hyppige) tokens (disse kan stadig vær for dominerende og undertryk at finde mere interessante underdomæner i din tekst)
  • øg den minimale tokenfrekvens til fokusere på de mere dominerende tokens
  • eksempeldokumenter for at fokusere på de mest relevante dokumenter for at finde vigtige emner , vi kunne ændre prøveudtagningsstrategien

Bortset fra disse parametre har du også nogle LDA-parametre, du kan variere, men efter vores erfaring er parametrene ovenfor de vigtigste til at begynde med. Mens stigning eller formindskelse af k kun betyder, at du bliver nødt til at estimere din LDA igen, hvis du ændrer prøveudtagningen af ​​anmeldelser eller tokens, der skal overvejes, betyder det, at du også skal genskabe din DTM.

Hvad gjorde vi? Efter masser af sved, nogle forbandelser og udforskning af mange løsninger, gjorde vi følgende:

  • skift k til 7 emner.
  • Flet nogle tokens og udelukk et antal for hyppige tokens
  • Udforsk flere froresultater (med nstart og best=FALSE) for at finde den bedste fortolkelige emnemodel **
  • Endelig skal du vælge det bedste frø og indstille best=TRUE for kun at beholde den bedste LDA-model

** LDA -funktionen gør det muligt at udføre flere kørsler ved at angive nstart -parameteren for at indstille antallet af kørsler og med seed sæt frøene til at styre disse kørsler. Når du indstiller best=TRUE, bevares kun den løsning med den bedste logsandsynlighed. Hvis du indstiller den til best=FALSE, kan du udforske alle emnemodellerne ( returneret objekt er nu en liste over alle emnemodeller).

Iterering og sammenligning af resultater resulterede i 7 emner, som vi kunne mærke pænt med emnenavne på emner, som anmelderne taler om, når de gennemgår restauranter. Her er vores løsning til emnerne med de allerede tilføjede etiketter:

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

For at udforske de interaktive LDAvis fra skærmtrykket nedenfor, gå til denne html-fil .

Selvom nogle emner stadig er en blanding af ting, er vi glade for at bruge denne løsning til at forudsige Michelin-stjerner. Vi ser nogle klare forskelle mellem de identificerede emner, og vi forventer, at oversættelse af rå tekst fra hver anmeldelse til en sandsynlighedsvektor for disse emner vil hjælpe med at forudsige Michelin-stjerner. Her er en oversigt over emnerne med de etiketter, vi giver dem, og deres hyppigste tokens:

Emnemodellering – indpakning af det

I dette artikel viste vi dig, hvordan du kan opbygge en emnemodel til at identificere de latente konstruktioner eller emner, som korrekturlæsere taler om i deres restaurantanmeldelser. Som du har set, er der nogle valg, der skal træffes, før vi har vores sidste bedste emnemodel, og nogle af disse valg er ikke lette at tage, da vejledende statistikker ikke altid er tilgængelige. Husk, hvad vi sagde tidligere: Emnemodellering er en ikke-overvåget teknik, og dette gør det til mere kunst, som videnskab. Det, der er vigtigt for mange brugssager, er at du ender med emner, du er i stand til at fortolke og forklare, da du skal kunne fortolke de funktioner, du har bygget her, mens du bruger dem i downstream-opgaver. Med vores 7-emne-model føler vi os sikre på, at vi kan gøre det!

Fordele

En god ting ved emnemodellering – og især LDA – er, at når alt tweaking og kæmper er færdig, vil du sandsynligvis ende med et håndterbart antal pænt fortolkelige emner. Dette giver dig mulighed for for hvert dokument at tilføje fordelingen over disse emner. Da sandsynlighederne for emnet er 1 og er numeriske værdier, har du nu opsummeret de ustrukturerede tekster med forskellig længde til blot et par nye, nemme at behandle funktioner. Funktioner, der kan være af stor værdi i downstream-opgaver som forudsigende modellering eller segmenteringsopgaver.

Ulemper

Den største ulempe ved emnemodellering er sandsynligvis subjektiviteten i at finde den bedste model . Derfor kan det tage dig noget tid og kræfter at komme med en ordentlig emnemodelløsning. Der kan være flere statistisk ækvivalente løsninger, der kan variere væsentligt i de resulterende emner.Derfor, når du kører analysen igen med lidt forskellige data eller indstillinger, er der altid chancen for, at fortolkningen af ​​modellen ændres dramatisk. Især når der ikke findes nogen dominerende emneløsning i dine tekstdata, kan hver kørsel resultere i forskellige resultater. Sørg for at holde styr på tidligere kørsler ved at sikre frø og datasæt, der bruges, så du ikke oplever frustrationen ved at finde en smuk emnemodelløsning, som du kan fortolke pænt og beskrive og derefter miste den for aldrig at gendanne den igen.

Ser fremad

Tidligere har vi specificeret vores mål: At forudsige, hvilke restauranter der har en Michelin-stjerne. I en af ​​vores (næste blogs) bruger vi derfor fordelingen over emner i anmeldelsesteksterne til at forudsige, om anmeldelsen er en Michelin-anmeldelse eller ej. Vi sammenlægger også disse forudsigelser over alle anmeldelser, en restaurant har haft til at evaluere, i hvor høj grad vi er i stand til at forudsige Michelin-stjerner. Bortset fra dette vil vi bruge (andre teknikker) (word2vec, GloVe, BERT) til at opsummere anmeldelsesteksterne i funktioner, vi kan bruge til at forudsige Michelin-stjerner, og vi viser, hvilken tilgang der fungerer bedst. Vi starter med at introducere ordindlejringsteknikker (word2vec, GloVe) i vores næste blog og viser dig, hvordan vi omdanner vores gennemgangstekster til indlejringer, og hvordan du fortolker og visualiserer dem.

Denne artikel er en del af vores NLP med R -serien. En oversigt over alle artikler i serien kan findes (findes her).

  • Tidligere i denne serie: (Dataforberedelse til naturlig sprogbehandling)
  • Næste op i denne serie : (Træning af ordindlejringsmodel og visualiser resultater)

Vil du gøre dette selv? Du er velkommen til at downloade Databricks Notebook eller R-scriptet fra siden gitlab .

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *