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

(Jurriaan Nagelkerke) ( 13. nov 2020)

Denne historien er skrevet av og . Det er en del av NLP med R series ( Natural Language Processing for prediktive formål med R ) hvor vi bruker Topic Modeling, Word Embeddings, Transformers and BERT.

I en sekvens av artikler sammenligner vi forskjellige NLP-teknikker for å vise deg hvordan vi får verdifull informasjon fra ustrukturert tekst. For omtrent et år siden samlet vi anmeldelser på nederlandske restauranter. Vi lurte på om mengdenes visdom – anmeldelser fra restaurantbesøkende – kunne brukes til å forutsi hvilke restauranter som mest sannsynlig vil motta en ny Michelin-stjerne. Les dette innlegget for å se hvordan det fungerte. Vi brukte emnemodellering som vårt primære verktøy for å hente ut informasjon fra gjennomgangstekstene og kombinerte det med prediktive modelleringsteknikker for å ende opp med våre spådommer.

Vi fikk mye oppmerksomhet med våre spådommer og også spørsmål om hvordan vi gjorde tekstanalysedelen. For å svare på disse spørsmålene vil vi forklare vår tilnærming mer detaljert i de kommende artiklene. Men vi sluttet ikke å utforske NLP-teknikker etter publiseringen, og vi liker også å dele innsikt fra å legge til flere nye NLP-teknikker. Mer spesifikt vil vi bruke to typer ordinnblandinger – en klassisk Word2Vec-modell og en GLoVe-innebyggingsmodell – vi bruker overføringslæring med forhåndsopplærte ordinnblandinger, og vi bruker BERT . Vi sammenligner merverdien til disse avanserte NLP-teknikkene med vår basismodell i samme datasett. Ved å vise hva vi gjorde og hvordan vi gjorde det, håper vi å veilede andre som er opptatt av å bruke tekstdata for deres egne datavitenskapelige anstrengelser.

I en (forrige artikkel) viste vi hvordan vi utarbeidet våre data som skal brukes til forskjellige NLP-teknikker. Her begynner vi vår artikkelserie om NLP-teknikker ved å introdusere Emnemodellering og viser deg hvordan du identifiserer emner, visualiserer emnemodell resultater. I en (senere artikkel) viser vi deg hvordan du bruker emnemodellen til å gi en prediktiv modell.

Hva er emnemodellering?

For å oppdage emnene som restaurantanmeldere skriver om i restaurantanmeldelser, vi bruker Topic Modeling. Men hva er en emnemodell? I maskinlæring og naturlig språkbehandling er en emnemodell en type statistisk modell som kan brukes til å oppdage de abstrakte emnene som forekommer i en dokumentsamling. Det finnes en rekke algoritmer for å trekke ut emner fra en samling tekster, men Latent Dirichlet Allocation er en av de mest populære algoritmene fordi den er effektiv og resulterer i høyt tolkerbare emner. Tolkning av emner er et viktig trekk ved en emnemodell, siden vi ikke bare ønsker å finne statistisk relevante grupperinger av ord, vi ønsker også å kunne merke de identifiserte emnene med et emnenavn som andre kan forholde seg til. Som sådan har temamodellering noen likheter med klyngeteknikker som KMeans, hvor tolkning også er like viktig som statistiske beregninger er for å bestemme hva som er en «god» løsning. Hvordan temamodellering / LDA fungerer, visualiseres av Blei som:

Som figuren viser:

  • Hver emne er en fordeling over ord
  • Hvert dokument er en fordeling over emner

Så når vi er ferdige med å modellere våre anmeldelser:

  • bør vi vite hva er emner eller emner som anmeldere skriver om i restaurantanmeldelser,
  • vi vet hvilke tokens eller ord som er viktigst i disse emnene, og
  • vi kan fortelle for hver enkelt anmeldelse i hvilken grad det handler om de identifiserte emnene og dette kan være en blanding – 80\% om emne X og 20\% ​​om emne Y .

Trinn 0: Sette opp vår kontekst

Først , satte vi opp arbeidsbokmiljøet vårt med de nødvendige pakkene for å utføre emnemodellering.

I vår (blogg om forberedelse) inn tekstdataene) introduserte vi allerede kort tidyverse og tidytext.Her legger vi til noen få andre pakker til listen:

  • topicmodels er en pakke for å estimere emnemodeller med LDA og builds på datastrukturer opprettet med tm-pakken
  • tm er en kraftig, generisk pakke med alle slags tekstutvinning-funksjonalitet, blant annet å lage dokument begrepsmatriser, som vi trenger for emnemodellering
  • ldavis er en flott pakke for å visualisere og tolke emnemodellen og er veldig nyttig når du merker emner

Trinn 1. Last inn forhåndsbehandlede data

Før vi dykker ned i den analytiske siden av ting, vi trenger noen forberedte tekstdata. Som alle sanne dataforskere vet, tar riktig dataforberedelse mesteparten av tiden din og er mest avgjørende for kvaliteten på analyseresultatene du ender med. Å forberede tekstdata er nok en kopp te sammenlignet med å tilberede strukturerte numeriske eller kategoriske data. I denne bloggen har vi fokus på tekstanalyse. Likevel vil vi vise deg hvordan vi ryddet og forberedte dataene vi samlet inn. I denne (forrige bloggen) forklarer vi i detalj hvordan vi forhåndsbehandlet dataene, noe som resulterer i følgende 5 filer vi kan bruke i vår NLP-analyse:

  • reviews.csv: en csv-fil med originale og forberedte gjennomgangstekster – drivstoffet for NLP-analysene våre. (inkludert nøkkel: restoreviewid, derav den unike identifikatoren for en gjennomgang)
  • labels.csv : a csv-fil med 1/0-verdier, som indikerer om anmeldelsen er en anmeldelse for en Michelin-restaurant eller ikke (inkludert nøkkel: restoreviewid)
  • restoid.csv : en csv-fil med restaurant-id, for å kunne bestemme hvilke anmeldelser som tilhører hvilken restaurant (inkludert nøkkel: restoreviewid)
  • trainids.csv : en csv-fil med 1/0-verdier, som indikerer om gjennomgangen skal brukes til opplæring eller testing – vi har allerede delt vurderingene i tog / test for å muliggjøre gjenbruk av de samme prøvene for rettferdig sammenligning mellom teknikker (inkludert nøkkel: restoreviewid)
  • features.csv : en csv-fil med andre funksjoner angående vurderingene (inkludert nøkkel: restoreviewid)

Disse filene med th rensede og relevante data for NLP-teknikker blir gjort tilgjengelig for deg via offentlig bloblagring, slik at du kan kjøre all kode vi presenterer selv og se hvordan ting fungerer mer detaljert. For emnemodellen vår trenger vi tre av disse filene:

Trinn 2: Forbered data for emnet modellering

Fra og med de rensede gjennomgangstekstene, må vi gjøre noen ting før vi kan estimere emnemodellene våre:

  1. Tokenisere vår forberedte tekst (inkludert bigrams)
  2. Eksempelanmeldelser for opplæring av emnemodellen
  3. Filtrer relevante tokens
  4. Opprett dokumenttermmatrise

2.1. Tokenize vår forberedte tekst (inkludert bigrams)

Latent Dirichlet Allocation (LDA), teknikken vi bruker for modellering av emner, er en ‘bag of words’-teknikk. Hva dette betyr, er at NLP-teknikken ikke ser på rekkefølgen på tokens når man analyserer teksten. Derfor, hvor tokenet ligger i teksten og hvilke andre tokens som er nær tokenet (forrige / påfølgende tokens) i dokumentet blir ikke vurdert. Det er som om alle tokens fra dokumentteksten kastes i en pose, blander dem sammen, men beholder informasjonen om at tokens er i det samme dokumentet. Som et resultat kan vi gå glipp av viktig informasjon hvis mange interessante kollokasjoner – hyppige kombinasjoner av tokens – er til stede i teksten. Populære eksempler er navn på mennesker (Donald Trump, Jonnie Boer) eller steder (USA, Den Haag), men også kontekstspesifikke ordkombinasjoner kan være viktig å ta med i emnemodellen vår: witte wijn ( hvitvin ), rode wijn , ( rødvin ), gaan eten ( go eat ). For å sikre at vi ikke går glipp av disse viktige kollokasjonene, legger vi til de forberedte bigrams som er tilstede i teksten vår. Husk at vi allerede har fjernet stoppord og interpunksjon i dataprep.

Etter å ha lagt til bigrams til de lastede, rensede tekstene, delte vi tekstene igjen for å ende opp med en dataramme der hver rad er en anmeldelse – token-kombinasjon. Vi filtrerer ut anmeldelser som har blitt for korte (5 tokens) etter at vi har fjernet stoppord. I dette formatet er vi klare for de siste forberedelsene våre før vi kan begynne å modellere emner.

2.2 Eksempelanmeldelser for opplæring av emnemodellen

I vårt neste trinn vil vi filtrere de mest relevante tokens som skal inkluderes i dokumentbegrepsmatrisen og deretter i emnemodellering.Men først må vi avgjøre hvilke dokumenter (anmeldelser) som er viktigst for oss. Av noen grunner ønsker vi ikke å bruke alle vurderinger som input for emnemodellen vår:

  • Til slutt vil vi bruke emnene i en prediksjonsmodell for å forutsi Michelin-stjerner. Det er best praksis å sette av et testsett før vi bygger emnemodellen og bruker resultatene i prediktiv oppgave. På denne måten bygger vi både emnemodellen vår og prediksjonen vår på togdata og holder testdata usett til evaluering.
  • Som vist nedenfor er ikke mer enn 3\% av alle anmeldelser Michelin-anmeldelser. Ved å øke andelen Michelin-anmeldelser i togsettet vi bruker for emnemodellering, er det mer sannsynlig at spesifikke emner som blir diskutert i Michelin-anmeldelser vil bli identifisert.

Av disse grunner vil fokusere resten av forberedelsene mot emnemodellen vår og estimering av emnemodellene på en delmengde av gjennomgangene. Dette delsettet inneholder bare anmeldelser som allerede er spesifisert som opplæringssaker i notatbok for dataforberedelse. Innenfor denne delmengden tar vi alle Michelin-anmeldelser (ca. 3.000) og kompletterer med ikke-Michelin-anmeldelser for å ende opp med rundt 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 Filter tokens

Nå som vi har lagt til bigrams i tokens og vi har tokenisert tekstene våre på nytt, har vi fortsatt mange, mange unike tokens tilgjengelig for emnemodellen vår . Det er best å kvitte seg med langhale av sjeldne vilkår. La oss først se på hvordan fordelingen av tokenfrekvens ser ut. Husk at vi i (databehandlingsbloggen) allerede fjernet alle stoppord fra tekstene, inkludert 128 egendefinerte «stopp» -ord som vi spesifiserte ved å se på tokenfrekvensen når du forbereder dataene.

«c231bbb861»>

Plottet over viser tydelig at en enorm mengde av de unike tokens sjelden forekommer i alle anmeldelser, 75\% forekommer bare en gang.

Fokuser på tokens som forekommer 5 ganger eller mer i tog Corpus

Som vi kan se fra antall tokenfrekvenser, er det mange tokens som bare forekommer en gang eller noen få ganger: Rundt 92\% av alle unike tokens forekommer mindre enn 5 ganger i vår korpus av anmeldelser. Disse lavfrekvente tokens påvirker emnemodellanalysen. For å fokusere på ofte brukte tokens, velger vi tokens som forekommer 5 ganger eller mer i de forberedte togsdataene. Dette er forhåpentligvis nok til å lære emner fra tokens som forekommer sammen i de samme vurderingene. Når vi optimaliserer emnemodellen vår, kan vi variere minimumsfrekvensen for å evaluere innvirkning på resultatene.

Hvorfor ikke TF-IDF?

Når du har lest noen på verktøy for tekstanalyse, kan du lure på: Hvorfor bruker vi ikke TF-IDF til å velge de mest relevante tokens? TF-IDF står for Term Frequency – Inverse Document Frequency. Denne beregningen kombinerer termfrekvensen – hvor ofte er symbolet til stede i et dokument? – med det motsatte av dokumentfrekvensen – i hvor mange unike dokumenter er begrepet til stede? Selv om TF-IDF ofte er et godt valg for å velge de mest relevante tokens, er det ikke i vår sammenheng, hvor dokumentstørrelsen er begrenset og gjentagelsen av samme token i samme tekst er lav. Ikke ofte har et token en termfrekvens over 1. Som et resultat er bare den omvendte dokumentfrekvensdelen avgjørende, og dette favoriserer tokens som bare forekommer i en eller to anmeldelser. Av denne grunn bruker vi ikke TF-IDF her, men ser på den samlede frekvensen for å velge relevante tokens for emnemodellering. Også fordi vi allerede har fjernet den egendefinerte listen over stoppord fra teksten vår, er for ofte tokens allerede fjernet.

Ved å filtrere de sjeldne tokens, har vi redusert antall tokens å vurdere i vår LDA dramatisk, med fokus på de 12K (8\%) hyppigste tokens og fjerning av 146K (92\%) tokens som er for sjeldne i corpus. Disse valgte tokens representerer fortsatt 73\% av alle tokens i dokumentene skjønt:

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

Etter å ha filtrert tokens vi vil bruke til å bygge emnemodellen vår, kan vi lage inngangen for LDA. Dette krever en document-term-matrix eller DTM derav en matrise med i radene alle våre dokumenter (anmeldelser) og i kolonnene alle vilkårene ( relevante tokens). Vær oppmerksom på at vi bruker total tokenfrekvens for value -parameteren.Du kan forvente den dokumentspesifikke termfrekvensen her, men vi bruker den totale tokenfrekvensen for å gi mye mer vekt på å finne emnemodellen til termer som er hyppigere generelt; gitt den korte lengden på anmeldelser (sammenlignet med bøker eller artikler som ofte brukes i emnemodellering), er sannsynligheten for at et enkelt token forekommer oftere i gjennomgangen begrenset.

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

Trinn 3: Utvikle emnemodell

Nå som vi har en DTM, vi er klare til å starte emnemodellering. Så langt har vi allerede gjort ganske mange valg med innvirkning på analyseresultatet: hvilken minimal gjennomgangslengde vi skal bruke, hvilke stoppord vi skal ekskludere, hva n -grammer å inkludere, den minimale tokenfrekvensen for å bruke tokens … Og det må tas noen flere valg.

LDA har en rekke parametere som påvirker resultatet, hvorav de viktigste er:

  • k : Antall emner! Ja, dette er en parameter og ikke en I likhet med klyngeteknikker som KMeans, må du fortelle hvor mange klynger / emner du vil identifisere ify.
  • metode : Thememodels-pakken muliggjør forskjellige optimaliseringsmetoder, VEM algorithm eller Gibbs sampling, standard er VEM.
  • kontroll : liste over kontrollvariabler for å styre estimering – relevante parametere avhenger av valgt metode VEM eller Gibbs, men de viktigste er:
  • nstart : Antall kjøringer som skal utføres med samme innstillinger men forskjellige frø
  • seed : For reproduserbarhet kan et tilfeldig frø settes. Hvis nstart> 1, må du oppgi flere frø, 1 per nstart (f.eks. C (123, 234 «, 345»))
  • best : Hvis SANN (standard), blir bare kjøringen med best passende resultat beholdt, sett, hvis FALSE returneres en liste over alle løp slik at du kan undersøke alle av dem.

For en full oversikt over alle tilgjengelige parametere og innstillinger, se emnemodellpakketvignetten .

Anslå LDA-emnemodell

Den mest effektive parameteren er k : tallet av emner å identifisere. Hvordan velge en verdi for k? Dette er delvis et resultat av diskusjon (hvilket antall emner forventer vi å finne i denne sammenhengen?) Og prøve & feil (prøv forskjellige verdier av k, evaluer resultatene). Noen dataforskere vil kanskje ikke like dette, de foretrekker å se på statistikk for å veilede dem i denne prosessen, men for de som er kjent med andre teknologier uten tilsyn som KMeans, er ikke dette så nytt. Klynging og også tema modellering er til en viss grad mer kunst enn vitenskap. Veiledet av statistiske teknikker og tiltak, skaper en dataforsker en løsning for tema modellering som passer til (forretnings) behov. I tilfelle du trenger et utgangspunkt for k med noe statistisk bakgrunn, kan du prøve denne tilnærmingen eller dette tilnærming.

La oss starte med en emnemodell for å identifisere tre emner og utforske resultatet. Vi har ingen grunn til å endre andre standarder på dette tidspunktet.

Evaluer emnemodell

Emnemodellen er montert, så la oss utforske!

Det monterte lda-objektet inneholder et antall matriser:

  • phi : matrise med fordeling av tokens (i rader) over emner (i kolonner)
  • theta : matrise med distribusjon av dokumenter (derav: anmeldelser, i rader) over emner (i kolonner)

Både for phi og for theta, summen over alle kolonnene er lik 1, noe som betyr:

  • For phi er summen av alle tokenpoengene i et emne 1 – høyere poeng betyr høyere betydning av det tokenet i emnet .
  • For theta er summen av alle emnepoengene i et dokument 1 – høyere poeng, noe som betyr at emnet er mer til stede i det dokumentet.

For å utforske emnemodellen vår, la oss begynne med å se på de viktigste tokens per emne. For å gjøre det, må vi spesifisere når et token er viktig for et emne. Vi kan hevde at token er viktig for emnet når det er høy sannsynlighet for å forekomme innenfor et emne p(token|topic). La oss se hvordan dette ser ut for emnemodellen vår med 3 emner. Vi bruker en fin funksjon av tidytext -pakken, som hjelper til med å utarbeide emnemodelldataene for å visualisere de viktigste tokens per emne: tidy().

Med dette plottet får vi en første følelse av hva temaene i vår første emnemodell representerer. Som vi kan se fra plottet, har ulempen at tokens som har en høy samlet frekvens, har større sannsynlighet for å vises i topp 10 for flere emner. For eksempel vises restaurant i flere emner topp 10-årene. Bare det å se på de samlede temasannsynlighetene kan skjule at spesifikke noe sjeldnere tokens er veldig relatert til et bestemt emne. For å analysere det kan vi gjøre tokenfrekvensen i emnet relativ til tokens samlede frekvens: p(token|topic)/p(token). Dette viser hvilke tokens som er sterkt relatert til emnet, uavhengig av tokenfrekvens.

Å ta (bare) sistnevnte tilnærming har sin egen ulempe, og fremhever viktige tokens som kanskje ikke forekommer i så mange anmeldelser. Den beste tilnærmingen kan være et sted i midten: For å evaluere en emnemodell er det mest verdifullt å kunne utforske emnemodellen fra begge perspektiver – absolutt begrepssannsynlighet og relativ begrepssannsynlighet – og kanskje til og med en blanding av de to. Av denne grunn er pakken LDAvis så verdifull fordi den lar deg gjøre akkurat det! LDAvis trenger en JSON som inneholder informasjon om emnemodellen og vokabularet ditt:

En sideanmerkning her: LDAvis R-pakken kan brukes fra R eller RStudio, men ikke direkte fra et bærbart miljø som Jupyter eller Databricks. Derfor brukte vi pyLDAvis-porten til LDAvis-pakken, siden dette gjør det enkelt å inkludere det fantastiske LDAvis-verktøyet i en bærbar PC. I noen nettlesere fungerer pyLDAvis imidlertid ikke som den skal. Hvis dette skjer, kan du se et eksempel nedenfor. last ned denne notisboken og prøv LDAvis selv.

For å kjøre LDAvis lokalt med R eller RStudio, kan du kjøre serVis(json) . For å utforske den interaktive LDAvis fra skjermavtrykket nedenfor, se denne lenken .

Diagrammet til venstre viser størrelsen på Emner ( Hvor mange dokumenter tilskrives emnet?) samt avstanden mellom emner ( Hvilke emner er mer / mindre relatert til hverandre? ). På høyre side vises de viktigste tokens for det valgte emnet (eller de viktigste viktigste tokens i emnemodellen når ingen emner er valgt). Med glideren øverst til høyre kan vi endre lambda, der lambda bestemmer hvor mye vi foretrekker å se på den absolutte token sannsynligheten i emnet (p(token|topic), lambda = 1) eller foretrekker det relative token sannsynlighet innenfor emnet (p(token|topic)/p(token), lambda = 0). Å leke med denne visualiseringen er ofte den beste måten å bli kjent med de identifiserte emnene. Og – viktigst av alt – å finne ut en riktig temaetikett for hvert av emnene! Dette er også til stor hjelp for å avgjøre om den gjeldende emnemodellen er tilstrekkelig for oppstrømsoppgaven din, eller at du vil endre noen innstillinger (k, metode, frø, …) eller til og med dataene (endre valgte dokumenter eller tokens) for å få et bedre resultat.

Iterasjoner mot din vinnende emnemodell

Vi sa det før: topic modeling er – akkurat som klyngeanalyse og andre uten tilsyn maskinlæringsteknikker – mer kunst enn vitenskap! Derfor kommer du sannsynligvis til å bruke ganske lang tid på å finjustere emnemodellen din før du ender med din «beste» emnemodell. Vi setter «best» i anførselstegn her, fordi det som er «best» avhenger sterkt av både applikasjonene du har i tankene med emnemodellen din og kreativiteten din! Så dette er ganske subjektivt! Under prosessen med å finne den «beste» emnemodellen din, har du sannsynligvis noen øyeblikk som du tror du ikke kommer på noen løsning du kan bruke, og andre øyeblikk som du opplever ekstase av å se de egentlige emnene som kommer til å leve gjennom tokens som dominerer det.Her er de viktigste verktøyene du tegner din optimale emnemodell:

  • endre k – antall emner
  • ekskluderer ekstra for dominerende (hyppige) tokens (disse kan fortsatt vær for dominerende og undertrykk å finne mer interessante underdomener i teksten din)
  • øke den minimale tokenfrekvensen til fokus på de mer dominerende tokens
  • eksempeldokumenter for å fokusere på de mest relevante dokumentene for å finne viktige emner , vi kan endre prøvetakingsstrategien

Bortsett fra disse parametrene, har du også noen LDA-parametere du kan variere, men etter vår erfaring er parametrene ovenfor de viktigste til å begynne med. Mens økning eller reduksjon av k bare betyr at du må estimere LDA på nytt, endrer du prøvetakingen av anmeldelser eller tokens for å vurdere, betyr at du også må gjenskape DTM-en din.

Hva gjorde vi? Etter mye svette, litt forbannelse og utforsking av mange løsninger, gjorde vi følgende:

  • endre k til 7 emner.
  • Slå sammen noen tokens og ekskluder et antall for hyppige tokens
  • Utforsk flere frøresultater (med nstart og best=FALSE) for å finne den beste tolkbare emnemodellen **
  • Til slutt velger du beste frø og stiller best=TRUE for å beholde den beste LDA-modellen bare

** LDA -funksjonen gjør det mulig å utføre flere kjøringer ved å spesifisere nstart -parameteren for å angi antall kjøringer og med seed sett frøene for å lede disse løpene. Når du setter best=TRUE, blir bare løsningen med best logg sannsynlighet bevart. Hvis du setter den til best=FALSE, kan du utforske alle emnemodellene ( returnert objekt er nå en liste over alle emnemodeller).

Iterering og sammenligning av resultater resulterte i 7 emner vi kunne merke pent med emnenavn på emner som anmeldere snakker om når de vurderer restauranter. Her er løsningen vår for emnene med etikettene som allerede er lagt til dem:

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

For å utforske de interaktive LDAvisene fra skjermavtrykket nedenfor, gå til denne html-filen .

Selv om noen emner fremdeles er en blanding av ting, bruker vi gjerne denne løsningen til å forutsi Michelin-stjerner. Vi ser noen klare skiller mellom de identifiserte emnene, og vi forventer at oversettelse av råteksten til hver anmeldelse til en sannsynlighetsvektor for disse emnene vil hjelpe til med å forutsi Michelin-stjerner. Her er en oversikt over emnene med etikettene vi gir dem og deres hyppigste tokens:

Emnemodellering – innpakning av den

I dette artikkel vi viste deg hvordan du kan lage en emnemodell for å identifisere latente konstruksjoner eller «emner» som anmeldere snakker om i restaurantanmeldelser. Som du har sett, er det ganske mange valg som skal tas før vi har vår siste beste emnemodell, og noen av disse valgene er ikke enkle å ta siden veiledende statistikk ikke alltid er tilgjengelig. Husk det vi uttalte før: Temamodellering er en teknikk uten tilsyn, og dette gjør det til ‘mer kunst som vitenskap’. Det som er viktig for mange brukstilfeller er at du ender med emner du er i stand til å tolke og forklare, siden du trenger å kunne tolke funksjonene du har bygd her mens du bruker dem i nedstrømsoppgaver. Med vår 7-emnemodell føler vi oss sikre på at vi kan gjøre det!

Fordeler

En flott ting om emnemodellering – og spesielt LDA – er at når alt finjusteringen og sliter er ferdig, vil du sannsynligvis ende opp med et håndterbart antall pent tolkerbare emner. Dette lar deg legge til fordelingen over hvert emne for hvert dokument. Siden sannsynligheten for temaet er 1 og er numeriske verdier, har du nå oppsummert de ustrukturerte tekstene med ulik lengde til bare noen få nye, enkle å behandle funksjoner. Funksjoner som kan være av stor verdi i nedstrøms oppgaver som prediktiv modellering eller segmenteringsoppgaver.

Ulemper

Den største ulempen med emnemodellering er mest sannsynlig subjektiviteten i å finne den beste modellen . Derfor kan det ta litt tid og krefter å komme med en skikkelig emnemodelløsning. Det kan være flere statistisk likeverdige løsninger som kan variere vesentlig i de resulterende emnene.Derfor, når du kjører analysen med litt forskjellige data eller innstillinger, er det alltid sjansen for at tolkningen av modellen endres dramatisk. Spesielt når det ikke er noen dominerende temaløsning i tekstdataene dine, kan hvert løp resultere i forskjellige resultater. Sørg for at du holder oversikt over tidligere løp, ved å sikre frø og datasett som er brukt, slik at du ikke opplever frustrasjonen over å finne en vakker emnemodelløsning du kan tolke pent og beskrive, og deretter miste den for aldri å gjenopprette den igjen.

Ser frem

Tidligere har vi spesifisert vårt mål: Å forutsi hvilke restauranter som har en Michelin-stjerne. I en av våre (neste blogger) bruker vi derfor fordelingen over emner i gjennomgangstekstene for å forutsi om anmeldelsen er en Michelin-anmeldelse eller ikke. Vi samler også disse spådommene over alle anmeldelser en restaurant har måttet vurdere i hvilken grad vi er i stand til å forutsi Michelin-stjerner. Bortsett fra dette, vil vi bruke (andre teknikker) (word2vec, GloVe, BERT) for å oppsummere gjennomgangstekstene til funksjoner vi kan bruke til å forutsi Michelin-stjerner, og vi vil vise hvilken tilnærming som fungerer best. Vi vil begynne med å introdusere teknikker for innebygging av ord (word2vec, GloVe) i vår neste blogg og vise deg hvordan du kan forvandle våre gjennomgangstekster til innebygginger og hvordan du kan tolke og visualisere dem.

Denne artikkelen er en del av vår NLP med R -serien. En oversikt over alle artiklene i serien kan finnes (finnes her).

  • Forrige i denne serien: (Data Preparation for Natural Language Processing)
  • Neste opp i denne serien : (Training Training Embedding Model and Visualize Results)

Vil du gjøre dette selv? Du er velkommen til å laste ned Databricks Notebook eller R-skriptet fra gitlab siden.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *