Natural Language Processing gebruiken bij het bouwen van voorspelmodellen met R

26 november 2020

Artikel geschreven door Jurriaan Nagelkerke en Wouter van Gils

Het ontdekken van het voorspellende potentieel van tekst met behulp van topic modeling, word embedding, transfer learning en transformers in R

Tekst is overal: recensies, klantvragen, logfiles, boeken, transcripties, nieuwsartikelen, dossiers, interview verslagen… Toch worden dit soort teksten, naast beschikbare gestructureerde data, nog weinig betrokken bij het beantwoorden van analysevragen. Dit betekent naar onze mening dat een deel van de mogelijke voorspellende kracht niet wordt benut en een belangrijk deel van een verklaring wordt gemist. Waarom is dat zo? Tekst is in tegenstelling tot gestructureerde data uit databases en tabellen niet meteen gereed voor gebruik in analyses, datavisualisaties en AI-modellen. Het gebruiken van tekst kost moeite, teksten moeten immers worden omgezet in numerieke representaties zodat de tools en technieken, die analisten en data scientists gebruiken om de businessvragen te beantwoorden, ermee kunnen werken.

 

Corine Meinema, Achmea“Een interactieve en leerzame middag rondom Textmining met mooie voorbeelden en de gelegenheid om zelf aan de knoppen te draaien.”

Corine Meinema
Data Scientist at Achmea

 

Zelf aan de slag met textmining?

Vraag onze inspiratiesessie “next level textmining” aan bij jou op kantoor (of online zolang de lockdown geldt). Neem vrijblijvend contact op met Ewout Mantel via ons contactformulier.

 

Werken met R

Ondanks de toenemende populariteit van Python, wordt R nog steeds door veel analisten en data scientists gebruikt om te analyseren, visualiseren en bij het bouwen van voorspellende modellen. Er zijn relatief veel blogs, boeken en voorbeelden beschikbaar over het gebruik van NLP-technieken met Python terwijl het aanbod voor gebruikers in R beperkt is. Ook zijn er weinig blogs te vinden die gebruik maken van dezelfde dataset voor data preparatie, modellering en visualisatie. Dit terwijl de keuzes die je in het hele proces maakt bepalend zijn voor het resultaat. In onze reeks artikelen, 6 in totaal, vullen we enkele van deze hiaten en laten we stapsgewijs zien hoe je waarde uit tekstuele gegevens kunt halen met R. We gebruiken steeds dezelfde dataset en we passen verschillende technieken toe zoals topic modeling, word embedding, transfer learning en transformers zoals BERT.  We laten zien hoe je tekst kunt vertalen naar bruikbare input voor een voorspelmodel en combineren deze gegevens met andere (numerieke) kenmerken om zo het resultaat te optimaliseren.

 

Onze context: restaurantrecensies

Onze artikelen gaan over restaurantrecensies die we hebben verzameld in onze poging nieuwe Michelin-sterren te voorspellen. Eind 2019 hebben we geprobeerd de volgende Nederlandse Michelin-sterrenrestaurants te voorspellen. Geen gemakkelijke taak, maar door naar restaurantrecensies en vooral de recensieteksten te kijken, kregen we hele mooie resultaten. Voor deze voorspelling hebben we topic modeling en sentimentanalyse gebruikt om tot de best mogelijke voorspelling van Michelin-restaurants te komen. In deze serie laten we onze initiële aanpak zien en breiden we onze analyse uit naar andere nieuwere NLP-technieken. Links naar alle artikelen zijn hieronder te vinden, alle notebooks (oorspronkelijk geschreven in Azure Databricks) kunnen gedownload worden van onze gitlab pagina, links naar de beschikbare databronnen zijn te vinden binnen de notebook code.

 

Data preparatie

Iedereen die met tekstuele gegevens heeft gewerkt, zal bevestigen dat het prepareren van tekst voorafgaand aan de analyse heel anders is dan het voorbereiden van numerieke, gestructureerde gegevens. Daarom hebben we een aparte blog geschreven om te laten zien hoe we onze tekst prepareren voordat we deze gebruiken voor onze NLP-taken. De kern is dat de keuzes die je maakt – zoals welke woorden je uitsluit, wat je doet met aanhalingstekens, interpuncties, meervoudsvormen, hoofdletters – een grote impact hebben op je analyseresultaten. Bij het prepareren van tekst zijn er veel keuzes te maken. Het is een hele uitdaging om de juiste balans te vinden tussen enerzijds alle keuzes weloverwogen te maken en anderzijds met voldoende vaart door deze voorbereidingsstappen te gaan.

Het beste advies dat we je kunnen geven, is om in ieder geval een moment te nemen – een paar seconden, een minuut of twee, een uur indien nodig – en een bewuste en geïnformeerde beslissing te nemen. Annoteer je keuzes en argumenten in je code als referentie. Heb je te veel twijfel of is er onvoldoende informatie beschikbaar voor een geïnformeerde beslissing overweeg dan de aanmaak van een parameter zodat je verschillende opties kunt evalueren. Pas echter op dat je niet te veel parameters maakt! Bij te veel parameters ben je onevenredig veel tijd kwijt met iteraties die alle mogelijke opties uit rekenen, alleen omdat je eerder geen beslissing hebt durven nemen. Wat we in ieder geval afraden is om gebruik te maken van kant-en-klare tekstpreparatie functies zonder zelf belangrijke keuzes te maken. Dit resulteert in opgeschoonde tekst waarbij het onbekend is welke delen zijn verwijderd en welke niet. Het is verstandig om als analist zelf kennis en vertrouwdheid met de teksten op te bouwen zodat je geïnformeerde beslissingen neemt met het business vraagstuk in je achterhoofd.

 

Topic modeling

Het bouwen van een goed topic model vereist een mix van expertise, creativiteit en doorzettingsvermogen. Toch is het een geweldig hulpmiddel om tot je beschikking te hebben, als data scientist ben je bepalend in het extraheren van onderwerpen uit tekst. Topic modeling is de verzamelnaam voor technieken die helpen om teksten in onderwerpen op te delen, waarbij het bepalen van de relevante onderwerpen onderdeel is van de analyse. Omdat dit een unsupervised techniek is, vereist het veel iteraties, creativiteit en oog voor interpreteerbaarheid van het eindresultaat. Een goede werkrelatie met de (interne) klant is hierom van groot belang, het bespreken van conceptresultaten en het krijgen van feedback op de geëxtraheerde onderwerpen is de sleutel tot succes. Iedereen kan onderwerpen extraheren, maar het doel is om onderwerpen te extraheren die onderscheidend zijn, aantrekkelijk zijn en van waarde in de downstream task. Het is zeker niet zo dat een voorspelmodel de beste performance laat zien bij gebruik van topics in de predictie; andere meer geavanceerde NLP-technieken zijn hier sterker in. Een groot voordeel echter van het gebruik van de topic modeling is dat de bijdrage van elk onderwerp (en andere beschikbare functies) in het voorspelmodel gemakkelijk kan worden geïnterpreteerd, geanalyseerd en gevisualiseerd. Dit zorgt ervoor dat het resultaat geen black box is en dat het gemakkelijk uit te leggen is aan opdrachtgevers.

 

Word embedding

Hoewel de resultaten van onze eerste topic-model geweldig waren, verloren we relatief veel informatie. De volledige reviews werden vertaald in minder dan 10 features: de topic-waarschijnlijkheden in elke tekst. Om veel meer subtiliteiten te onthullen die verborgen zijn in de recensieteksten, gebruiken we word embedding om onze voorspellingen te verbeteren. Word embeddings zijn een weergave van tekst waarbij woorden met dezelfde betekenis een vergelijkbare numerieke weergave hebben. Wellicht heb je van een beroemd voorbeeld gehoord: “Koning – Man + Vrouw = Koningin”? Deze techniek legt de semantische overeenkomsten tussen woorden vast (in de afstanden tot elkaar) en deze worden gebruikt in de voorspelling. Het trainen van word embeddings op basis van je eigen tekst betekent dat de input voor een voorspelmodel maatwerk is. Bijkomend voordeel van het gebruik van word embeddings is dat je ze vrij gemakkelijk kunt visualiseren. Een visuele weergave is voor mensen immers veel beter te bevatten dan een matrix met getallen. Voor het toepassen van de woord overeenkomsten in een voorspelmodel is wel een neuraal netwerk nodig. Ja, het kost even wat moeite om de juiste configuratie voor zo’n model op te zetten zoals we laten zien in ons blog. Terugkijkend was die investering het zeker waard, de prestaties van het model zijn overweldigend goed.

 

Transformer modellen en BERT

Hoe kunnen we het verkrijgen van waarde uit tekst bespreken zonder te praten over transformers en BERT? Juist, dat kunnen we niet! In onze laatste blog laten we je zien hoe je op de schouders van reuzen kunt staan ​​door gebruik te maken van vooraf getrainde NLP-modellen die je kunt gebruiken voor je downstream task in R. We laten zien hoe je dat doet met en zonder fine-tuning van het model en laten je het verschil in prestatie zien. Het gebruik van transformer modellen en in het bijzonder de modellen die zijn getraind voor de Nederlandse taal (BERTje en RobBERT) zorgde voor een aanzienlijke verbetering van onze modelprestaties. Deze betere prestaties komen echter wel met een prijs. Ten eerste vereist het gebruik van deze modellen cloud computing-mogelijkheden of in ieder geval voldoende GPU-bronnen. Het is dus goed om jezelf van tevoren af ​​te vragen: hoe nauwkeurig moeten mijn voorspellingen zijn? Over het algemeen zijn de kant-en-klare BERT-modellen getraind op grote hoeveelheden algemene tekst (Wikipedia, Google-boeken en webcrawl), dus het is misschien niet altijd de beste keuze als jouw beschikbare tekst afwijkt van deze algemene teksten (zoals in ons geval: restaurantrecensies). Ten tweede is de interpretatie van deze neurale netwerkmodellen lastig en is het moeilijk om te doorgronden hoe de tekstuele data helpt in de predictie. Als interpreteerbaarheid belangrijk is voor jouw vraagstuk dan weegt de verbeterde nauwkeurigheid mogelijk niet op tegen de afname in interpreteerbaarheid in vergelijking met andere technieken.

 

Tot slot

Mocht je een vraagstuk hebben waarbij je denkt dat beschikbare tekstuele data je kan helpen om een voorspelmodel te optimaliseren, dan hopen we dat deze reeks van artikelen je helpt en inspireert om met NLP te starten. Welke techniek voor jou het meest geschikt is, moet je zelf ontdekken. Enkele algemene adviezen van onze kant: als interpreteerbaarheid van het voorspellende model belangrijk is, is topic modeling waarschijnlijk de beste keuze. Als voorspellingen zeer nauwkeurig moeten zijn en je niet veel false positives kunt veroorloven, dan is een transformer-model zoals BERT een beter idee. Deze modellen bieden de beste nauwkeurigheid en precisie, maar vereisen ook veel rekenkracht en middelen. Als je op zoek bent naar fatsoenlijke modelprestaties en bereid bent om de interpreteerbaarheid wat te verkleinen, dan zijn word embeddings een elegante optie. Het trainen van de embedding op eigen tekst is vrij eenvoudig en het visualiseren van woordverschillen stimuleert de verbeelding. Alle blogs zijn geschreven voor een breed publiek en dus beschikbaar in het Engels:

 

NLP met R:  Bouwen van voorspelmodellen
De belofte van NLP technieken, sterktes en zwaktes vergeleken

NLP with R part 0: Data preparation for NLP: the right recipe for success
NLP with R part 1: Identifying topics in restaurant reviews with topic modeling
NLP with R part 2: Training word embedding models and visualizing the result
NLP with R part 3: Predicting the next Michelin stars with topic modeling
NLP with R part 4: Use of word embedding and transfer learning in prediction models
NLP with R part 5: Using state-of-the-art NLP technology with Transformers & BERT

 

We hopen je met deze artikelen te inspireren en je op weg te helpen met het halen van waarde uit tekst in R. Wij vinden het belangrijk dat iedereen deze artikelen als startpunt kan gebruiken, daarom zijn de notebooks en gegevens die we gebruiken vrij toegankelijk via onze gitlab-pagina. We horen graag jouw feedback en ervaring!

 

The Analytics Lab logo wit grijs

Dit is artikel is gemaakt vanuit de initiatieven in The Analytics Lab. We zijn altijd bezig met ontwikkelingen op het gebied van data science. Daarom hebben we in 2016 The Analytics Lab opgericht. Daar zoeken we de grenzen op van de mogelijkheden van data science & AI. We delen graag onze ervaringen en kennis met jullie.

Contact

Wil je meer weten over dit onderwerp? Neem dan contact op met Jurriaan Nagelkerke of Wouter van Gils via onderstaande contactgegevens.

Jurriaan Nagelkerke, Principal Consultant

+31 6 29 62 00 11

j.nagelkerke@cmotions.nl

Wouter van Gils, Senior Consultant

+31 6 15 46 99 17

w.v.gils@cmotions.nl

Laatste nieuws

Amref versterkt met Power BI: het benutten van datapotentieel

18 juli 2023

Om blijvende veranderingen in de gezondheidszorg in heel Afrika te stimuleren heeft Amref Health Africa, de... lees meer

De leukste kennismaking met data

5 juli 2023

Wil jij jouw collega’s op ludieke wijze laten kennismaken met datagedreven werken? Geef ze op voor... lees meer

Vind jouw risicovolle bestanden volgens AVG met onze DriveScanner

17 april 2023

In elk bedrijf is het een uitdaging om ervoor te zorgen dat we alleen de documenten... lees meer

Schrijf je in voor onze nieuwsbrief

Mis nooit meer iets op het gebied van advanced analytics, data science en de toepassing daarvan binnen organisaties!