Deze blog gaat over de verschillende mogelijkheden die er zijn om tekst te analyseren. Inhoudelijk en zonder te veel in de techniek te gaan zullen een aantal methoden beschreven worden.

Naast de bekende ‘gestructureerde data’ (zoals tabellen) is er een grote toename in ongestructureerde data, die omgezet kan worden naar waardevolle informatie. Ongestructureerde data is data die niet direct in tabellen te stoppen is, zoals geluidsfragmenten, beeldmateriaal en tekstbestanden. Denk hierbij ook bijvoorbeeld aan toenemende social media context, gebruikers en netwerken. In deze blog wordt verder ingezoomd in het analyseren van tekst, en worden de begrippen Text mining en Natural Language Processing uitgelegd.

De toegevoegde waarde van text mining

Text mining is kort gezegd het onttrekken van waardevolle informatie en patronen uit tekstbestanden.  In de praktijk worden de verschillende technieken op het gebied van text mining zeer gewaardeerd omdat deze snel relevante informatie kunnen onttrekken uit een grote hoeveelheid documenten. Het zorgt er voor dat er veel tijd wordt bespaard voor de ‘lezer’, zodat deze de boodschap uit tekst meekrijgt. Daarnaast kan er een objectief beeld weergeven worden van een document, zonder dat de lezer beïnvloed wordt door mogelijke emoties, stemmingen of afleidingen die op dat moment zijn perceptie van bepaalde documenten kan beïnvloeden.

In deze inleidende blog wordt een aantal methoden beschreven die gebruikt kunnen worden om relevante informatie uit documenten te halen. De volgende toepassingen met de specifieke toegevoegde waarde worden beschreven:

  1. Word Cloud
  2. Bigrams en Trigrams
  3. Sentiment Analyse
  4. Samenvattingen genereren
  5. Taalkundig ontleden
  6. Entiteiten onttrekken
  7. Classificeren van tekst
  8. Topics uit documenten destilleren
  9. Vertalen
  10. Word2Vec

Tekst kan op verschillende manieren worden geanalyseerd, en de bovengenoemde technieken zijn grofweg met twee technieken te doen. Het verschil tussen text mining en Natural Language Processing wordt uitgelegd.

 

Word cloud

Een word cloud kan op verschillende manier gemaakt worden. Een van de opties is om de tekstinhoud te analyseren door de tekst om te zetten naar een ‘bag of words’. Hierin wordt het voorkomen van woorden geteld, zodat veel voorkomende termen uit een tekst kunnen worden gehaald. Voordat de word cloud wordt gemaakt dient de tekst eerst opgeschoond te worden, en ontdaan te zijn van stopwoorden en bijvoorbeeld nummers. De woorden met een hoge frequentie worden vervolgens gevisualiseerd in een word cloud.

Een andere mogelijkheid om een word cloud te maken is door woorden een hoge waarde te geven die veelzeggend zijn voor het betreffende document. De methode die hiervoor gebruikt kan worden heet TF-IDF. TF-IDF staat voor Term Frequency – Inverse Document Frequency.  Doel van deze techniek is om woorden uit een document te filteren die veelzeggend zijn voor het betreffende document omdat dit veel wordt genoemd, gecorrigeerd voor woorden die over alle documenten heen veel voorkomen. Dit zorgt er voor dat veel genoemde stopwoorden niet als belangrijk naar boven komen. Hoe hoger de waarde die hieruit rolt, hoe belangrijker het woord voor een bepaald document is.

Bigrams en Trigrams

Een variatie op de word cloud.  Een word cloud maakt gebruik van zogenoemde unigrams. Dit zijn woorden die vaak voorkomen. Bigrams zijn twee woorden die vaak samen worden genoemd. Trigrams zijn 3 woorden die vaak samen worden genoemd. N-grams (waarbij N staat voor het aantal woorden) zijn zo groot te maken als noodzakelijk, maar zal vaak na 4 woorden niet veel informatie meer toevoegen. De meest gebruikte combinaties zijn uni,- bi,- en trigrams. Door gebruik te maken van n-grams wordt er beter naar relatie tussen woorden gekeken dan bij een ‘bag of words’.

Sentiment Analysis – lexicon

Dezelfde ‘bag of words’ die hierboven beschreven wordt kan gebruikt worden om een sentiment toe te kennen aan een tekst. Er zijn bepaalde lexicons aanwezig, die door middel van ‘crowdsourcing’ een label van een emotie of score op positiviteit of negativiteit hebben gekregen. Door gebruik te maken van deze lexicons is het mogelijk om een waarde te koppelen aan de verschillende woorden in een tekst. Op deze manier kan uiteindelijk de inhoud van een tekst kwantitatief weergeven worden, en kan de lezer snel een indruk krijgen van de emotionele lading van de content, zonder het artikel te hebben gelezen. Met deze informatie als input kan naar wens de informatiebehoefte van de gebruiker worden ingevuld. De NRC lexicon is een veelgebruikte lexicon in text mining, en bevat de volgende sentimenten/emoties:

sentiments:negative, positive

emotions:anger, anticipation, disgust, fear, joy, sadness, surprise, trust

Mohammad & Turney  (2013)

Verder is het mogelijk om naast een vooraf gedefinieerde lijst met woorden en bijbehorende emoties ook een sentiment analyse te maken op basis van machine learning modellen, die zelf op basis van een trainingset met labels regels kunnen maken over het sentiment van verschillende woorden. Hier wordt rekening gehouden met de samenstelling van de zin, grammatica en zinsopbouw. Rekening wordt gehouden worden met ontkenningen zoals bijvoorbeeld;  ‘Dat vind ik niet leuk’. Het is zelfs mogelijk om rekening te houden met ‘spreektaal’ , sarcasme en emoticons.

Samenvattingen

Voor het maken van samenvattingen zijn meerdere methoden mogelijk. Een mogelijkheid is om belangrijke zinnen uit tekst te filteren die veel gelijkenis tonen met andere zinnen, of zinnen die woorden bevatten die aantonen dat deze kenmerkend zijn voor de tekst. Deze techniek wordt ‘Extractive summarization’ genoemd en haalt originele woorden en zinnen uit de documenten.  Een veelgebruikte methode is gebaseerd op de textRank algoritme, vergelijkbaar met Google’s page ranking algoritme, wordt gebruikt toegepast op zinnen. Kort gezegd krijgen zinnen die veel gelijkenis tonen met andere zinnen een hoge score, vervolgens worden per groep de meest significante zinnen eruit gefilterd op basis van volgorde in de tekst.

Samenvattingen maken van tekst kan tegenwoordig ook met hulp van ‘deep learning’, deze methode zal zelf een samenvatting maken, zonder hiervoor (enkel) bestaande zinnen en zelfs woorden te gebruiken. ‘Abstractive summarization’ is gebaseerd op semantische logica.  Deze techniek zorgt voor een samenvatting van een grotere kwaliteit dan de ‘extractive summarization’ doordat de context begrepen wordt en niet afhankelijk is van verschillende vormen van notatie. Het nadeel van deze methode is dat er een grote dataset nodig is om een model op te trainen. Deze dataset moet bestaan uit voorbeeld artikelen waar al een samenvatting van is gemaakt.

Natural Language Processing

Natural Language is een interessante combinatie op het gebied van wiskunde, taalwetenschap, computerwetenschap en psychologie.  Bij Natural Language Processing (NLP) wordt er , in tegenstelling tot text mining, naar de betekenis en verbanden in tekst gekeken.  Hier wordt echt naar de grammatica en samenhang van de zin gekeken. Er wordt veel meer naar de betekenis van de woorden gekeken dan naar het voorkomen hiervan. Verschillende basis oplossingen worden hieronder toegelicht.

Taalkundig ontleden

Het taalkundig ontleden van een zin kan handig zijn om tekst inhoudelijk beter te kunnen analyseren, en verbanden juist te onttrekken. Vaak is de betekening van een woord afhankelijk van de positie in de zin, en kan een woord verschillende betekenissen hebben. Het ontleden van een zin is vaak ter preparatie voor het beter begrijpen van de tekst. Het is mogelijk om bepaalde relaties uit teksten te halen, door grammaticale structuren te specificeren.

Entiteiten onttrekken

Het is mogelijk om uit teksten entiteiten te onttrekken, zoals organisaties, personen, landen etc. Dit kan handig zijn wanneer de behoefte bestaat om alleen personen uit tekst te onttrekken, of wanneer snel inzichtelijk gemaakt dient te worden welke landen in verschillende documenten genoemd worden. Als input is de grammaticale structuur van de zin nodig zodat een goed onderscheid kan worden gemaakt en op basis van eigenschappen entiteiten te onttrekken

Classificeren van tekst (supervised)

Door gebruik te maken van ‘Supervised’ classificatie is het mogelijk om tekst in te delen in vooraf ingestelde categorieën. Een voorbeeld hiervan is het indelen van nieuwsartikelen op bijvoorbeeld sport of politiek. Een ander voorbeeld is het detecteren van spam e-mails aan de hand van de context.  Voor een supervised classificatie is altijd een trainingsset

 nodig waar de waarden al een label hebben gekregen. Op basis van de trainingsset wordt een model gemaakt, die vervolgens op een nieuwe dataset de labels kan voorspellen, met de logica van het model. Vaak zijn er al corpora  (gestructureerde set van teksten) beschikbaar met voorgetrainde datasets.

Classificeren van tekst (unsupervised)

‘Unsupervised classification’  is een manier voor het bepalen van de verschillende topics binnen documenten zonder deze van te voren te specificeren is.Hier worden de topics niet vooraf ingesteld, maar worden ‘topics’ gemaakt die te destilleren zijn uit de veel voorkomende woorden (bag of words) over de verschillende documenten. Het doel van deze methode is om een aantal topics vast te stellen en te omschrijven met een aantal sleutelwoorden, die de inhoud van het topic weergeven. Uitgangspunt hierbij is dat een document uit meerdere topics bestaat, en een topic bestaat uit een combinatie van woorden. Het is belangrijk om de tekst eerst op te schonen, waarbij o.a. nummers en stopwoorden verwijderd zijn uit de test. Voor het verbeteren van deze methode kan het handig zijn om de tekst eerst te ontleden en bijvoorbeeld bijvoeglijke naamwoorden uit de teksten te verwijderen. Op deze manier zullen deze woorden geen prominent onderdeel van de verschillende topics zijn.

Het resultaat is een indeling van documenten op verschillende topics, opgesteld door de inhoud van de documenten zelf.

Vertalen

Voor het vertalen van tekst is het belangrijk om de grammaticale structuur van de tekst goed te begrijpen. Hoewel de kwaliteit van de vertalingen de laatste jaren sterk toeneemt, is het tot de dag van vandaag nog niet mogelijk om foutloos teksten te vertalen. Een reden hiervan is dat taal zijn eigen regels heeft, die niet altijd logisch zijn. Taal is imperfect, en net als mensen niet volledig opgebouwd uit logische patronen. Echter zal het in de toekomst waarschijnlijk mogelijk worden om bijna-perfecte vertalingen aan te bieden. Grote techs die flink investeren in dit onderwerp zijn Microsoft, Google en Facebook. Microsoft heeft bijvoorbeeld met verschillende deep learning modellen ervoor gezorgd dat real-time skype gesprekken te vertalen zijn tussen verschillende talen. [1]

Word2Vec

Het idee achter Word2Vec is dat de betekenis van een woord te herleiden is naar de context van de zin, en verband met andere woorden. Word2vec is een algoritme dat gelijkenis tussen woorden berekend gebaseerd op de context. Het kan verschillende contexten begrijpen en semantische relaties herkennen. Doordat word2vec de gelijkheid in woorden kan herkennen, ook als deze anders zijn geschreven, zijn die erg bruikbaar voor bijvoorbeeld de gelijkenis in twee teksten te herkennen, zonder dat deze precies dezelfde woorden bevatten. Ook het clusteren van de tekst op basis van word2vec kan een goede vervanging zijn van het clusteren op basis van bag-of-words. Een variant hierop is doc2vec en lda2vec, waarbij laatstgenoemde een combinatie is van word2vec en topic modelling algoritme LDA. [2]

Voorwaarden voor text mining

Een voorwaarde voor het verkrijgen van een goede analyse is dat de input tekst vrij moet zijn van vervuiling. Voor het opschonen van de tekst zijn verschillende technieken beschikbaar in Python en R.  Tekstbestanden zijn beter te analyseren dan PDF bestanden. PDF bestanden zijn niet gemaakt om op een gestructureerde manier data op te slaan. Helaas zijn veel documenten in organisaties toch PDF bestanden. Verschillende technieken bestaan er om PDF bestanden om te zetten in tekst formaat, maar de kwaliteit is afhankelijk van de complexiteit en uniformiteit van de bestanden. Bij het ophalen van tekst uit ongestructureerde PDF bestanden kan het lastig zijn om tabellen van tekst te onderscheiden, waardoor de kwaliteit niet altijd kan worden gegarandeerd.

Eigen documenten analyseren

Een module van de cursus  Certified Data Science Cursus (CDSP) van DIKW is volledig gericht op text mining. Tijdens deze module leer je de basistechnieken in text mining programmeren in R of Python.  Na het volgen van deze cursus kan je zelf programmeren in R en/of Python en naast teksten analyseren, beheers je ook de meest fundamentele concepten in Data Science.[2][BB3]

Voor meer geavanceerde tekstanalyses door middel van bovenstaande methoden, streaming data, big data of kennis graven, kan met DIKW contact worden opgenomen. Voor begeleiding of uitbesteding maar ook bijvoorbeeld het opstarten van een analyse omgeving, dataopslag etc.

Een boek dat ik kan aanraden met meer informatie over Natural Language Processing: Bird, Steven, Edward Loper and Ewan Klein (2009), Natural Language Processing with Python. O’Reilly Media Inc. Veel van bovenstaande methodes zijn ook oorspronkelijk uit dit boek.

Bronnen:

Mohammad, S. M., & Turney, P. D. (2013). Crowdsourcing a word–emotion association lexicon. Computational Intelligence, 29(3), 436-465.

[1] https://www.csmonitor.com/Technology/2016/1212/Skype-s-real-time-language-translator-Can-it-really-connect-the-world

[2] https://medium.freecodecamp.org/how-to-get-started-with-word2vec-and-then-how-to-make-it-work-d0a2fca9dad3