stomp Hoe werkt tekstclassificatie? - Verenig AI
Verbind je met ons

AI 101

Hoe werkt tekstclassificatie?

mm
Bijgewerkt on

Tekstclassificatie is het proces waarbij tekstreeksen worden geanalyseerd en van een label worden voorzien, waardoor ze in een groep worden geplaatst op basis van hun inhoud. Tekstclassificatie ligt ten grondslag aan vrijwel elke AI- of machine learning-taak waarbij natuurlijke taalverwerking (NLP) betrokken is. Met tekstclassificatie kan een computerprogramma een breed scala aan verschillende taken uitvoeren, zoals spamherkenning, sentimentanalyse en chatbotfuncties. Hoe werkt tekstclassificatie precies? Wat zijn de verschillende methoden voor het uitvoeren van tekstclassificatie? We zullen de antwoorden op deze vragen hieronder onderzoeken.

Tekstclassificatie definiëren

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

Alles waarbij verschillende categorieën voor tekst worden gemaakt en vervolgens verschillende tekstvoorbeelden worden gelabeld als deze categorieën, kan worden beschouwd als tekstclassificatie. Zolang een systeem deze basisstappen uitvoert, kan het worden beschouwd als een tekstclassificatie, ongeacht de exacte methode die is gebruikt om de tekst te classificeren en ongeacht hoe de tekstclassificatie uiteindelijk wordt toegepast. Het detecteren van e-mailspam, het ordenen van documenten op onderwerp of titel en het herkennen van het sentiment van een recensie voor een product zijn allemaal voorbeelden van tekstclassificatie, omdat ze worden bereikt door tekst als invoer te nemen en een klasselabel voor dat stuk 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 methoden voor tekstclassificatie kunnen in drie verschillende categorieën worden ingedeeld: op regels gebaseerde methoden of methoden voor machinaal leren.

Op regels gebaseerde classificatiemethoden

Op regels gebaseerde tekstclassificatiemethoden werken door het gebruik van expliciet ontworpen taalkundige regels. Het systeem gebruikt de regels die door de ingenieur zijn gemaakt om te bepalen tot welke klasse een bepaald stuk tekst behoort, op zoek naar aanwijzingen in de vorm van semantisch relevante tekstelementen. Elke regel heeft een patroon waarmee de tekst moet overeenkomen om in de overeenkomstige categorie te worden geplaatst.

Om concreter te zijn: stel dat u een tekstclassificatie wilt ontwerpen die veelvoorkomende gespreksonderwerpen kan onderscheiden, zoals het weer, films of eten. Om uw tekstclassificator in staat te stellen discussies over het weer te herkennen, kunt u hem vertellen om naar weergerelateerde woorden te zoeken in de hoofdtekst van de tekstvoorbeelden die worden ingevoerd. U zou een lijst met trefwoorden, zinsdelen en andere relevante patronen hebben die kunnen worden gebruikt om het onderwerp te onderscheiden. U kunt de classificator bijvoorbeeld opdracht geven om te zoeken naar woorden als 'wind', 'regen', 'zon', 'sneeuw' of 'wolk'. U kunt de classificator dan door de ingevoerde tekst laten kijken en het aantal keren tellen dat deze woorden in de hoofdtekst van de tekst voorkomen en als ze vaker voorkomen dan woorden die verband houden met films, zou u de tekst classificeren als behorend tot de weerklasse.

Het voordeel van op regels gebaseerde systemen is dat hun invoer en uitvoer voorspelbaar en interpreteerbaar zijn door mensen, en dat ze kunnen worden verbeterd door handmatige tussenkomst van de ingenieur. Op regels gebaseerde classificatiemethoden zijn echter ook enigszins broos en hebben vaak moeite met generaliseren, omdat ze zich alleen kunnen houden aan de vooraf gedefinieerde patronen die zijn geprogrammeerd. Het woord 'wolk' kan bijvoorbeeld verwijzen naar vocht in de lucht. hemel, of het kan verwijzen naar een digitale cloud waar gegevens worden opgeslagen. Het is moeilijk voor op regels gebaseerde systemen om met deze nuances om te gaan zonder dat de ingenieurs behoorlijk wat tijd besteden aan het handmatig anticiperen op en aanpassen aan deze subtiliteiten.

Machine Learning-systemen

Zoals hierboven vermeld, hebben op regels gebaseerde systemen beperkingen, aangezien hun functies en regels voorgeprogrammeerd moeten zijn. Op machine learning gebaseerde classificatiesystemen daarentegen werken door algoritmen toe te passen die datasets analyseren op patronen die aan een bepaalde klasse zijn gekoppeld.

Machine learning-algoritmen krijgen vooraf gelabelde/vooraf geclassificeerde instanties die worden geanalyseerd op relevante functies. Deze vooraf gelabelde exemplaren zijn de trainingsgegevens.

De machine learning classifier analyseert de trainingsgegevens en leert patronen die aan de verschillende klassen zijn gekoppeld. Hierna worden ongeziene instanties ontdaan van hun labels en ingevoerd in het classificatie-algoritme dat de instanties een label toekent. De toegewezen labels worden vervolgens vergeleken met de originele labels om te zien hoe nauwkeurig de machine learning-classificatie was, om te meten hoe goed het model leerde welke patronen welke 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 numeriek formaat. Er zijn verschillende methoden om tekstgegevens te coderen als numerieke gegevens en om methoden voor machinaal leren rond deze gegevens te creëren. Hieronder bespreken we enkele van de verschillende manieren om tekstgegevens weer te geven.

Zak-van-woorden

Zak met woorden is een van de meest gebruikte benaderingen voor het coderen en representeren van tekstgegevens. De term "zak-van-woorden" komt voort uit het feit dat je in wezen alle woorden in de documenten neemt en ze allemaal in één "zak" stopt zonder aandacht te schenken aan de woordvolgorde of grammatica, alleen aandacht schenkt aan de frequentie van woorden in de zak. Dit resulteert in een lange array, of vector, die een enkele representatie bevat van alle woorden in de invoerdocumenten. Dus als er in totaal 10000 unieke woorden in de invoerdocumenten staan, zullen de kenmerkvectoren 10000 woorden lang zijn. Dit is hoe de grootte van de woordzak/kenmerkvector wordt berekend.

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

Nadat de vectorgrootte van het kenmerk is bepaald, krijgt elk document in de lijst met totale documenten zijn eigen vector toegewezen, gevuld met getallen die aangeven hoe vaak het betreffende woord in het huidige document voorkomt. Dit betekent dat als het woord 'eten' acht keer voorkomt in één tekstdocument, die corresponderende feature vector/feature array een acht zal hebben op de corresponderende positie.

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

Tekstdatasets bevatten vaak een groot aantal unieke woorden, maar de meeste worden niet vaak gebruikt. Om deze reden wordt het aantal woorden dat wordt gebruikt om de woordvector te maken, doorgaans afgetopt op een gekozen waarde (N) en dan is de kenmerkvectordimensie Nx1.

Term Frequentie-inverse documentfrequentie (TF-IDF)

Een andere manier om een ​​document weer te geven op basis van de woorden erin, is nasynchronisatie Term Frequentie-inverse documentfrequentie (TF-IDF). Een TF-IDF-benadering creëert ook een vector die het document vertegenwoordigt op basis van de woorden erin, maar in tegenstelling tot Bag-of-words zijn deze woorden gewogen door meer dan alleen hun frequentie. TF-IDF houdt rekening met het belang van de woorden in de documenten en 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 het aantal woorden in een kenmerkvector wordt vervangen door een TF-IDF-score die wordt berekend met betrekking tot de hele dataset.

Een TF-IDF-benadering werkt door eerst de termfrequentie te berekenen, het aantal keren dat de unieke termen in een specifiek document voorkomen. TF-IDF zorgt er echter ook voor dat de invloed wordt beperkt dat extreem veelvoorkomende woorden zoals "de", "of" en "en", aangezien deze "stopwoorden" heel gewoon zijn, maar zeer weinig informatie over de inhoud van het document overbrengen. Deze woorden moeten buiten beschouwing worden gelaten, en dat is waar het gedeelte "inverse-document frequency" van TF-IDF naar verwijst. Dit wordt gedaan omdat hoe meer documenten een specifiek woord voorkomt, hoe minder nuttig dat woord is om het te onderscheiden van de andere documenten in de lijst met alle documenten. De formule die TF-IDF gebruikt om het belang van een woord te berekenen, is ontworpen om de woorden te behouden die het meest voorkomen en het meest semantisch rijk zijn.

De kenmerkvectoren die door de TF-IDF-benadering zijn gemaakt, bevatten genormaliseerde waarden die optellen tot één, waarbij aan elk woord een gewogen waarde wordt toegewezen zoals berekend door de TF-IDF-formule.

Woord insluitingen

Inbedding van woorden zijn methoden om tekst weer te geven die ervoor zorgen dat woorden met vergelijkbare betekenissen vergelijkbare numerieke representaties hebben.

Inbedding van woorden werken door woorden te 'vectoriseren', wat betekent dat ze woorden vertegenwoordigen als vectoren met reële waarde in een vectorruimte. De vectoren bestaan ​​in een raster of matrix en ze hebben een richting en lengte (of grootte). Wanneer woorden worden weergegeven als vectoren, worden de woorden omgezet in vectoren die bestaan ​​uit reële waarden. Elk woord is toegewezen aan één vector, en woorden met een vergelijkbare betekenis hebben een vergelijkbare richting en grootte. Dit type codering maakt het voor een machine learning-algoritme mogelijk om gecompliceerde relaties tussen woorden te leren.

De inbeddingen die verschillende woorden vertegenwoordigen, zijn gemaakt met betrekking tot hoe de betreffende woorden worden gebruikt. Omdat woorden die op vergelijkbare manieren worden gebruikt, vergelijkbare vectoren hebben, vertaalt het proces van het maken van woordinbeddingen automatisch een deel van de betekenis die de woorden hebben. Een 'zak met woorden'-benadering creëert daarentegen broze representaties waarbij verschillende woorden ongelijke representaties hebben, zelfs als ze in zeer vergelijkbare contexten worden gebruikt.

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

Er zijn verschillende algoritmen en benaderingen die worden gebruikt om woordinbeddingen te maken. Enkele van de meest gebruikelijke en betrouwbare methoden voor het insluiten van woorden zijn: lagen insluiten, word2vec en GloVe.

Lagen insluiten

Een mogelijke manier om woordinbeddingen te gebruiken naast een machine learning/deep learning-systeem is om gebruik een inbeddingslaag. Inbeddingslagen zijn deep learning-lagen die woorden omzetten in inbeddingen die vervolgens worden ingevoerd in de rest van het deep learning-systeem. De woordinbeddingen worden geleerd terwijl het netwerk traint voor een specifieke op tekst gebaseerde taak.

Bij een woordinbeddingsbenadering zullen vergelijkbare woorden vergelijkbare representaties hebben en dichter bij elkaar staan ​​dan bij ongelijksoortige woorden.

Om insluitlagen te gebruiken, moet de tekst eerst worden voorbewerkt. De tekst in het document moet one-hot gecodeerd zijn en de vectorgrootte moet vooraf worden opgegeven. De one-hot tekst wordt vervolgens geconverteerd naar woordvectoren en de vectoren worden doorgegeven aan het machine learning-model.

Woord2Vec

Woord2Vec is een andere veelgebruikte methode om woorden in te bedden. Word2Vec gebruikt statistische methoden om woorden om te zetten in inbeddingen en is geoptimaliseerd voor gebruik met op neurale netwerken gebaseerde modellen. Word2Vec is ontwikkeld door Google-onderzoekers en het is een van de meest gebruikte inbeddingsmethoden, omdat het op betrouwbare wijze nuttige, rijke inbeddingen oplevert. Word2Vec-representaties zijn nuttig voor het identificeren van semantische en syntactische overeenkomsten in taal. Dit betekent dat Word2Vec-representaties relaties tussen vergelijkbare concepten vastleggen, in staat zijn om te onderscheiden dat de gemeenschappelijkheid tussen "Koning" en "Koningin" royalty is en dat "King" "man-heid" impliceert, terwijl Koningin "Vrouw-heid" impliceert.

Handschoen

GloVE, of globale vector voor woordweergave, bouwt voort op de inbeddingsalgoritmen die worden gebruikt door Word2Vec. GloVe-inbeddingsmethoden combineren aspecten van zowel Word2Vec als matrixfactorisatietechnieken zoals latente semantische analyse. Het voordeel van Word2Vec is dat het de context kan vastleggen, maar dat het slechte globale tekststatistieken weergeeft. Omgekeerd zijn traditionele vectorrepresentaties goed voor het bepalen van globale tekststatistieken, maar ze zijn niet nuttig voor het bepalen van de context van woorden en woordgroepen. GloVE put uit het beste van beide benaderingen en creëert woordcontext op basis van globale tekststatistieken.

Blogger en programmeur met specialiteiten in Machine leren en Diepe leren onderwerpen. Daniel hoopt anderen te helpen de kracht van AI te gebruiken voor maatschappelijk welzijn.