AI FÖR NATURLIGT SPRÅK

Kursinfo

Kursmaterial

FAQ

Kursmaterial

/

Kapitel

Slutuppgift: Analogier

Slutför analogin

Följande filer används i uppgiften:

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

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.


Innan vi påbörjar uppgiften så läser vi in den svenska word2vec-modellen, på samma sätt som vi gjort i tidigare deluppgifter.

I en ordanalogi-uppgift får vi två par av ord som har en gemensam semantisk relation. Ett välkänt exempel är man/kvinna och kung/drottning. Uppgiften är att förutsäga ett av orden, till exempel drottning, givet de andra tre. Med det så svarar vi på frågan: ‘man är till kvinna som kung är till —?’.

Mikolov et al. (2013) har visat att en ordanalogi-uppgift kan kan lösas genom att addera och subtrahera ordvektorer från en word2vec-modell: vektorn för drottning är nära (i termer av cosinusavstånd) till den resulterande vektorn efter operationerna kung $-$ man $+$ kvinna.

För att lösa uppgiften kan vi använda oss av följande funktion som kommer med gensim-modellen: w2v_model.most_similar(pos, neg, n)

Funktionen tar in tre parametrar:

• Två listor, posoch neg, som innehåller ord (strängar). För exemplet kung $-$ man $+$ kvinna är kvinna och kung strängar i listan posoch man en sträng i listan neg.
• Ett heltal n som avgör hur många av de närmaste vektorerna som ska returneras.

I nästa kodcell ska du lägga till kod så att funktionen complete() returnerar en sträng med det ord som avslutar analogin.

Ordvektorer beräknas baserat på hur ofta ord förekommer tillsammans med andra ord: ord som ofta förekommer tillsammans kommer ha liknande vektorer. För att få en förståelse för modellens möjligheter och begränsningar så läser vi i nästa kodcell in en lista av tio analogipar och skriver ut dessa.

Som vi kan se ovan så inneåller varje analogi fyra ord som är separerade med mellanslag.

I nästa kodcell ska vi utvärdera hur bra vår ordvektor-modell kan identifiera det avslutande ordet i en analogi. Du ska iterera över listan med analogier, låta modellen slutföra analogierna och ta fram hur träffsäker modellen är, sett till samtliga analogier.

Vilka begränsningar ser du i modellen?

Även om modellen ger ett ganska bra resultat så är det tydligt att modellen har begänsningar. Eftersom modellen baserar sin uppfattning av likhet efter hur ofta ord förekommer tillsammans så har den inte någon egentlig förståelse för sambandet mellan analogiparen, utan den reflekterar det samband som finns i de texter den sett under träning. Det leder också till att modellen reflekterar mänskliga fördomar som finns i text den tränar på.

I nästa kodcell ska du använda funktionen complete()som du har skrivit tidigare för att slutföra analogin läkare $-$ man $+$ kvinna:

Vad säger detta resultat om modellens begränsningar och vad kan det ha för konsekvenser?

Det är viktigt att vi är medvetna om dessa begränsningar när modeller av denna typ används, då det kan ha allvarliga följder i de system modellen används.

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