Een inleiding tot Tekstvectorisatie

Door Lukas Bogacz op Mar 22, 2023 11:15:00 AM

<span id="hs_cos_wrapper_name" class="hs_cos_wrapper hs_cos_wrapper_meta_field hs_cos_wrapper_type_text" style="" data-hs-cos-general-type="meta_field" data-hs-cos-type="text" >Een inleiding tot Tekstvectorisatie</span>

Inleiding tot inbeddingen

Inbeddingen spelen een cruciale rol in natuurlijke taalverwerking (NLP) en tekstanalyse. Eenvoudig gezegd stellen woordinbeddingen woorden of zinnen voor als vectoren, lijsten van getallen. Deze vectoren helpen bij het coderen van de betekenis van woorden, zodat soortgelijke woorden of zinnen nauwere vectorrepresentaties hebben. Bijvoorbeeld, de zinnen "De kat klom snel in de boom" en "De katachtige klom snel in de boom" hebben verschillende woorden maar vergelijkbare betekenissen. Met embeddings kunnen we deze overeenkomst in betekenis vastleggen door deze zinnen dicht bij elkaar te plaatsen in de embeddingsruimte. Embeddings maken het efficiënter om machinaal leren uit te voeren op grote hoeveelheden tekst. Door hoogdimensionale gegevens (tekst) te vertalen naar een lager-dimensionale ruimte (vectoren), leggen embeddings op efficiënte wijze de semantiek/betekenis van invoer vast, wat nuttig kan zijn voor taken zoals tekst zoeken.

Een voorbeeld

Laten we een eenvoudig voorbeeld bekijken van het gebruik van vectoren om films te clusteren op basis van hun kenmerken. Stel je voor dat je een reeks films rangschikt op een eendimensionale getallenlijn, waarbij films die nauwer verwant zijn dichter bij elkaar worden geplaatst. Deze rangschikking zou films kunnen weergeven op basis van hun aantrekkingskracht op verschillende leeftijdsgroepen, zoals kinderen versus volwassenen. -1 staat voor een kinderfilm en 1 voor een film voor volwassenen. Elke film zou een score kunnen krijgen op basis van de leeftijdsgroep van het publiek.

Er zijn echter andere aspecten, zoals genre, die ook kunnen bijdragen aan de gelijkenis tussen films. Om dit vast te leggen, kunnen we de indeling uitbreiden naar een tweedimensionale ruimte, waarbij de ene dimensie de leeftijdsgroep voorstelt en de andere het genre. Een film kan bijvoorbeeld worden weergegeven als een vector (0,3, 0,2), waarbij 0,3 overeenkomt met de leeftijdsgroep en 0,2 met het genre. Deze inbedding helpt ons om films te identificeren en te groeperen op basis van hun aantrekkingskracht op verschillende leeftijdsgroepen en genres.

h
ttps://
developers.google.com/machine-learning/crash-course/embeddings/motivation-from-collaborative-filtering

Generaliseren naar hogere dimensies

Zoals we hebben gezien in het eenvoudige filmclustervoorbeeld, kunnen we gegevenspunten weergeven in multidimensionale ruimten om verschillende kenmerken vast te leggen. Hetzelfde concept kan worden toegepast op complexere gegevens, zoals geografische locaties of zelfs natuurlijke taaltekst.

linear relationships h
ttps://
developers.google.com/machine-learning/crash-course/embeddings/translating-to-a-lower-dimensional-space

In de afbeelding hierboven zijn hoofdsteden dicht bij hun respectievelijke landen geplaatst. In deze ruimte liggen niet alleen de hoofdsteden dicht bij hun land, maar liggen soortgelijke landen ook dicht bij elkaar, maar langs een andere dimensie. Deze opstelling geeft de relaties tussen landen en hun hoofdsteden goed weer.

Als we dit concept veralgemenen naar nog hogere dimensies, kunnen we complexere informatie weergeven, zoals tekst. In dit geval vertegenwoordigt elke dimensie een ander concept of aspect van de tekst, waardoor we een hele paragraaf of een blok tekst kunnen coderen als een enkele vector. Door tekst op deze manier weer te geven, kunnen we de onderliggende semantische betekenis en relaties tussen woorden, zinnen of zelfs hele alinea's vastleggen.

Vectoren gebruiken

Om te bepalen of twee vectoren dicht bij elkaar liggen, kunnen we de cosinusovereenkomst gebruiken. De cosinus gelijkenis meet de cosinus van de hoek tussen de twee vectoren, wat resulteert in een waarde tussen -1 en 1. Een waarde dichter bij 1 duidt op een hogere gelijkenis, terwijl een waarde dichter bij -1 duidt op een lagere gelijkenis.

Een voorbeeld van het gebruik van vectoren in tekstanalyse is het classificeren van beoordelingen als positief of negatief. In dit geval kunnen we elke recensie voorstellen als een vector en een machine-learning model trainen om ze te classificeren op basis van hun vectorrepresentaties. Het model kan leren om recensies als positief of negatief te classificeren op basis van de gelijkenis tussen de recensievectoren en vectoren die positief of negatief sentiment vertegenwoordigen.

Een ander voorbeeld is zoeken in een grote hoeveelheid tekst. In dit scenario kunnen we de tekst opdelen in kleinere stukken of segmenten, die elk worden weergegeven als een vector. Wanneer een gebruiker een zoekopdracht geeft, zetten we de zoekopdracht om in een vector in dezelfde inbeddingsruimte. Om de meest relevante overeenkomst te vinden, meten we de overeenkomst tussen de vector van de zoekopdracht en de vectoren die de stukken tekst vertegenwoordigen met behulp van cosinusovereenkomst. De chunk met de grootste overeenkomst met de vector van de zoekopdracht wordt beschouwd als de beste overeenkomst met de zoekopdracht van de gebruiker.

Uitproberen

Voor het genereren of berekenen van woordvectoren moet een machine-learningmodel worden getraind op een groot corpus tekst. Het model leert om woorden of zinnen als vectoren weer te geven op basis van de context waarin ze voorkomen, waarbij semantische betekenis en relaties tussen woorden worden vastgelegd. Kijk eens naar dit voorbeeld van 3 vectoren die zijn geconstrueerd met het OpenAI Ada-2 model (input 2 zegt "Ik hou echt van hardlopen" in het Nederlands).

Als we de cosinusovereenkomst tussen de vectoren berekenen, krijgen we dit;

De twee zinnen over hardlopen liggen erg dicht bij elkaar, ook al zijn de talen verschillend. De kattenzin ligt verder uit elkaar. Kijk nu wat er gebeurt als we de zin "Ik vind joggen leuk" vergelijken met "Ik vind joggen niet leuk".

Ze staan echt heel dicht bij elkaar! Dichter dan het Engels-Nederlandse paar. Kun je erachter komen waarom?



Conclusie

In dit artikel hebben we geleerd wat embeddings zijn en gezien hoe ze kunnen worden gebruikt voor verschillende taken op het gebied van natuurlijke taalverwerking. Als je dit interessant vond, kijk dan ook eens naar dit artikel over predictive analytics.

Ik hoop dat je het leuk vond!