Hide

Problem B
Anknytningar

Languages en sv

Din vän Anna är expert på spelet Anknytningar. I detta spel ska man hitta grupper om 4 ord som är kopplade till varandra genom något gemensamt. Exempelvis kan orden "hund", "katt", "fågel", "fisk" kopplas ihop genom det gemensamma ordet "djur". Anna vill sprida spelet till sina vänner och har därför skickat 100 Anknytningar-spel till dig. Varje spel innehåller en lista med antingen 8, 12 eller 16 ord där du ska dela in dem i grupper om 4 ord som är kopplade till varandra genom något gemensamt. Du vill nu bevisa AI:s kraft genom att inte titta på spelen utan istället skriva ett program som kan lösa spelen. Precis som i de andra uppgifterna är det inte tillåtet att manuellt märka upp datan.

Vanligtvis är det INTE tillåtet att använda förtränade modeller. Men för denna uppgift är det tillåtet att använda vilken lokal inbäddningsmodell (embedding model) du vill.

Resurser

https://www.youtube.com/watch?v=wjZofJX0v4M&t=781s (embeddings) och https://www.youtube.com/watch?v=4b5d3muPQmA&t=34s ($k$-means).

Indata

Ladda ner filen med data och baslinjelösningen. Denna finns längst ner under “attachments”. Du kommer att få en zip-fil som innehåller:

  • data.json – JSON-fil som beskriver alla spel.

  • baseline.py – en baslinjelösning till uppgiften.

Filen data.json innehåller en lista med spel, varje i följande format:

[
  {
    "amount_groups": <antal grupper i spelet>,
    "words": [
      <ord1>,
      <ord2>,
      ... (totala mängden ord är alltid 4 * amount_groups)
    ]
  },
  ...
]

Varje objekt i listan representerar ett enskilt spel. Listan words innehåller alla ord för det spelet, blandade. Du kommer även hitta andra filer med liknande formatering för andra uppgifter eller delmängder (t.ex. testset).

Utdata

För varje spel ska du skriva ut din föreslagna gruppering av orden. Ditt program ska skriva ut spelen i samma ordning som i data.json. För ett spel med amount_groups $= g$, skriv ut exakt $g$ rader. På varje av dessa rader, skriv först ett heltal $k$ följt av $k$ distinkta ord från det spelet, alla separerade med ett mellanslag. Notera att grupperna du skriver ut inte nödvändigtvis behöver ha storleken 4.

Poängsättning

Din utdata behöver inte matcha svaret exakt. Istället kommer Anna att jämföra dina föreslagna grupper med hennes egna dolda gruppering och tilldela en poäng mellan $0$ och $100$ baserat på hur bra dina grupperingar är. Grovt sett får du poäng när ord som hör ihop i Annas lösning placeras i samma grupp i din utdata.

Den slutgiltiga poängen beräknas genom att jämföra hur många gånger ord som hör ihop i Annas lösning hamnar i samma grupp i din utdata. Om vi säger att $S$ är den procent av gångerna du placerar ord i den rätta gruppen, så är din slutgiltiga poäng:

\[ \text{Poäng} = \max \left(0, \min \left(100, \frac{S - 55}{85 - 55} \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.

Please log in to submit a solution to this problem

Log in