AI 101

Hoe Werkt Tekstclassificatie?

mm

Tekstclassificatie is het proces van het analyseren van tekstsequenties en het toewijzen van een label, waarbij ze in een groep worden geplaatst op basis van hun inhoud. Tekstclassificatie vormt de basis van bijna elke AI- of machine learningtaak met betrekking tot Natural Language Processing (NLP). Met tekstclassificatie kan een computerprogramma een breed scala aan verschillende taken uitvoeren, zoals het herkennen van spam, sentimentanalyse en chatbotfuncties. Hoe werkt tekstclassificatie precies? Wat zijn de verschillende methoden om tekstclassificatie uit te voeren? We zullen de antwoorden op deze vragen hieronder onderzoeken.

Definitie van Tekstclassificatie

Het is belangrijk om even de tijd te nemen en ervoor te zorgen dat we begrijpen wat tekstclassificatie is, in het algemeen, voordat we de verschillende methoden van tekstclassificatie onderzoeken. Tekstclassificatie is een van die termen die wordt toegepast op veel verschillende taken en algoritmen, dus het is handig om ervoor te zorgen dat we het basisbegrip van tekstclassificatie begrijpen voordat we verdergaan met het onderzoeken van de verschillende manieren waarop het kan worden uitgevoerd.

Alles wat betrekking heeft op het creëren van verschillende categorieën voor tekst en vervolgens het labelen van verschillende tekstvoorbeelden als deze categorieën, kan worden beschouwd als tekstclassificatie. Zolang een systeem deze basisstappen uitvoert, kan het worden beschouwd als een tekstclassifier, ongeacht de exacte methode die wordt gebruikt om de tekst te classificeren en ongeacht hoe de tekstclassifier uiteindelijk wordt toegepast. Het detecteren van e-mailspam, het organiseren van documenten op onderwerp of titel en het herkennen van de sentiment van een review voor een product zijn allemaal voorbeelden van tekstclassificatie, omdat ze worden bereikt door tekst als invoer te nemen en een classificatielabel voor die tekst uit te voeren.

Hoe Werkt Tekstclassificatie?

Foto: Quinn Dombrowski via Flickr, CC BY SA 2.0 , (https://www.flickr.com/photos/quinnanya/4714794045)

De meeste tekstclassificatiemethoden kunnen worden onderverdeeld in een van drie verschillende categorieën: regelgebaseerde methoden of machine learningmethoden.

Regelgebaseerde Classificatiemethoden

Regelgebaseerde tekstclassificatiemethoden werken via het gebruik van expliciet geëngineerde linguïstische regels. Het systeem gebruikt de regels die door de ingenieur zijn gemaakt om te bepalen welke klasse een bepaalde tekst moet behoren, waarbij het zoekt naar aanwijzingen in de vorm van semantisch relevante tekstelementen. Elke regel heeft een patroon dat de tekst moet matchen om in de overeenkomstige categorie te worden geplaatst.

Om concreter te zijn, laten we zeggen dat je een tekstclassifier wilt ontwerpen die in staat is om algemene onderwerpen van conversatie te onderscheiden, zoals het weer, films of eten. Om je tekstclassifier in staat te stellen om discussies over het weer te herkennen, zou je het kunnen instrueren om naar weergerelateerde woorden in de body van de tekstvoorbeelden te zoeken die het wordt gevoed. Je zou een lijst met trefwoorden, zinnen en andere relevante patronen kunnen hebben die kunnen worden gebruikt om het onderwerp te onderscheiden. Bijvoorbeeld, je zou de classifier kunnen instrueren om naar woorden te zoeken zoals “wind”, “regen”, “zon”, “sneeuw” of “wolk”. Je zou de classifier dan kunnen laten zoeken naar invoertekst en tellen hoe vaak deze woorden in de body van de tekst voorkomen en als ze vaker voorkomen dan woorden die verband houden met films, zou je de tekst classificeren als behorend tot de weercategorie.

Het voordeel van regelgebaseerde systemen is dat hun invoer en uitvoer voorspelbaar en interpreteerbaar zijn voor mensen, en ze kunnen worden verbeterd door handmatige interventie van de ingenieur. Regelgebaseerde classificatiemethoden zijn echter ook enigszins broos, en ze hebben vaak moeite om te generaliseren, omdat ze alleen kunnen voldoen aan de vooraf gedefinieerde patronen die zijn geprogrammeerd. Als voorbeeld kan het woord “wolk” verwijzen naar vocht in de lucht, of het kan verwijzen naar een digitale wolk waarin gegevens worden opgeslagen. Het is moeilijk voor regelgebaseerde systemen om deze nuances te hanteren zonder dat de ingenieurs veel tijd besteden aan het handmatig anticiperen en aanpassen van deze subtiele verschillen.

Machine Learning Systemen

Zoals hierboven vermeld, hebben regelgebaseerde systemen beperkingen, omdat hun functies en regels moeten worden vooraf geprogrammeerd. In tegenstelling tot regelgebaseerde systemen werken machine learning-gebaseerde classificatiesystemen door algoritmen toe te passen die datasets analyseren op patronen die zijn geassocieerd met een bepaalde klasse.

Machine learning-algoritmen worden gevoed met vooraf gelabelde/vooraf geclassificeerde instanties die worden geanalyseerd op relevante kenmerken. Deze vooraf gelabelde instanties zijn de trainingsgegevens.

De machine learning-classifier analyseert de trainingsgegevens en leert patronen die zijn geassocieerd met de verschillende klassen. Vervolgens worden ongezien instanties gestript van hun labels en aan de classificatie-algoritme gevoed, die de instanties een label toewijst. De toegewezen labels worden vervolgens vergeleken met de oorspronkelijke labels om te zien hoe nauwkeurig de machine learning-classifier was, om te bepalen hoe goed het model de patronen heeft geleerd die de klassen voorspellen.

Machine learning-algoritmen werken door numerieke gegevens te analyseren. Dit betekent dat om een machine learning-algoritme op tekstgegevens te gebruiken, de tekst moet worden omgezet in een numerieke indeling. Er zijn verschillende methoden om tekstgegevens om te zetten in numerieke gegevens en om machine learning-methoden rond deze gegevens te creëren. We zullen enkele van de verschillende manieren behandelen om tekstgegevens weer te geven.

Bag-of-Words

Bag-of-words is een van de meest gebruikte benaderingen voor het coderen en weergeven van tekstgegevens. De term “bag-of-words” komt voort uit het feit dat je alle woorden in de documenten neemt en ze allemaal in een “zak” zonder aandacht te besteden aan woordvolgorde of grammatica, alleen letten op de frequentie van woorden in de zak. Dit resulteert in een lange array, of vector, die een enkele weergave bevat van alle woorden in de invoerdocumenten. Dus als er 10000 unieke woorden zijn in de invoerdocumenten, zullen de kenmerkvector 10000 woorden lang zijn. Dit is hoe de grootte van de woorden zak/kenmerkvector wordt berekend.

Foto: gk_ via Machinelearning.co, (https://machinelearnings.co/text-classification-using-neural-networks-f5cd7b8765c6)

Nadat de grootte van de kenmerkvector is bepaald, wordt elke document in de lijst van totale documenten zijn eigen vector toegewezen, die wordt gevuld met nummers die aangeven hoe vaak het woord in kwestie voorkomt in het huidige document. Dit betekent dat als het woord “eten” acht keer voorkomt in een tekstdocument, de overeenkomstige kenmerkvector/kenmerkarray acht zal hebben in de overeenkomstige positie.

Anders gezegd, alle unieke woorden die voorkomen in de invoerdocumenten worden allemaal in een zak gegooid en vervolgens krijgt elk document zijn eigen woordvector van dezelfde grootte, die vervolgens wordt gevuld met het aantal keren dat de verschillende woorden voorkomen in het document.

Tekstdatasets bevatten vaak een groot aantal unieke woorden, maar de meeste daarvan worden niet vaak gebruikt. Daarom wordt het aantal woorden dat wordt gebruikt om de woordvector te maken, meestal gelimiteerd tot een bepaalde waarde (N) en vervolgens zal de kenmerkvectorafmeting Nx1 zijn.

Term Frequency-Inverse Document Frequency (TF-IDF)

Een andere manier om een document weer te geven op basis van de woorden erin is Term Frequency-Inverse Document Frequency (TF-IDF). Een TF-IDF-benadering creëert ook een vector die het document weergeeft op basis van de woorden erin, maar in tegenstelling tot Bag-of-words worden deze woorden gewogen door meer dan alleen hun frequentie. TF-IDF houdt rekening met de belangrijkheid van de woorden in de documenten, waarbij het probeert te kwantificeren hoe relevant dat woord is voor het onderwerp van het document. Met andere woorden, TF-IDF analyseert relevantie in plaats van frequentie en de woordtellingen in een kenmerkvector worden vervangen door een TF-IDF-score die wordt berekend met betrekking tot de gehele dataset.

Een TF-IDF-benadering werkt door eerst de termfrequentie te berekenen, het aantal keren dat de unieke termen voorkomen in een specifiek document. TF-IDF let echter ook op het beperken van de invloed die zeer algemene woorden zoals “de”, “of” en “en” hebben, omdat deze “stopwords” zeer algemeen zijn, maar weinig informatie geven over de inhoud van het document. Deze woorden moeten worden gediskonteerd, en dat is wat het “inverse-documentfrequentie”-deel van TF-IDF doet. Dit gebeurt omdat de meer documenten waarin een bepaald woord voorkomt, hoe minder nuttig dat woord is om het te onderscheiden van de andere documenten in de lijst van alle documenten. De formule die TF-IDF gebruikt om de belangrijkheid van een woord te berekenen, is ontworpen om de woorden te behouden die het meest frequent en semantisch rijk zijn.

De kenmerkvector die wordt gecreëerd door de TF-IDF-benadering, bevat genormaliseerde waarden die samen optellen tot één, waarbij elke woord een gewogen waarde wordt toegewezen, zoals berekend door de TF-IDF-formule.

Woordembeddings

Woordembeddings zijn methoden voor het weergeven van tekst, waarbij woorden met vergelijkbare betekenissen vergelijkbare numerieke weergaven hebben.

Woordembeddings werken door “vectoriseren” van woorden, wat betekent dat ze woorden weergeven als reële waarden vectoren in een vectorruimte. De vectoren bestaan in een grid of matrix en hebben een richting en lengte (of magnitude). Wanneer woorden als vectoren worden weergegeven, worden de woorden omgezet in vectoren bestaande uit reële waarden. Elk woord wordt toegewezen aan één vector en woorden die vergelijkbaar zijn in betekenis, hebben een vergelijkbare richting en magnitude. Deze vorm van codering maakt het mogelijk voor een machine learning-algoritme om complexe relaties tussen woorden te leren.

De embeddings die de verschillende woorden vertegenwoordigen, worden gemaakt met betrekking tot hoe de woorden in kwestie worden gebruikt. Omdat woorden die op vergelijkbare manieren worden gebruikt, vergelijkbare vectoren zullen hebben, vertaalt het proces van het maken van woordembeddings automatisch enkele van de betekenis die de woorden hebben. Een bag-of-words-benadering creëert in tegenstelling broze weergaven, waarbij verschillende woorden ongelijksoortige weergaven zullen hebben, zelfs als ze in zeer vergelijkbare contexten worden gebruikt.

Als gevolg hiervan zijn woordembeddings beter in het vastleggen van de context van woorden binnen een zin.

Er zijn verschillende algoritmen en benaderingen die worden gebruikt om woordembeddings te maken. Enkele van de meest voorkomende en betrouwbare woordembeddingsmethoden zijn: embeddinglagen, word2vec en GloVe.

Embeddinglagen

Een mogelijke manier om woordembeddings te gebruiken in combinatie met een machine learning/deep learning-systeem is om een embeddinglaag te gebruiken. Embeddinglagen zijn deep learning-lagen die woorden omzetten in embeddings die vervolgens worden gevoed in de rest van het deep learning-systeem. De woordembeddings worden geleerd terwijl het netwerk traint voor een specifieke tekstgebaseerde taak.

In een woordembeddingsbenadering zullen vergelijkbare woorden vergelijkbare weergaven hebben en dichter bij elkaar liggen dan bij ongelijksoortige woorden.

Om embeddinglagen te gebruiken, moet de tekst eerst worden voorbewerkt. De tekst in het document moet worden one-hot gecodeerd en de vectorgrootte moet van tevoren worden gespecificeerd. De one-hot-tekst wordt vervolgens omgezet in woordvectoren en de vectoren worden doorgegeven aan het machine learning-model.

Word2Vec

Word2Vec is een andere veelvoorkomende methode voor het embedden van woorden. Word2Vec gebruikt statistische methoden om woorden om te zetten in embeddings en het is geoptimaliseerd voor gebruik met neurale netwerkmodellen. Word2Vec is ontwikkeld door Google-onderzoekers en het is een van de meest veelvoorkomende embeddingsmethoden, omdat het betrouwbare, nuttige embeddings oplevert. Word2Vec-weergaven zijn nuttig voor het identificeren van semantische en syntactische overeenkomsten in taal. Dit betekent dat Word2Vec-weergaven relaties tussen vergelijkbare concepten vastleggen, waarbij ze kunnen onderscheiden dat de overeenkomst tussen “Koning” en “Koningin” koningschap is en dat “Koning” mannelijkheid impliceert, terwijl Koningin vrouwelijkheid impliceert.

GloVe

GloVe, of Global Vector voor Woordrepresentatie, bouwt voort op de embeddingsalgoritmen die worden gebruikt door Word2Vec. GloVe-embeddingsmethoden combineren aspecten van zowel Word2Vec als matrixfactorisatietechnieken zoals Latent Semantische Analyse. Het voordeel van Word2Vec is dat het context kan vastleggen, maar als compromis heeft het moeite om globale tekststatistieken vast te leggen. Traditionele vectorweergaven zijn daarentegen goed in het bepalen van globale tekststatistieken, maar ze zijn niet nuttig voor het bepalen van de context van woorden en zinnen. GloVe haalt het beste uit beide benaderingen, waarbij het woord-context creëert op basis van globale tekststatistieken.

Blogger en programmeur met specialisaties in Machine Learning en Deep Learning onderwerpen. Daniel hoopt anderen te helpen de kracht van AI te gebruiken voor het sociale goede.