AI FÖR NATURLIGT SPRÅK

Kursinfo

Kursmaterial

FAQ

Kursmaterial

/

Kapitel

Deluppgift 1: Analysera ordinbäddningar

Ordinbäddningar

Följande filer används i uppgiften:

wikipedia-sv.bin - word2vec tränad på svenska Wikipedia (OBS, filstorlek 240MB).

För att spara filerna, högerklicka på länken och välj att spara filen. Du behöver inte ladda ned några filer för att genomföra uppgiften, utan de är per automatik tillgängliga för användning i kodcellerna nedan.


I denna och de kommande uppgifterna ska vi arbeta med ordinbäddningar. En ordinbäddning är en representation av ett ord i en hög-dimensionell vektorrymd. Vad det innebär i praktiken är att vi för varje dimension representerar ordet med ett värde. Tillsammans utgör värdena i de olika dimensionerna en vektor; en position i den rymd som dimensionerna skapar. Du har garanterat arbetat med en rymd bestående av två dimensioner, då brukar vi kalla dimensionerna för x och y.

En modell för att skapa ordinbäddningar är word2vec. Vi ska använda oss av en word2vec-modell som tränats på svenska Wikipedia. För att ladda in och använda modellen använder vi biblioteket gensim.

I nästa kodcell laddar vi in den tränade modellen från en binär representation (wikipedia-sv.bin).

Modellen består av ordvektorer. I Python är en ordvektor representerad som en array. I denna uppgift kan du behandla arrays som en Python-lista, vilket vi har arbetat med förut. I nästa kodcell skriver vi ut ordvektorn för ordet elev.

Du kan även köra koden ovan med andra ord för att se att värdena i vektorn är olika. Alla vektorer i modellen är däremot av samma dimensionalitet $n$; detta värde är en parameter som bestäms när modellen tränas.

I nästa kodcell ska du ta fram antalet dimensioner som representerar ordet elev.

Likheter

Vi kan beräkna likhet mellan ordvektorer på olika sätt. Ett vanligt mått är cosinuslikhet. Vår word2vec-modell har en funktion similarity() (en funktion från gensim-biblioteket) som beräknar cosinuslikheten mellan två ordvektorer.

I nästa kodcell kan vi se hur funktionen används. I exemplet används den för att beräkna likheten mellan identiska ordvektorer, för orden elev och elev. Vad kan vi förvänta oss att funktionen returnerar för värde?

Likheten mellan ordvektorerna är rimligtvis 1.0 eftersom de har samma representation.

I nästa kodcell ska du hitta ett ord som du förväntar dig är likt ($sim2 > 0.5$) ordet elev och ett ord som inte är likt ($sim3 < 0.3).

Verkar modellens representationer överenstämma med dina förväntningar av likhet?

En till användbar funktion är att vi för ett specifikt ord kan välja att få ut de $n$ mest lika orden.

I föregående kodcell använde vi funktionen för att ta ut de tio mest lika orden för glad. Utifrån utskriften, vad anser du att likhet betyder här och stämmer det överens med din bild av likhet? (I utskriften kan vi exempelvis se synonymer och motsatser.)

Denna webbsajt innehåller kursmaterialet för kursen ETE335 AI för naturligt språk.
Materialet är licenserat under en Creative Commons Erkännande 4.0 Internationell licens.
Copyright © 2022, Marco Kuhlmann & Oskar Holmström