Hier even een nerderig uitstapje, maar ik moet dit even kwijt. Ik had namelijk weer even een hobbyprojectje hoor. Natural Langruage Processing is de naam, en daar kan een Python-nerd als ik stiekem best heel erg blij van worden…
Natural Language Processing (NLP) is de kunst van het met computers analyseren van de menselijke taal. Op het eerste gezicht klinkt dat misschien wat droog, maar als je er eens goed over nadenkt is dat werkelijk verdomd fascinerend. Die taal van ons is namelijk zo abstract als wat, maar volgt wel allemaal meetbare regeltjes. Met NLP kan je al die regels en patronen zichtbaar maken en daarmee kan je vervolgens de gaafste dingen doen. Wat dan zoal?
Nou, wat dacht je bijvoorbeeld van een sentiment analyse? In woorden en punctuatie kan je een scoresysteem aanbrengen om te oordelen in welke mate een tekst positief of negatief is, en die lessen kan je toepassen op alle teksten die nog niet zijn beoordeeld. Zo kan je bijvoorbeeld cijfermatig onderbouwen of Wateengast.nl inderdaad zo’n blij positieve website is als ik altijd al had gedacht ?
Of wat dacht je van automatische categorisering van je blogposts of artikelen. Met topic modeling volgens bijvoorbeeld Latent Dirichlet Allocation of een Non-Negative Matrix Factorization kan je automatisch een x aantal categoriën laten opzoeken in een bundel teksten door te kijken naar welke woordcombinaties vaker voorkomen. Dit is heel handig als je bijvoorbeeld geen idee hebt waar je moet beginnen als je honderden teksten voor je neus hebt liggen om doorheen te ploeteren.
Nog gaver is misschien nog wel tekstgeneratie met deep learning (een neuraal netwerk). Daarmee kan je bijvoorbeeld een eigen chatbot te ontwikkelen, al moet je dan wel de nodige tijd hebben om je model te trainen. Niet dat het zo resource-intensief is, maar het grote probleem (zoals zo vaak bij machine learning) is dat er eerst gewoon kneiterveel handwerk aan modeltraining aan vooraf gaat voordat je iets zinnigs uit je algoritmes kunt krijgen. Persoonlijk heb daar niet zoveel zin is, maar de inspiratie ligt al op de plank hoor. Veel lolliger is het om gewoon wat komische antwoorden voor te programmeren om zogenaamd een onwijze klootzak van een chatbot na te maken. Daar ga ik binnenkort dus mooi even werk van maken!
Maar al met al is Natural Language Processing een prachtige techniek die je laat zien tot welke prachtige dingen de moderne techniek vandaag de dag wel niet toe in staat is. Als je een beetje bekend bent met Python raad ik je van harte aan om je eens te verdiepen in de libraries Spacy en NLTK. Het is echt wonderbaarlijk wat je hier allemaal mee kunt.
Mocht je zelf ook een keer de eerste stappen willen zetten, volg dan deze cursus van mijn held Jose Portilla eens: NLP – Natural Language Processing with Python
En dan nog even in het kort over NLP:
Pluspunten
+ Spacy is een fantastische Python library, onwijs sterk in het interpreteren van grammatica
+ je gaat van simpele textanalyse tot zwaardere machine learning in de praktijk
+ zeer uiteenlopende (vaak hele concrete) toepassingen
+ waarbij de een nog vetter is dan de ander
+ meestal ook heel toepasselijk op je eigen teksten en/of blogs
Minpunten
– de beste resultaten haal je het makkelijkst op de Engelse taal, Nederlands is wat minder ver
– ik heb dan ook nog geen goede Nederlandse sentiment analyse sets gevonden (liefst voor NLTK Vader). Iemand?