Een introductie tot machine learning III: natural language processing
In een serie artikelen voor Emerce brengen we je graag de beginselen van machine learning bij. In het vorige artikel is besproken wat lineaire regressie is. Middels lineaire regressie is het mogelijk om voorspellingen te doen op basis van data die een correlatie heeft. Nu gaan we een stap verder, we gaan NLP (Natural Language Processing) behandelen. Dit algoritme wordt onder andere gebruikt door Google voor de Google Assistant en Google Translate. Maar je kunt NLP ook gebruiken om data te classificeren. In dit artikel behandelen we NLP en in welke situaties je het kunt gebruiken.
Wat is NLP
NLP is simpel gezegd de reden dat een computer de menselijke taal verstaat. Het beste is dit te illustreren middels een praktijkvoorbeeld. Voor een travel website kregen wij de vraag om een vakantiebestemmingen vergelijker te ontwikkelen. Dagelijks werden er via verschillende aanbieders feeds aangeleverd om bestemmingen te vergelijken. Uiteindelijk hadden we een systeem gebouwd waarmee items gemapped konden worden aan een land of stad. De bestemmingen konden op deze manier vergeleken worden. So far so good toch?
Op een gegeven moment waren er aanbieders met zeer slechte feeds, deze hadden alleen een omschrijving en een titel waar je niet kon opmaken bij welke bestemming ze hoorden. De huidige situatie kon alleen maar landen en steden uitlezen, maar geen omschrijvingen. Het idee was om via de omschrijving te classificeren welke land of stad het is.
Uiteraard zal er in de omschrijving wel vaak een land of stad voorkomen, maar je kunt niet aannemen dat dit bij de betreffende categorie hoort, dit is behoorlijk foutgevoelig. Via NLP kun je de computer leren – net zoals een mens om door middel van een omschrijving te herkennen bij welke land een bestemming hoort. Een mens kan bijvoorbeeld uit een omschrijving opmaken bij welk land dit hoort, voor een computer is dat wat lastiger. Met NLP is dit wel mogelijk, je moet het algoritme dan wel goed trainen. Hiervoor zijn een aantal stappen nodig.
Tel het aantal woorden (BoW Model)
Om de data te classificeren moet eerst het aantal woorden geteld worden in het hele document. Met een document wordt dus alle tekst bedoeld in een bepaalde context. Dit artikel wat je nu leest is bijvoorbeeld een document.
Om het makkelijk te maken gaan we er vanuit dat er in ons document twee zinnen zitten.
- Zwarte hond
- Bruine hond
Er wordt per zin een teller toegevoegd hoe vaak het woord voorkomt in een document. In vakjargon wordt dit ook wel het Bag Of Words Model genoemd.
Het algoritme plakt de unieke woorden achter elkaar, vervolgens geven de getallen achter de zin aan hoe vaak het woord voorkomt in het hele document
- Zwarte, Bruine, Hond (0,0,1)
- Bruine, Zwarte, Hond (0,0,1)
Een computer maakt van de zinnen vectoren. We gaan vectoren niet uitgebreid behandelen, mocht je toch willen weten wat vectoren zijn, dan kun je op de link klikken. Voor nu is het belangrijk dat je weet dat de zinnen worden omgezet naar numerieke waardes zodat de computer wiskundig berekeningen kan maken om te controleren hoe goed bepaalde woorden matchen.
Term Frequency-Inverse Document Frequency
Als het BoW model is toegepast, wordt de Term Frequency-Inverse Document Frequency methode toegepast, dit wordt ook wel TF-IDF genoemd. TF-IDF zorgt ervoor dat de relevantie tussen de woorden wordt gemeten middels TF-IDF scores.
- Term Frequency
- Telt hoe vaak een woord voorkomt in het hele document.
- TF/IDF
- Dit is een manier om te bepalen hoe belangrijk een woord is in een document. De bag words kan dit niet, omdat dit niet de juiste relevantie geeft.
Achter TF-IDF schuilt een zeer complexe wiskundige formule. Voor nu is het belangrijk om te weten dat middels TF/IDF een algoritme zijn werk kan doen door wiskundige berekeningen uit te voeren. Zo kan het algoritme de data classificeren.
Hoe meer data, hoe beter het algoritme
Nu we het BoW model en TF/IDF hebben toegepast kunnen we de data trainen en zijn werk laten doen. Omdat de travel website best veel data had kon het algoritme gelijk gebruikt worden. Binnen machine learning is het belangrijk dat er veel data is om voorspellingen te doen. Als je een algoritme hebt met weinig data, dan krijg je geen correcte voorspellingen.
Ook moet je controleren hoe accuraat de voorspellingen zijn als je algoritme getraind is. Je kunt dit middels Python evalueren. Bepaalde misvoorspellingen kun je dan achterwege laten. Als je meer data krijgt, dan kun je het algoritme opnieuw trainen om de slecht presterende voorspellingen te corrigeren.
Computer-les
Met NLP is het mogelijk om een computer te leren om bijvoorbeeld omschrijvingen te classificeren aan een categorie. Als een mens bijvoorbeeld een brochure krijgt van een reisbureau met alleen een omschrijving, dan kan hij of zij redelijk eenvoudig classificeren bij welk land dit zou horen. Middels NLP kan een computer dit ook leren. Op deze manier kan je classificatie problemen oplossen en bepaalde werkzaamheden automatiseren. Wellicht als je veel data hebt, kan je de overweging nemen om NLP te gebruiken om bedrijfsprocessen te automatiseren. Het is wel belangrijk om gedurende het hele proces eventuele misvoorspellingen in de gaten te houden. Blijf bij de computer-les, dus.
Over de auteur: Erwin Nandpersad is CEO bij Ermmedia.nl.
Plaats een reactie
Uw e-mailadres wordt niet op de site getoond