NLP med R del 1: Ämnesmodellering till identifiera ämnen i restaurangrecensioner

Publicerad

(Jurriaan Nagelkerke) ( 13 nov 2020)

Denna berättelse är skriven av och . Det är en del av vår NLP med R serien ( Natural Language Processing för prediktiva ändamål med R ) där vi använder ämnesmodellering, ordinbäddningar, transformatorer och BERT.

I en sekvens av artiklar jämför vi olika NLP-tekniker för att visa dig hur vi får värdefull information från ostrukturerad text. För ungefär ett år sedan samlade vi recensioner om holländska restauranger. Vi undrade om ”visdom från publiken” – recensioner från restaurangbesökare – kunde användas för att förutsäga vilka restauranger som mest sannolikt kommer att få en ny Michelin-stjärna. Läs det här inlägget för att se hur det fungerade. Vi använde ämnesmodellering som vårt primära verktyg för att extrahera information från granskningstexterna och kombinerade det med prediktiva modelleringstekniker för att sluta med våra förutsägelser.

Vi fick mycket uppmärksamhet med våra förutsägelser och även frågor om hur vi gjorde textanalysdelen. För att svara på dessa frågor kommer vi att förklara vårt tillvägagångssätt mer detaljerat i de kommande artiklarna. Men vi slutade inte att utforska NLP-tekniker efter vår publicering, och vi vill också dela med oss ​​av insikter från att lägga till fler nya NLP-tekniker. Mer specifikt kommer vi att använda två typer av ordinbäddningar – en klassisk Word2Vec-modell och en GLoVe-inbäddningsmodell – vi använder transfer learning med förutbildade ordinbäddningar och vi använder BERT . Vi jämför mervärdet av dessa avancerade NLP-tekniker med vår basmodellmodell i samma dataset. Genom att visa vad vi gjorde och hur vi gjorde det hoppas vi kunna vägleda andra som är angelägna om att använda textdata för sina egna datavetenskapliga strävanden.

I en (tidigare artikel) visade vi hur vi förberett våra data för att användas för olika NLP-tekniker. Här börjar vi vår serie av artiklar om NLP-tekniker genom att introducera Ämnesmodellering och visa dig hur du identifierar ämnen, visualiserar ämnesmodell resultat. I en (senare artikel) visar vi dig hur du använder ämnesmodellen i en förutsägbar modell.

Vad är ämnesmodellering?

Att upptäcka ämnen som restaurangrecensenter skriver om i sina restaurangrecensioner använder vi Topic Modeling. Men vad är en ämnesmodell? I maskininlärning och naturlig språkbehandling är en ämnesmodell en typ av statistisk modell som kan användas för att upptäcka de abstrakta ämnena som förekommer i en samling dokument. Det finns ett antal algoritmer för att extrahera ämnen från en textsamling, men Latent Dirichlet Allocation är en av de mest populära algoritmerna eftersom den är effektiv och resulterar i mycket tolkbara ämnen. Tolkning av ämnen är ett viktigt inslag i en ämnesmodell, eftersom vi inte bara vill hitta statistiskt relevanta grupperingar av ord, vi vill också kunna märka de identifierade ämnena med ett ämnesnamn som andra kan relatera till. Som sådan har ämnesmodellering några likheter med klustringstekniker som KMeans, där tolkning också är lika viktig som statistiska mått är att bestämma vad som är en ”bra” lösning. Hur ämnesmodellering / LDA fungerar visualiseras av Blei som:

Som figuren visar:

  • Varje ämne är en fördelning över ord
  • Varje dokument är en fördelning över ämnen

Så när vi är färdiga med ämnesmodellering av våra recensioner:

  • borde vi veta vad som är ämnen eller ämnen som granskare skriver om i deras restaurangrecensioner,
  • vi vet vilka tokens eller ord som är viktigast i dessa ämnen, och
  • vi kan berätta för varje enskild recension i vilken utsträckning det handlar om de identifierade ämnena och detta kan vara en mix – 80\% om ämne X och 20\% om ämne Y .

Steg 0: Ställa in vårt sammanhang

Först , ställer vi in ​​vår arbetsboksmiljö med de paket som krävs för att utföra ämnesmodellering.

I vår (blogg om förberedelser ingående textdata) introducerade vi redan kort tidyverse och tidytext.Här lägger vi till några andra paket i listan:

  • topicmodels är ett paket för att uppskatta ämnesmodeller med LDA och builds efter datastrukturer som skapats med tm-paketet
  • tm är ett kraftfullt, generiskt paket med alla möjliga textbrytningsfunktioner, bland annat att skapa dokument termmatriser, som vi behöver för ämnesmodellering
  • ldavis är ett utmärkt paket för att visualisera och tolka ämnesmodellen och mycket hjälpsam vid märkning ämnen

Steg 1. Ladda förbehandlade data

Innan vi gräver in i den analytiska sidan av saker, vi behöver lite förberedda textdata. Som alla sanna dataforskare vet tar korrekt dataförberedelse det mesta av din tid och är avgörande för kvaliteten på de analysresultat du slutar med. Att förbereda textdata är en annan kopp te jämfört med att förbereda strukturerade numeriska eller kategoriska data. I den här bloggen är vårt fokus på textanalys. Ändå vill vi visa dig hur vi städade och förberedde de uppgifter vi samlade in. I denna (föregående blogg) förklarar vi i detalj hur vi förbehandlade data, vilket resulterar i följande 5 filer som vi kan använda i vår NLP-analys:

  • reviews.csv: en csv-fil med original och förberedda granskningstexter – bränslet för våra NLP-analyser. (inkluderad nyckel: restoreviewid, därav den unika identifieraren för en recension)
  • labels.csv : a csv-fil med 1/0-värden, som anger om recensionen är en recension för en Michelin-restaurang eller inte (inkluderad nyckel: restoreviewid)
  • restoid.csv : en csv-fil med restaurang-id för att kunna avgöra vilka recensioner som tillhör vilken restaurang (inkluderad nyckel: restoreviewid)
  • trainids.csv : en csv-fil med 1/0-värden, som anger om granskningen ska användas för träning eller testning – vi har redan delat recensionerna i tåg / test för att möjliggöra återanvändning av samma prover för rättvisa jämförelser mellan tekniker (inkluderad nyckel: restoreviewid)
  • features.csv : en csv-fil med andra funktioner angående recensionerna (inkluderad nyckel: restoreviewid)

Dessa filer med th Rensade och relevanta data för NLP-tekniker görs tillgängliga för dig via offentlig blob-lagring så att du kan köra all kod vi presenterar själv och se hur saker fungerar mer detaljerat. För vår ämnesmodell behöver vi tre av dessa filer:

Steg 2: Förbered data för ämnet modellering

Med utgångspunkt från de rengjorda recensionstexterna måste vi göra några saker innan vi kan uppskatta våra ämnesmodeller:

  1. Tokenisera vår förberedda text (inklusive bigrams)
  2. Exempelrecensioner för utbildning av vår ämnesmodell
  3. Filtrera relevanta tokens
  4. Skapa dokumentterminmatris

2.1. Tokenisera vår förberedda text (inklusive bigrams)

Latent Dirichlet Allocation (LDA), den teknik vi använder för ämnesmodellering, är en ”påse med ord” -teknik. Vad detta betyder är att NLP-tekniken inte ser på tokens ordning när man analyserar texten. Därför beaktas inte var token finns i texten och vilka andra tokens som ligger nära token (föregående / efterföljande tokens) i dokumentet . Det är som att alla token från dokumenttexten kastas i en påse, blandar dem men behåller informationen om att tokens finns i samma dokument. Som ett resultat kan vi missa viktig information om det finns många intressanta samlokaler – frekventa kombinationer av tokens – i texten. Populära exempel är namn på människor (Donald Trump, Jonnie Boer) eller platser (USA, Den Haag) men även sammanhangsspecifika ordkombinationer kan vara viktigt att inkludera i vår ämnesmodell: witte wijn ( vitt vin ), rode wijn , ( rött vin ), gaan eten ( gå äta ). För att se till att vi inte missar dessa viktiga samlagningar lägger vi till de förberedda bigrams som finns i vår text. Kom ihåg att vi redan har tagit bort stoppord och interpunktion i vår dataprep.

Efter att ha lagt till bigram till de laddade, rengjorda texterna delade vi texterna igen för att sluta med en dataram där varje rad är en recension – token-kombination. Vi filtrerar bort recensioner som har blivit för korta (5 tokens) efter att vi tagit bort stoppord. I det här formatet är vi redo för våra sista förberedelser innan vi kan börja modellera ämnen.

2.2 Exempel på recensioner för träning av vår ämnesmodell

I vårt nästa steg kommer vi att filtrera de mest relevanta tokens som ska inkluderas i dokumentets termmatris och därefter i ämnesmodellering.Men först måste vi avgöra vilka dokument (recensioner) som är viktigast för oss. Av vissa anledningar vill vi inte använda alla recensioner som input för vår ämnesmodell:

  • I slutändan vill vi använda ämnena i en förutsägelsemodell för att förutsäga Michelin-stjärnor. Det är bästa praxis att avsätta en testuppsättning innan vi bygger ämnesmodellen och använder dess resultat i den prediktiva nedströmsuppgiften. På det här sättet bygger vi både vår ämnesmodell och vår förutsägelse på tågdata och håller testdata osedda tills utvärderingen.
  • Som visas nedan är inte mer än 3\% av alla recensioner Michelin-recensioner. Genom att öka andelen Michelin-recensioner i tåguppsättningen vi använder för modellering av ämnen är det mer troligt att specifika ämnen som diskuteras i Michelin-recensioner kommer att identifieras.

Av dessa skäl har vi kommer att fokusera resten av förberedelserna mot vår ämnesmodell och uppskattning av ämnesmodellerna på en delmängd av recensioner. Denna delmängd innehåller endast recensioner som redan har angetts som träningsfall i vår anteckningsbok för dataförberedelse. Inom denna delmängd tar vi alla Michelin-recensioner (ca 3.000) och kompletterar med recensioner som inte är Michelin för att sluta med cirka 10.000 recensioner:

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

Nu när vi har lagt till bigrams i tokens och vi har tokeniserat våra texter har vi fortfarande många, många unika tokens tillgängliga för vår ämnesmodell . Det är bästa praxis att bli av med longtail av sällsynta villkor. Låt oss först titta på hur fördelningen av tokenfrekvensen ser ut. Kom ihåg att vi i vår (dataförberedelseblogg) redan tog bort alla stoppord från texterna, inklusive 128 anpassade högfrekventa ”stopp” -ord som vi angav genom att titta på tokenfrekvensen vid förberedelsen av data.

Diagrammet ovan visar tydligt att en stor mängd unika tokens förekommer sällan i alla recensioner, 75\% uppträder bara en gång.

Fokusera på tokens som förekommer 5 gånger eller mer i tåg Corpus

Som vi kan se från antalet tokenfrekvenser finns det många tokens som bara förekommer en eller några gånger: Cirka 92\% av alla unika tokens förekommer mindre än 5 gånger i vår corpus av recensioner. Dessa lågfrekventa tokens påverkar ämnesmodellanalysen. För att fokusera på ofta använda tokens väljer vi tokens som förekommer 5 gånger eller mer i den förberedda tågdata. Detta är förhoppningsvis tillräckligt för att lära sig ämnen från tokens som förekommer tillsammans i samma recensioner. När vi optimerar vår ämnesmodell kan vi variera minimifrekvensen för att utvärdera påverkan på resultaten.

Varför inte TF-IDF?

Efter att ha läst några i textanalysverktyg kanske du undrar: Varför använder vi inte TF-IDF för att välja de mest relevanta tokens? TF-IDF står för Term Frequency – Inverse Document Frequency. Detta mått kombinerar termfrekvensen – hur ofta finns symbolen i ett dokument? – med inversen av dokumentfrekvensen – i hur många unika dokument är termen närvarande? Även om TF-IDF ofta är ett bra val att välja de mest relevanta tokens, är det inte i vårt sammanhang, där dokumentstorleken är begränsad och återkomsten av samma token i samma text är låg. Inte ofta har en token en termfrekvens över 1. Som ett resultat är det bara den inversa dokumentfrekvensdelen som är avgörande och detta gynnar de tokens som bara förekommer i en eller två recensioner. Av den anledningen använder vi inte TF-IDF här utan tittar på den totala frekvensen för att välja relevanta tokens för ämnesmodellering. Också för att vi redan har tagit bort den anpassade listan med stoppord från vår text, därför har alltför frekventa tokens redan tagits bort.

Genom att filtrera de sällsynta tokens har vi minskat antalet tokens att tänka på i vår LDA dramatiskt, med fokus på de 12K (8\%) vanligaste tokens och borttagning av 146K (92\%) token som är för sällsynta i corpus. Dessa valda tokens representerar fortfarande 73\% av alla tokens i dokumenten dock:

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

Efter att ha filtrerat de tokens vi vill använda för att bygga vår ämnesmodell kan vi skapa ingången för LDA. Detta kräver en document-term-matrix eller DTM därmed en matris med i raderna alla våra dokument (recensioner) och i kolumnerna alla termer ( relevanta tokens). Observera att vi använder den totala tokenfrekvensen för parametern value.Du kan förvänta dig den dokumentspecifika termfrekvensen här, men vi använder den totala tokenfrekvensen för att ge mycket mer tonvikt på att hitta ämnesmodellen till termer som är vanligare i allmänhet; med tanke på den korta recensionslängden (jämfört med böcker eller artiklar som ofta används i ämnesmodellering) är sannolikheten för att en enda token förekommer oftare i recensionen begränsad.

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

Steg 3: Utveckla ämnesmodell

Nu när vi har en DTM, vi är redo att börja ämnesmodellering! Hittills har vi redan gjort en hel del val med inverkan på vårt analysresultat: vilken minimal recensionlängd vi ska använda, vilka stoppord som ska uteslutas, vad n -grams att inkludera, den minimala tokenfrekvensen för att använda tokens … Och några fler val måste göras.

LDA har ett antal parametrar som påverkar resultatet, varav de viktigaste är:

  • k : Antalet ämnen! Ja, det här är en parameter och inte en resultat. I likhet med klustringstekniker som KMeans måste du berätta hur många kluster / ämnen du vill identifiera ify.
  • metod : Thememodels-paketet möjliggör olika optimeringsmetoder, VEM algorithm eller Gibbs sampling, standard är VEM.
  • kontroll : lista över kontrollvariabler för att styra uppskattning – relevanta parametrar beror på vald metod VEM eller Gibbs men de viktigaste är:
  • nstart : Antalet körningar som ska utföras med samma inställningar men olika frön
  • seed : För reproducerbarhet kan ett slumpmässigt frö ställas in. Om nstart> 1 måste du tillhandahålla flera frön, 1 per nstart (t.ex. c (123, 234 ”, 345”))
  • bäst : Om SANT (standard) behålls endast körningen med bäst passande resultat, av set, om FALSE returneras en lista över alla körningar så att du kan undersöka alla av dem.

För en fullständig översikt över alla tillgängliga parametrar och inställningar, se paketvignetten topicmodels .

Uppskattning av LDA-ämnesmodell

Parametern som har mest effekt är k : numret av ämnen att identifiera. Hur väljer man ett värde för k? Detta är delvis ett resultat av diskussion (vilket antal ämnen förväntar vi oss att hitta i detta sammanhang?) Och försök & fel (prova olika värden på k, utvärdera resultat). Vissa dataforskare kanske inte gillar detta, de föredrar att titta på statistik för att vägleda dem i den här processen, men för dem som är bekanta med andra icke-övervakade datavetenskapstekniker som KMeans är det inte så nytt. Kluster och även ämnesmodellering är till viss del mer konst än vetenskap. Guidad av statistiska tekniker och mått skaffar en datavetare en lösning för ämnesmodellering som passar (affärs) behov. Om du behöver en startpunkt för k med viss statistisk bakgrund kan du prova detta tillvägagångssätt eller detta strategi.

Låt oss börja med en ämnesmodell för att identifiera tre ämnen och utforska resultatet. Vi har ingen anledning att ändra några andra standardvärden vid den här tiden.

Utvärdera ämnesmodell

Ämnesmodellen är monterad, så låt oss utforska!

Det monterade lda-objektet innehåller ett antal matriser:

  • phi : matris med fördelning av tokens (i rader) över ämnen (i kolumner)
  • theta : matris med distribution av dokument (därmed: recensioner, i rader) över ämnen (i kolumner)

Både för phi och för theta, summan över alla kolumner är lika med 1, vilket betyder:

  • För phi är summan av alla tokenpoäng inom ett ämne 1 – högre poäng betyder högre betydelse för den token inom ämnet .
  • För theta är summan av alla ämnesresultat i ett dokument 1 – högre poäng vilket betyder att ämnet är mer närvarande i det dokumentet.

För att utforska vår ämnesmodell, låt oss börja med att titta på de viktigaste tokens per ämne. För att göra det måste vi ange när en token är viktig för ett ämne. Vi kan argumentera för att token är viktigt för ämnet när det är mycket troligt att det förekommer inom ett ämne p(token|topic). Låt oss se hur detta ser ut för vår ämnesmodell med tre ämnen. Vi använder en snygg funktion av paketet tidytext, som hjälper till att förbereda ämnesmodelldata för att visualisera de viktigaste tokens per ämne: tidy().

Med denna plot får vi en första känsla av vad ämnena i vår första ämnesmodell representerar. Som vi kan se från plottet har nackdelen att titta på token-sannolikheten per ämne som nackdelar som har en hög totalfrekvens har en högre sannolikhet att visas i topp-10 för flera ämnen. Till exempel visas restaurang i flera ämnes topp 10-tal. Att bara titta på de övergripande ämnets sannolikheter kan dölja att specifika något mindre frekventa tokens är mycket relaterade till ett specifikt ämne. För att analysera det kan vi göra tokenfrekvensen i ämnet relativt till tokens totala frekvens: p(token|topic)/p(token). Detta visar vilka tokens som är starkt relaterade till ämnet, oberoende av tokenfrekvensen.

Att ta (endast) det senare tillvägagångssättet har sin egen nackdel och markerar viktiga tokens som kanske inte förekommer i så många recensioner. Det bästa tillvägagångssättet kan vara någonstans i mitten: För att utvärdera en ämnesmodell är det mest värdefullt att kunna utforska ämnesmodellen från båda perspektiv – absolut term sannolikhet och relativ term sannolikhet – och kanske till och med en blandning av de två. Av detta skäl är paketet LDAvis så värdefullt eftersom det gör att du kan göra exakt det! LDAvis behöver en JSON som innehåller information om din ämnesmodell och ordförråd:

En sidoanteckning här: LDAvis R-paketet kan användas från R eller RStudio men inte direkt från en anteckningsboksmiljö som Jupyter eller Databricks. Därför använde vi pyLDAvis-porten till LDAvis-paketet, eftersom det gör det enkelt att inkludera det underbara LDAvis-verktyget i en anteckningsbok. I vissa webbläsare fungerar dock inte pyLDAvis korrekt. Om detta händer, se ett exempel nedan. ladda ner den här anteckningsboken och prova LDAvis själv.

För att köra LDAvis lokalt med R eller RStudio kan du köra serVis(json) . För att utforska den interaktiva LDAvis från skärmavtrycket nedan, se den här länken .

Diagrammet till vänster visar storleken på Ämnen ( Hur många dokument tillskrivs ämnet?) samt avståndet mellan ämnen ( Vilka ämnen är mer / mindre relaterade till varandra? ). På höger sida visas de viktiga tokens för det valda ämnet (eller de övergripande viktigaste tokens i ämnesmodellen när inget ämne är valt). Med skjutreglaget uppe till höger kan vi ändra lambda, där lambda bestämmer hur mycket vi gillar att titta på den absoluta token-sannolikheten inom ämnet (p(token|topic), lambda = 1) eller föredrar relativ token sannolikhet inom ämnet (p(token|topic)/p(token), lambda = 0). Att leka med denna visualisering är ofta det bästa sättet att bekanta sig med de identifierade ämnena. Och – viktigast av allt – att räkna ut en riktig ämnesetikett för vart och ett av ämnena! Detta är också till stor hjälp för att avgöra om den aktuella ämnesmodellen räcker för din nedströms uppgift eller att du vill ändra vissa inställningar (k, metod, utsäde, …) eller till och med data (ändra valda dokument eller tokens) för att ett bättre resultat.

Iterationer mot din vinnande ämnesmodell

Vi sa det tidigare: topic modeling är – precis som klusteranalys och andra utan tillsyn maskininlärningstekniker – mer konst än vetenskap! Därför kommer du antagligen att spendera ganska lång tid på att finjustera din ämnesmodell innan du slutar med din ”bästa” ämnesmodell. Vi lägger ”bäst” i citat här eftersom det som är ”bäst” beror starkt på både de applikationer du har i åtanke med din ämnesmodell och din kreativitet! Så det här är ganska subjektivt! Under processen att hitta din ”bästa” ämnesmodell har du förmodligen några ögonblick som du tror att du inte kommer fram till någon lösning du kan använda och andra ögonblick som du upplever extas att se de inneboende ämnena kommer att leva genom tokens som dominerar det.Här är dina viktigaste verktyg för att skära din optimala ämnesmodell:

  • ändra k – antalet ämnen
  • utesluter extra för dominerande (frekventa) tokens (dessa kan fortfarande vara för dominerande och undertryck att hitta mer intressanta underdomäner i din text)
  • öka den minimala tokenfrekvensen till fokusera på de mer dominerande tokens
  • exempeldokument för att fokusera på de mest relevanta dokumenten för att hitta viktiga ämnen , vi kan ändra samplingsstrategin

Förutom dessa parametrar har du också några LDA-parametrar som du kan variera, men enligt vår erfarenhet är parametrarna ovan de viktigaste till att börja med. Medan ökning eller minskning av k bara betyder att du måste uppskatta din LDA, ändra provtagningen av recensioner eller tokens för att överväga innebär att du också måste återskapa din DTM.

Vad gjorde vi? Efter mycket svett, en del förbannelser och utforska många lösningar gjorde vi följande:

  • ändra k till sju ämnen.
  • Slå ihop några tokens och uteslut ett antal alltför frekventa tokens
  • Utforska flera fröresultat (med nstart och best=FALSE) för att hitta den bästa tolkbara ämnesmodellen **
  • Slutligen, välj bästa utsäde och ställ in best=TRUE för att behålla den bästa LDA-modellen bara

** LDA -funktionen gör det möjligt att utföra flera körningar genom att ange nstart -parametern för att ställa in antalet körningar och med seed frön för att styra dessa körningar. När du ställer in best=TRUE är bara den lösning som bäst loggar sannolikheten bevarad. Om du ställer in den på best=FALSE kan du utforska alla ämnesmodeller returnerat objekt är nu en lista över alla ämnesmodeller. Här är vår lösning för ämnen med etiketter som redan har lagts till:

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

För att utforska den interaktiva LDAvis från skärmavtrycket nedan, gå till denna html-fil .

Även om vissa ämnen fortfarande är en blandning av saker, använder vi gärna denna lösning för att förutsäga Michelin-stjärnor. Vi ser vissa tydliga skillnader mellan de identifierade ämnena och vi förväntar oss att översättningen av råtexten för varje recension till en sannolikhetsvektor för dessa ämnen kommer att hjälpa till att förutsäga Michelin-stjärnor. Här är en översikt över ämnen med etiketterna vi ger dem och deras vanligaste tokens:

Ämnesmodellering – avslutar den

I detta artikel visade vi dig hur du kan bygga en ämnesmodell för att identifiera de latenta konstruktioner eller ämnen granskare pratar om i sina restaurangrecensioner. Som du har sett finns det en hel del val att göra innan vi har vår sista bästa ämnesmodell och några av dessa val är inte lätta att göra eftersom vägledande statistik inte alltid är tillgänglig. Kom ihåg vad vi har sagt tidigare: Ämnesmodellering är en teknik utan tillsyn och det gör det till ”mer konst som vetenskap”. Det som är viktigt för många användningsfall är att du slutar med ämnen som du kan tolka och förklara, eftersom du måste kunna tolka de funktioner du har byggt här när du använder dem i nedströmsuppgifter. Med vår 7-ämnesmodell känner vi oss säkra på att vi kan göra det!

Fördelar

En bra sak med ämnesmodellering – och särskilt LDA – är att när allt tweaking och kämpar är gjort, kommer du sannolikt att få ett hanterbart antal snyggt tolkbara ämnen. Detta gör att du kan lägga till fördelningen över dessa ämnen för varje dokument. Eftersom ämnesannolikheterna uppgår till 1 och är numeriska värden har du nu sammanfattat de ostrukturerade texterna med olika längd till några få nya, lätta att bearbeta funktioner. Funktioner som kan vara av stort värde i nedströmsuppgifter som prediktiv modellering eller segmenteringsuppgifter.

Nackdelar

Den största nackdelen med ämnesmodellering är sannolikt subjektiviteten i att hitta den ”bästa” modellen . Därför kan det ta ganska lång tid och ansträngning att komma fram till en riktig ämnesmodellösning. Det kan finnas flera statistiskt likvärdiga lösningar som kan skilja sig väsentligt i de resulterande ämnena.Därför, när du kör om analysen med lite olika data eller inställningar, finns det alltid en chans att tolkningen av modellen förändras dramatiskt. Speciellt när det inte finns någon dominerande ämneslösning i dina textdata kan varje körning resultera i olika resultat. Se till att du håller reda på tidigare körningar genom att säkra frön och datauppsättningar som används så att du inte upplever frustrationen att hitta en vacker ämnesmodellösning som du snyggt kan tolka och beskriva och sedan förlora den för att aldrig återställa den igen.

Ser framåt

Tidigare har vi angett vårt mål: Att förutsäga vilka restauranger som har en Michelin-stjärna. I en av våra (nästa bloggar) använder vi därför fördelningen över ämnen i granskningstexterna för att förutsäga om recensionen är en Michelin-recension eller inte. Vi sammanställer också dessa förutsägelser över alla recensioner som en restaurang har haft för att utvärdera i vilken utsträckning vi kan förutsäga Michelin-stjärnor. Bortsett från detta kommer vi att använda (andra tekniker) (word2vec, GloVe, BERT) för att sammanfatta recensionstexterna i funktioner som vi kan använda för att förutsäga Michelin-stjärnor och vi visar vilken metod som fungerar bäst. Vi kommer att börja med att introducera inbäddningstekniker för ord (word2vec, GloVe) i vår nästa blogg och visa dig hur vi kan omvandla våra recensionstexter till inbäddningar och hur man tolkar och visualiserar dem.

Den här artikeln är en del av vår NLP med R -serien. En översikt över alla artiklar i serien finns (finns här).

  • Tidigare i denna serie: (Data Preparation for Natural Language Processing)
  • Nästa upp i serien : (Träna inbäddningsmodell för ord och visualisera resultat)

Vill du göra det själv? Ladda gärna ned Databricks Notebook eller R-script från sidan gitlab .

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *