NLP R-osalla 1: Aiheiden mallintaminen tunnista aiheet ravintola-arvosteluissa

(Jurriaan Nagelkerke) ( 13. marraskuuta 2020)

Tämän tarinan ovat kirjoittaneet ja . Se on osa NLP: tä, jossa on R sarja ( Luonnollisen kielen käsittely ennakoiviin tarkoituksiin R : n kanssa) , jossa käytämme aihemallinnusta, sanojen upotuksia, muuntajia ja BERT.

Peräkkäin artikkeleista vertaamme erilaisia ​​NLP-tekniikoita osoittaaksemme, kuinka saamme arvokasta tietoa strukturoimattomasta tekstistä. Noin vuosi sitten keräsimme arvosteluja hollantilaisista ravintoloista. Mietimme, voisiko ”väkijoukon viisautta” – ravintola-kävijöiden arvosteluja – käyttää ennustamaan, mitkä ravintolat todennäköisimmin saavat uuden Michelin-tähden. Lue tämä viesti nähdäksesi, kuinka se onnistui. Käytimme aihemallinnusta ensisijaisena työkaluna tietojen keräämiseksi katsausteksteistä ja yhdistimme sen ennustavien mallintamistekniikoiden kanssa ennusteidemme saavuttamiseksi.

Saimme paljon huomiota ennusteillamme ja myös kysymyksiä siitä, miten teimme tekstianalyysiosan. Vastaamme näihin kysymyksiin selittämällä lähestymistapamme yksityiskohtaisemmin tulevissa artikkeleissa. Mutta emme lopettaneet NLP-tekniikoiden tutkimista julkaisemisen jälkeen, ja haluamme myös jakaa oivalluksia uusien NLP-tekniikoiden lisäämisestä. Tarkemmin sanottuna käytämme kahden tyyppisiä sanojen upotuksia – klassinen Word2Vec-malli ja GLoVe-upotusmalli – käytämme siirto-oppimista valmiilla sanojen upotuksilla ja käytämme BERT . Verrataan näiden kehittyneiden NLP-tekniikoiden lisäarvoa perustietomallimalliin samalla tietojoukolla. Osoittamalla, mitä teimme ja miten teimme sen, toivomme ohjaavan muita, jotka haluavat käyttää tekstidataa omiin datatieteellisiin pyrkimyksiinsä.

Esitimme (edellisessä artikkelissa) kuinka valmisteli tietomme käytettäväksi erilaisissa NLP-tekniikoissa. Täällä aloitamme NLP-tekniikoita käsittelevän artikkelisarjamme ottamalla käyttöön aihemallinnuksen ja osoittamalla, kuinka voit tunnistaa aiheita, visualisoida aihemallin tuloksia. Yhdessä (myöhemmässä artikkelissa) näytämme, kuinka aihemallin tuloksia käytetään ennakoivassa mallissa.

Mikä on aihemallinnus?

Löydä aiheita, jotka ravintola-arvostelijat kirjoittavat ravintola-arvosteluissaan, käytämme Topic Modeling. Mutta mikä on aihemalli? Koneoppimisessa ja luonnollisessa kielenkäsittelyssä aihemalli on eräänlainen tilastollinen malli, jota voidaan käyttää asiakirjojen kokoelmissa esiintyvien abstraktien aiheiden löytämiseen. Aiheiden poimimiseksi tekstikokoelmasta on olemassa useita algoritmeja, mutta piilevä Dirichlet-allokointi on yksi suosituimmista algoritmeista, koska se on tehokasta en johtaa hyvin tulkittavia aiheita. Aiheiden tulkittavuus on tärkeä aihemallin piirre, koska emme halua vain löytää tilastollisesti merkityksellisiä sanaryhmiä, haluamme myös pystyä merkitsemään tunnistetut aiheet aiheen nimellä, johon muut voivat liittyä. Sellaisena aihemallinnuksella on joitain yhtäläisyyksiä klusterointitekniikoihin, kuten KMeans, joissa tulkinta on myös yhtä tärkeää kuin tilastolliset mittarit määritettäessä mikä on ”hyvä” ratkaisu. Blei visualisoi aiheen mallintamisen / LDA: n:

Kuten kuvasta näkyy:

  • Jokainen topic on jakauma sanoille
  • Jokainen asiakirja on jakauma aiheisiin

Joten kun olemme mallinnelleet aiheet mallien kanssa:

  • meidän on tiedettävä, ovatko aiheet tai aiheet, joihin arvostelijat kirjoittavat heidän ravintola-arvostelut,
  • tiedämme, mitkä tunnukset tai sanat ovat tärkeimpiä näissä aiheissa, ja
  • voimme kertoa jokaiselle yksittäiselle arvostelulle, missä määrin kyse on tunnistetuista aiheista ja tästä voi olla sekoitus – 80\% aiheesta X ja 20\% aiheesta Y .

Vaihe 0: Kontekstimme asettaminen

Ensin , olemme määrittäneet työkirjaympäristön, jossa on tarvittavat paketit aiheiden mallintamiseen.

Meidän (blogi prepar tekstidatan avulla) esiteltiin jo lyhyt sanamuoto ja siisti teksti.Tässä lisätään muutama muu paketti luetteloon:

  • topicmodels on paketti, jolla arvioidaan aihemalleja LDA: lla ja koontiversioilla tm-paketilla luotujen tietorakenteiden perusteella
  • tm on tehokas, yleinen paketti, jolla on kaikenlaisia ​​tekstinlouhintatoimintoja, muun muassa asiakirjan luominen termimatriisit, joita tarvitsemme aiheiden mallintamiseen
  • ldavis on hieno paketti aihemallin visualisointiin ja tulkitsemiseen ja erittäin hyödyllinen merkinnöissä aiheet

Vaihe 1. Lataa esikäsitelty data

Ennen kaivamme asioiden analyyttiseen puoleen, tarvitsemme valmisteltuja tekstitietoja. Kuten kaikki todelliset tutkijat tietävät, asianmukainen tietojen valmistelu vie suurimman osan ajastasi ja on ratkaisevinta lopputuloksesi analyysitulosten laadun kannalta. Tekstidatan valmistelu on toinen kuppi teetä verrattuna jäsenneltyjen numeeristen tai kategoristen tietojen valmistamiseen. Tässä blogissa keskitymme tekstianalytiikkaan. Silti haluamme näyttää sinulle, kuinka puhdistimme ja valmistelimme keräämämme tiedot. Tässä (edellisessä blogissa) selitämme yksityiskohtaisesti tietojen esikäsittelyn, jolloin saadaan seuraavat 5 tiedostoa, joita voimme käyttää NLP-analytiikassa:

  • reviews.csv: csv-tiedosto, joka sisältää alkuperäiset ja valmistellut arvostelutekstit – polttoaine NLP-analyyseihimme. (mukana oleva avain: restoreviewid, joten tarkistuksen yksilöivä tunniste)
  • labels.csv : a csv-tiedosto, jossa on 1/0-arvot, mikä kertoo, onko arvostelu Michelin-ravintolan arvostelu vai ei (mukana oleva avain: restoreviewid)
  • restoid.csv : csv-tiedosto, jossa on ravintolan tunnukset, jotta voidaan määrittää mitkä arvostelut kuuluvat mihin ravintolaan (mukana avain: restoreviewid)
  • trainids.csv : csv-tiedosto, jossa on 1/0-arvot ja joka kertoo, pitäisikö arvostelua käyttää koulutukseen tai testaukseen – jakoimme jo arvostelut junassa / testi samojen näytteiden uudelleenkäytön mahdollistamiseksi tekniikoiden vertailua varten (mukana avain: restoreviewid)
  • features.csv : csv-tiedosto, jossa on muita arvosteluihin liittyviä ominaisuuksia (mukana avain: restoreviewid)

Nämä tiedostot Puhdistetut ja olennaiset tiedot NLP-tekniikoista ovat saatavana julkisen blob-tallennustilan kautta, jotta voit suorittaa kaiken esittelemämme koodin ja nähdä, miten asiat toimivat tarkemmin. Aihemalliamme varten tarvitaan kolme näistä tiedostoista:

Vaihe 2: Valmistele tiedot aihetta varten mallinnus

Puhdistetuista arvosteluteksteistä alkaen meidän on tehtävä joitain asioita, ennen kuin voimme arvioida aihemallimme:

  1. Tunnista valmisteltu teksti (mukaan lukien bigramit)
  2. Esimerkkiarvostelut aihemallimme kouluttamiseksi
  3. Suodata asiaankuuluvat tunnukset
  4. Luo dokumenttitermimatriisi

2.1. Tunnista valmisteltu teksti (mukaan lukien bigramit)

Latent Dirichlet Allocation (LDA), tekniikka, jota käytämme aiheiden mallintamiseen, on sanapussi. Tämä tarkoittaa sitä, että NLP-tekniikka ei tarkastele tunnusten järjestystä tekstiä analysoitaessa. Siksi, missä tunniste sijaitsee tekstissä ja mitä muita tunnuksia on lähellä tunnusta (edelliset / seuraavat tunnukset) asiakirjan sisällä , ei oteta huomioon. Se on kuin kaikki asiakirjan tekstimerkit heitettäisiin pussiin sekoittamalla ne, mutta säilyttäen tiedot siitä, että tunnukset ovat samassa asiakirjassa. Tämän seurauksena saatamme menettää tärkeitä tietoja, jos tekstissä on paljon mielenkiintoisia kollokaatioita – usein merkkien yhdistelmiä. Suosittuja esimerkkejä ovat ihmisten nimet (Donald Trump, Jonnie Boer) tai paikat (Yhdysvallat, Den Haag), mutta myös kontekstikohtaiset sanayhdistelmät saattavat olla tärkeitä sisällyttää aihemalliin: witte wijn ( valkoviini ), rode wijn , ( punaviini ), gaan eten ( mene syömään ). Varmistaaksemme, ettemme menetä näitä tärkeitä yhteistapauksia, lisäämme valmiit bigrams , jotka ovat tekstissämme. Muista, että poistimme jo lopetussanat ja vuorovaikutuksen dataprepistä.

Kun olet lisännyt bigrameja ladattuihin, puhdistettuihin teksteihin, jaamme tekstit uudelleen ja päädymme datakehykseen, jossa kukin rivi on arvostelu – tunniste-yhdistelmä. Suodatamme arvostelut, jotka ovat liian lyhyitä (5 merkkiä) lopetussanojen poistamisen jälkeen. Tässä muodossa olemme valmiita viimeisiin valmisteluihimme ennen kuin voimme aloittaa aiheiden mallintamisen.

2.2 Esimerkkiarvostelut aihemallimme kouluttamiseksi

Seuraavassa vaiheessa suodatamme asiaankuuluvat tunnukset sisällytettäviksi dokumenttitermimatriisiin ja sen jälkeen aiheiden mallintamiseen.Mutta ensin on määritettävä, mitkä asiakirjat (arvostelut) ovat meille tärkeimpiä. Jostain syystä emme halua käyttää kaikkia arvosteluja aihemallimme tulona:

  • Loppujen lopuksi haluamme käyttää ennustemallin aiheita ennustaa Michelin-tähdet. Paras käytäntö on varata testijoukko, ennen kuin rakennamme aihemallin ja käytämme sen tuloksia ennakoivassa tehtävässä. Tällä tavalla rakennamme sekä aihemallimme että ennusteen junatiedoille ja pidämme testitiedot näkymättöminä arviointiin asti.
  • Kuten alla on esitetty, korkeintaan 3\% kaikista arvosteluista on Michelin-arvosteluja. Lisäämällä Michelin-arvostelujen osuutta junamallisarjassa, jota käytämme aiheiden mallintamiseen, on todennäköisempää, että tunnistetaan Michelin-arvosteluissa käsitellyt aiheet.

Näistä syistä keskitymme loppu valmisteluun aihemalliin ja aihemallien arviointiin arvioiden osajoukkoon. Tämä osajoukko sisältää vain arvosteluja, jotka on jo määritelty koulutustapauksiksi tietojenkäsittelytietokannassamme. Tässä osajoukossa otamme kaikki Michelin-arvostelut (noin 3.000) ja täydennämme ei-Michelin-arvosteluilla, jotta saadaan noin 10.000 arvostelua:

# 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 Suodatuskoodit

Nyt kun olemme lisänneet bigrameja rahakkeisiin ja olemme uudelleen merkinneet tekstimme, meillä on edelleen monia, monia ainutlaatuisia tunnuksia aihemallillemme . Paras tapa on päästä eroon harvinaisista termeistä. Katsotaan ensin ensin, miltä tunnustaajuuden jakauma näyttää. Muista, että (tietojen valmistelublogi) poistimme jo kaikki lopetussanat teksteistä, mukaan lukien 128 mukautettua korkean taajuuden pysäytyssanaa, jotka määritimme tarkastelemalla tunnuksen taajuutta tietojen valmistelussa.

Yllä oleva juoni osoittaa selvästi, että valtava määrä ainutlaatuisia tunnuksia esiintyy harvoin kaikissa arvosteluissa, 75\% esiintyy vain kerran.

Keskity tunnuksiin, joita esiintyy viisi kertaa tai enemmän junakorpusissa

Kuten tunnustaajuuksien määrästä voidaan nähdä, on paljon tunnuksia, joita esiintyy vain kerran tai muutaman kerran: Noin 92\% kaikista yksilöllisistä tunnuksista esiintyy alle 5 kertaa meidän arvostelujoukko. Nämä matalataajuiset tunnukset vaikuttavat aihemallin analyysiin. Jos haluat keskittyä usein käytettyihin rahakkeisiin, valitsemme rahakkeita, joita esiintyy vähintään viisi kertaa valmistelluissa junatiedoissa. Tämä toivottavasti riittää oppimaan aiheita tunnuksista, jotka esiintyvät yhdessä samoissa arvosteluissa. Aihemalliamme optimoinnissa voimme muuttaa vähimmäistiheyttä arvioidaksemme vaikutuksen tuloksiin.

Miksi ei TF-IDF?

Kun olet lukenut joitain tekstianalyysityökaluista, saatat ihmetellä: Miksi emme käytä TF-IDF: ää tärkeimpien tunnusten valitsemiseen? TF-IDF tarkoittaa termitaajuutta – käänteistä asiakirjan taajuutta. Tässä mittarissa yhdistetään termitaajuus – kuinka usein tunnus on asiakirjassa? – käänteisen asiakirjan taajuuden kanssa – kuinka monessa yksilöllisessä asiakirjassa termi esiintyy? Vaikka TF-IDF on usein hyvä valinta valitsemaan tärkeimmät tunnukset, se ei ole asiayhteydessä, jossa asiakirjan koko on rajallinen ja saman tunnuksen toistuminen samassa tekstissä on vähäistä. Ei usein, tunnuksen termitaajuus on yli 1. Tämän seurauksena vain käänteisen asiakirjan taajuusosa on ratkaiseva ja tämä suosii tunnuksia, joita esiintyy vain yhdessä tai kahdessa tarkastelussa. Tästä syystä emme käytä TF-IDF: ää täällä, mutta tarkastelemme yleistä taajuutta valitaksesi asiaankuuluvat tunnukset aiheen mallintamiseen. Myös siksi, että poistimme jo mukautetun lopetussanaluettelon tekstistämme, liian usein tunnukset poistetaan jo.

Suodattamalla harvinaiset tunnukset olemme vähentäneet harkittavien tunnusten määrää. LDA: ssa dramaattisesti keskittymällä 12K (8\%) yleisimpiin rahakkeisiin ja poistamalla 146K (92\%) merkit, jotka ovat liian harvinaisia ​​korpuksessa. Nämä valitut tunnukset edustavat edelleen 73\% kaikista asiakirjoissa olevista tunnuksista:

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

Suodatettuamme merkit, joita haluamme käyttää aihemallimme rakentamiseen, voimme luoda syötteen kohteelle LDA. Tämä vaatii document-term-matrix tai DTM, joten matriisi, jonka riveillä on kaikki dokumenttimme (arvostelut) ja sarakkeissa kaikki ehdot ( asiaankuuluvat rahakkeet). Huomaa, että käytämme parametrin value tunnuksen yleistä taajuutta .Voit odottaa asiakirjakohtaisen termin taajuus täällä, mutta käytämme yleistä tunnustaajuutta korostamaan paljon enemmän aihemallin löytämisessä termeille, jotka ovat yleisempiä; kun otetaan huomioon arvostelujen lyhyt kesto (verrattuna kirjojen tai artikkeleihin, joita usein käytetään aihemallinnuksessa), yksittäisen tunnuksen todennäköisyys esiintyä useammin arvostelussa on rajallinen.

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

Vaihe 3: Kehitä aihemalli

Nyt kun meillä on DTM, olemme valmiita aloittamaan aihemallinnuksen! Toistaiseksi olemme jo tehneet melkoisia valintoja, jotka vaikuttavat analyysitulokseemme: mitä vähäisimpiä tarkastelun pituuksia käytetään, mitkä lopetussanat suljetaan pois, mitä n – sisällytettävät grammat, vähimmäismerkkien taajuus tokenien käyttämiseksi … Ja on tehtävä vielä muutama vaihtoehto.

LDA: lla on useita parametreja, jotka vaikuttavat tulokseen, joista tärkeimmät ovat:

  • k : Aiheiden lukumäärä! Kyllä, tämä on parametri eikä Samanlainen kuin klusterointitekniikat, kuten KMeans, sinun on kerrottava, kuinka monta klusteria / aihetta haluat tunnistaa ify.
  • method : Aihe-mallipaketti mahdollistaa erilaiset optimointimenetelmät, VEM algorithm tai Gibbs sampling, oletus on VEM.
  • control : luettelo kontrollimuuttujista arvioinnin ohjaamiseksi – olennaiset parametrit riippuvat valitusta menetelmästä VEM tai Gibbs, mutta tärkeimmät ovat:
  • nstart : Suoritettavien suoritusten määrä samoilla asetuksilla, mutta eri siemenillä
  • seed : Uusittavuutta varten voidaan asettaa satunnainen siemen. Jos nstart> 1, sinun on annettava useita siemeniä, yksi per nstart (esim. C (123, 234 ”, 345”))
  • best : Jos TOSI (oletus), vain ajo, jolla on paras sovitustulos, pidetään asetettuna, jos EPÄTOSI palautetaan luettelo kaikista ajoista, jotta voit tutkia kaikki niistä.

Täydellisen yleiskatsauksen kaikista käytettävissä olevista parametreista ja asetuksista on topicmodels -paketin vinjetti .

Arvioi LDA-aihemalli

Vaikuttavin parametri on k : numero aiheista tunnistaa. Kuinka valita arvo k: lle? Tämä on osittain seurausta keskustelusta (kuinka monen aiheen odotamme löytävän tässä yhteydessä?) Ja kokeiluversiosta & (kokeile erilaisia ​​arvoja k, arvioi tulokset). Jotkut datatieteilijät eivät ehkä pidä tästä, he haluavat mieluummin tarkastella tilastoja ohjaamaan heitä tässä prosessissa, mutta niille, jotka tuntevat muut valvomattomat tieteelliset tekniikat, kuten KMeans, tämä ei ole niin uutta. Klusterointi ja myös aihemallinnus ovat jossain määrin enemmän taidetta kuin tiedettä. Tilastotekniikoiden ja -mittausten ohjaamana datatieteilijä muotoilee (liiketoiminnan) tarpeisiin sopivan mallinnusratkaisun. Jos tarvitset alkupisteen k: lle, jolla on jonkinlainen tilastollinen tausta, voit kokeilla tätä lähestymistapaa tai tätä -lähestymistapa.

Aloitetaan aihemallilla 3 aiheen tunnistamiseksi ja tutkitaan tulosta. Meillä ei ole mitään syytä muuttaa muita oletusarvoja tässä vaiheessa.

Arvioi aihemalli

Aihemalli on asennettu, joten tutkitaan!

Asennettu lda-objekti sisältää useita matriiseja:

  • phi : matriisi, jossa tunnukset (riveillä) jaetaan aiheisiin (sarakkeisiin)
  • theta : matriisi, jossa asiakirjat (siten: arvostelut, rivit) jaetaan aiheisiin (sarakkeisiin)

Sekä phille että theta, kaikkien sarakkeiden summa on yhtä suuri kuin 1, mikä tarkoittaa:

  • phi: n tapauksessa kaikkien aiheen tunnuspisteiden summa on 1 – korkeammat tulokset merkitsevät kyseisen merkin suurempaa merkitystä aiheessa .
  • Teetan osalta asiakirjan kaikkien aiheiden pisteiden summa on 1 – korkeammat pisteet, mikä tarkoittaa, että aihe on enemmän läsnä kyseisessä asiakirjassa.

Jos haluat tutkia aihemalliamme, tarkastellaan aluksi tärkeimpiä tunnuksia aihekohtaisesti. Tätä varten meidän on määritettävä, milloin tunnus on tärkeä aiheelle. Voisimme väittää, että tunnus on tärkeä aiheelle, kun sen esiintyminen on todennäköistä aiheessa p(token|topic). Katsotaanpa, miten tämä etsii 3-aiheista aihemalliamme. Käytämme tidytext -paketin siistiä toimintoa, joka auttaa valmistelemaan aihemallin tietoja tärkeimpien tunnusten visualisoimiseksi aihetta kohti: tidy().

Tällä juonella saamme ensimmäisen käsityksen siitä, mitä ensimmäisen aihemallimme aiheet edustavat. Kuten juonesta voidaan nähdä, aihekohtaisen todennäköisyyden tarkastelulla on haittapuoli, että suurilla yleisillä taajuuksilla varustetuilla rahakkeilla on suurempi todennäköisyys esiintyä kymmenen parhaan joukossa useissa aiheissa. Esimerkiksi ravintola näkyy useissa top-top 10 -kohteissa. Vain tarkastelemalla yleisiä aihetodennäköisyyksiä saatat piilottaa, että tietyt hieman harvinaisemmat merkit liittyvät hyvin tiettyyn aiheeseen. Tämän analysoimiseksi voimme tehdä aiheen tunnuksen taajuudesta suhteellinen tunnuksen yleiseen taajuuteen: p(token|topic)/p(token). Tämä osoittaa, mitkä tunnukset ovat liittyvät voimakkaasti aiheeseen riippumatta tunnusten taajuudesta.

(Vain) jälkimmäisen lähestymistavan käyttämisellä on omat haittapuolensa ja korostetaan tärkeitä tunnuksia, joita ei ehkä esiinny että monet arvostelut. Paras lähestymistapa saattaa olla jossakin keskellä: Aihemallin arvioimiseksi on arvokkainta, että pystymme tutkimaan aihemallia molemmista näkökulmista – absoluuttisen aikavälin todennäköisyyden ja suhteellisen aikavälin todennäköisyyden – ja ehkä jopa näiden kahden yhdistelmän. Tästä syystä paketti LDAvis on niin arvokas, koska sen avulla voit tehdä juuri sen! LDAvis tarvitsee JSON: n, joka sisältää tietoja aihemallista ja sanastosta:

Lisähuomautus tässä: LDAvis R -pakettia voidaan käyttää R- tai RStudio-ohjelmasta, mutta ei suoraan kannettavan tietokoneen ympäristöstä, kuten Jupyter tai Databricks. Siksi käytimme pyLDAvis-porttia LDAvis-pakettiin, koska tämä helpottaa upean LDAvis-työkalun sisällyttämistä muistikirjaan. Joissakin selaimissa pyLDAvis ei kuitenkaan toimi oikein. Jos näin tapahtuu, katso alla oleva esimerkki. Voit vapaasti ladata tämän muistikirjan ja kokeilla itse LDAvis-ohjelmaa.

Jos haluat suorittaa LDAvisin paikallisesti R- tai RStudio-ohjelmalla, voit suorittaa serVis(json) . Jos haluat tutustua interaktiivisiin LDAvis-tiedostoihin alla olevasta kuvapainatuksesta, katso tämä linkki .

Vasemmanpuoleisessa käyrässä näkyy Aiheet ( Kuinka monta aiheeseen liittyvää dokumenttia?) samoin kuin Aiheiden välinen etäisyys ( Mitkä aiheet liittyvät enemmän tai vähemmän toisiinsa? ). Oikealla puolella näkyvät valitun aiheen tärkeät tunnukset (tai aihemallin tärkeimmät merkit, kun aihetta ei ole valittu). Oikean yläkulman liukusäätimellä voimme vaihtaa lambdaa, jossa lambda päättää, kuinka paljon suosittelemme tarkastelemaan aiheen absoluuttisen tunnuksen todennäköisyyttä (p(token|topic), lambda = 1) tai suosimaan suhteellista tunnusta todennäköisyys aiheen sisällä (p(token|topic)/p(token), lambda = 0). Tällä visualisoinnilla leikkiminen on usein paras tapa tutustua tunnistettuihin aiheisiin. Ja – mikä tärkeintä – keksiä jokaiselle aihealueelle oikea aiheetiketti! Tästä on myös suurta apua päätettäessä, riittääkö nykyinen aihemalli loppupään tehtävään vai haluatko muuttaa joitain asetuksia (k, method, seed, …) tai jopa tietoja (muuttaa valittuja asiakirjoja tai tunnuksia) saadaksesi parempi tulos.

Kertomukset kohti voitettua aihemalliasi

Sanoimme sen aiemmin: topic modeling on – aivan kuten klusterianalyysi ja muut valvomatta koneoppimistekniikat – enemmän taidetta kuin tiedettä! Siksi aiot todennäköisesti viettää melkoisen ajan aihemallisi säätämistä ennen kuin päädyt ”parhaan” aihemallisi kanssa. Laitamme ”paras” lainausmerkkeihin, koska mikä on ”parasta”, riippuu suuresti sekä aihemallisi kannalta mielessä olevista sovelluksista että luovuudestasi! Joten tämä on melko subjektiivista! ”Parhaan” aihemallisi etsimisen aikana sinulla on todennäköisesti hetkiä, joiden uskot epäonnistuneen, keksi mitään käyttämääsi ratkaisua ja muita hetkiä, jotka koet ekstaasin nähdessäsi näiden sisäisten aiheiden tulevan elämään. merkit, jotka hallitsevat sitä.Seuraavassa on tärkeimmät työkalut optimoidessasi aihemallia:

  • muuta k – aiheiden määrä
  • sulje pois ylimääräiset liian hallitsevat (usein) -merkit (nämä saattavat silti olla ole liian hallitseva ja estä mielenkiintoisempien aliverkkotunnusten löytäminen tekstistäsi)
  • lisää vähimmäiskoodin taajuutta keskity hallitsevampiin tunnuksiin
  • esimerkkidokumentit keskittyäksesi osuvimpiin asiakirjoihin tärkeiden aiheiden löytämiseksi , voisimme muuttaa otantastrategiaa

Näiden parametrien lisäksi sinulla on myös joitain LDA-parametreja, joita voit muuttaa, mutta kokemuksemme mukaan yllä olevat parametrit ovat tärkeimmät aluksi. Vaikka k: n suurentaminen tai pienentäminen tarkoittaa vain sitä, että sinun on arvioitava LDA: si uudelleen, arvioiden otosten muuttaminen harkinnan mukaan tarkoittaa, että sinun on myös luotava DTM uudelleen.

Mitä teimme? Paljon hikoilun, kiroamisen ja monien ratkaisujen etsinnän jälkeen teimme seuraavat toimet:

  • vaihda k 7 aiheeseen.
  • Yhdistä joitain tunnuksia ja poista joukko liian usein esiintyviä tunnukset
  • Tutki useita siementuloksia (nstart ja best=FALSE) löytääksesi parhaiten tulkittavan aihemallin **
  • Valitse lopuksi paras siemen ja aseta best=TRUE pitämään vain paras LDA-malli

** LDA -toiminnon avulla voidaan suorittaa useita ajoja määrittelemällä parametri nstart ajoiden määrän asettamiseksi ja asettamalla seed siemenet ohjaamaan näitä ajoa. Kun asetat best=TRUE vain parhaan lokitodennäköisyyden omaava ratkaisu säilytetään, asettamalla sen arvoon best=FALSE voit tutustua kaikkiin aihemalleihin ( palautettu objekti on nyt luettelo kaikista aihemalleista).

Tulosten toistamisen ja vertailun tuloksena saatiin 7 aihetta, jotka voisimme tunnistaa hienosti aiheiden nimillä, joista arvostelijat puhuvat ravintoloita tarkastellessaan. Tässä on ratkaisu aiheisiin, joihin on jo lisätty tunnisteet:

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

Voit tutustua interaktiivisiin LDAvis-sovelluksiin alla olevasta kuvapainosta siirtymällä kohtaan tämä html-tiedosto .

Vaikka jotkin aiheet ovat edelleen sekoitus asioita, käytämme mielellämme tätä ratkaisua ennustettaessa Michelin-tähtiä. Näemme joitain selkeitä eroja tunnistettujen aiheiden välillä ja odotamme, että kunkin arvostelun raakatekstin kääntäminen näiden aiheiden todennäköisyysvektoriksi auttaa ennustamaan Michelin-tähtiä. Tässä on yleiskatsaus aiheista, joihin annamme heille tunnisteet ja heidän yleisimmät tunnuksensa:

Aihemallinnus – sen kääriminen

Tässä artikkeli, jonka näytimme sinulle, kuinka voit rakentaa aihemallin tunnistamaan piilevät rakenteet tai aiheiden arvostelijat, joista puhutaan ravintola-arvosteluissa. Kuten olette nähneet, on tehtävä melko paljon valintoja ennen lopullisen ”parhaan” aihemallin saamista, ja joitain näistä valinnoista ei ole helppo tehdä, koska ohjaavia tilastoja ei ole aina saatavilla. Muista, mitä totesimme aiemmin: Aihemallinnus on valvomatonta tekniikkaa, ja se tekee siitä ”enemmän taidetta kuin tiedettä”. Tärkeää monissa käyttötapauksissa on, että päädyt aiheisiin, joita pystyt tulkitsemaan ja selittämään, koska sinun on pystyttävä tulkitsemaan täällä rakentamasi ominaisuudet samalla, kun käytät niitä loppupään tehtävissä. 7-aiheisen mallimme avulla voimme luottaa siihen, että voimme tehdä sen!

Edut

Hienoa aihemallinnuksessa – ja etenkin LDA: ssa – on se, että kaikki säätäminen ja kamppailu on tehty, päädyt todennäköisesti hallittavaan määrään hienosti tulkittavia aiheita. Tämän avulla voit lisätä jokaiselle asiakirjalle jakauman kyseisiin aiheisiin. Koska aiheen todennäköisyydet ovat 1 ja ne ovat numeerisia arvoja, olet nyt tiivistänyt rakentamattomat, eripituiset tekstit vain muutamaan uuteen, helposti käsiteltävään ominaisuuteen. Ominaisuudet, joista voi olla suurta hyötyä loppupään tehtävissä, kuten ennakoiva mallintaminen tai segmentointitehtävät.

Haitat

Aihemallinnuksen suurin haittapuoli on todennäköisesti subjektiivisuus parhaan mallin löytämisessä . Siksi voi kestää jonkin aikaa ja vaivaa oikean aihemalliratkaisun keksimiseen. Tilastollisesti vastaavia ratkaisuja voi olla useita, jotka voivat poiketa huomattavasti tuloksena olevissa aiheissa.Siksi, kun suoritat analyysin uudelleen hieman erilaisilla tiedoilla tai asetuksilla, on aina mahdollista, että mallin tulkinta muuttuu dramaattisesti. Varsinkin kun tekstitiedoissa ei ole hallitsevaa aiheratkaisua, jokainen ajo voi johtaa erilaisiin tuloksiin. Varmista, että pidät kirjaa aikaisemmista ajoista varmistamalla käytetyt siemenet ja tietojoukot, jotta et kokisi turhautumista löytääksesi kauniin aihemalliratkaisun, jonka voit tulkita kauniisti ja sitten menettää sen, jotta et koskaan palauta sitä uudelleen.

Katse eteenpäin

Aiemmin olemme määrittäneet tavoitteemme: ennustaa, millä ravintoloilla on Michelin-tähti. Yhdessä (seuraavista blogeistamme) käytämme siis katsaustekstien jakautumista aiheiden välillä ennustaaksemme onko arvostelu Michelin-arvostelu vai ei. Yhdistämme myös nämä ennusteet kaikkiin arvosteluihin, joita ravintola on joutunut arvioimaan, missä määrin pystymme ennustamaan Michelin-tähtiä. Tämän lisäksi käytämme (muita tekniikoita) (word2vec, GloVe, BERT) yhteenvetona arvostelutekstit ominaisuuksiksi, joita voimme käyttää ennustamaan Michelin-tähtiä, ja näytämme, mikä lähestymistapa toimii parhaiten. Aloitamme esittelemällä sanojen upottamistekniikat (word2vec, GloVe) seuraavassa blogissamme ja näytämme, miten muokkaamme arvostelutekstimme upotuksiksi ja miten tulkitsemme ja visualisoimme niitä.

Tämä artikkeli on osa meidän NLP ja R -sarja. Yleiskatsaus kaikista sarjan artikkeleista löytyy (täältä).

  • Edellinen tässä sarjassa: (Tietojen valmistelu luonnollisen kielen käsittelyä varten)
  • Seuraavaksi tässä sarjassa : (Harjoitussanan upottamismalli ja visualisoi tulokset)

Haluatko tehdä tämän itse? Lataa Databricks Notebook tai R-komentosarja vapaasti gitlab -sivulta.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *