Problem C
Harald Krukmakare och den Fördömda LLM:en
Languages
en
sv
Kalle älskar Harald Krukmakare. En dag, när han var borta och besökte sin morfar, smög hans lillasyster in i hans rum och började klottra i hans Harald Krukmakare-samling. Varför gjorde hon detta? Ingen vet. Det vi vet är att när Kalle kom hem blev han förkrossad. Många ord var inte längre läsbara och han kunde inte längre läsa sina favoritböcker.
Då fick Kalle en briljant idé! Han kunde låta en LLM fylla i orden åt honom, eftersom det är precis vad de är bra på: att förutsäga nästa ord i en sekvens. Men Kalles ekonomi är inte den bästa just nu och därför vill han inte slösa pengar på LLM-token, och att köpa en dator för att köra den lokalt är helt uteslutet.
Som tur är har Kalles familj ett enormt bibliotek av gamla fantasyböcker hemma. Berättelserna är fulla av trollkarlar, drakar och magi, och deras språk är tillräckligt likt Harald Krukmakare. Kalle låter dig studera detta bibliotek först, så att du kan lära dig hur sådana historier brukar skrivas innan du försöker reparera hans älskade böcker. Kan du hjälpa Kalle att hitta ett kostnadseffektivt sätt att fylla i de ofullständiga meningarna?
Det finns dock en hake. Kalle var för lat för att skriva ner hela boken med alla saknade ord för att skicka till dig. I stället har han skrivit ner de fem orden före varje saknat ord. Han tänkte att detta skulle vara tillräckligt för att du skulle kunna ge ett tillräckligt bra resultat för att han ska kunna läsa böckerna igen.
Eftersom Kalle är lite otålig kommer han bara att fråga din LLM efter ord som inte är alltför ”enkla” (till exempel ”the”), eftersom sådana kan han fylla i själv.
För denna uppgift har vi gett dig träningsdata och det är inte tillåtet att hitta egen träningsdata på internet.
Indata
Ladda ner filen med tränings- och testdata. Detta kan hittas längst ner under “attachments”. Du kommer att få en zip-fil som innehåller:
-
train.txt – Fantasybokssamlingen som Kalle har hemma, i text på en rad.
-
test.txt – De ofullständiga meningarna med fem ord före det saknade ordet.
-
baseline.py – En baslinjelösning till problemet.
Filen train.txt innehåller en rad med hela texten från fantasybokssamlingen.
Filen test.txt innehåller flera rader, var och en med fem ord före ett saknat ord.
Utdata
För varje rad i test.txt ska du skriva ut 6 rader som vardera innehåller ett ord: dina förslag på vad det saknade ordet kan vara, följt av en tom rad.
Poängsättning
Din lösning utvärderas baserat på om ett av dina sex förutsagda ord matchar det faktiska saknade ordet för ett givet testfall.
Om $S$ är andelen procent av testfall där ett av dina förutsagda ord matchar det faktiska saknade ordet, beräknas din poäng som:
\[ \text{Poäng} = \max \left(0, \min \left(100, \sqrt{\frac{S-1.2}{2.5-1.2}} \times 100\right)\right) \]Vid slutet av tävlingen testas alla lösningar om på resterande 70% av datan. Din poäng i slutet av tävlingen är alltså endast poängen på de resterande 70% av datan, de 30% som du testats på hittills har ingen påverkan. Det är garanterat att de 30% som testas under tävlingen har valts uniformt slumpmässigt och är helt disjunkta från de 70% som du testas på i slutet. Därmed borde resultaten på de 30% som du testas på under tävlingen ses som en stark indikator på hur bra din lösning är. Samtidigt är det dåligt överanpassa (overfitta) din lösning till testdatan.
