Tilbage
/// Projektsemantika.dk

Semantika

Et dansk ordgættespil hvor du finder det hemmelige ord — ikke ud fra bogstaver, men ud fra ordets betydning og kontekst i det danske sprog.

88.502Ord du kan gætte
5.831Unikke baner
1,4MOrdvektorer
01

Sådan virker det

Hvert gæt tildeles en rangering. 1 er det korrekte svar, og jo lavere nummer, jo tættere er du på. Rangeringen beregnes via cosine similarity mellem ordvektorer i en Word2Vec-model.

Eksempel: det hemmelige ord er "kat"

hund2
akvarium1247
cykel26481

Rangeringen afspejler hvor ofte ord optræder i lignende kontekster i danske tekster — ikke nødvendigvis logisk kategorilighed.

02

AI-modellen

Semantisk lighed beregnes med en dansk Word2Vec-model (DSL Skipgram 2020) trænet på et stort korpus af danske tekster fra Det Danske Sprog- og Litteraturselskab. Modellen konverterer hvert ord til en 500-dimensionel vektor, hvor geometrisk nærhed afspejler semantisk lighed.

For at opnå de mest præcise rangeringer bruger vi en best-inflection strategi: hvert ord sammenlignes med målordet via alle sine bøjningsformer (f.eks. "rotte", "rotten", "rotter"), og den højeste lighed afgør rangeringen. Det fanger betydningsnuancer som den rene grundform kan misse.

Alle rangeringer er forudberegnede og gemt i en database — din browser modtager kun rangeringen for hvert gæt, aldrig modellen eller ordlisterne.

03

Ordlister

Gæt-ordforråd (~88.500 ord)

Genereret fra DDO Lemmaliste (Den Danske Ordbog) og filtreret med en blacklist der fjerner bandeord, stødende indhold og upassende ord. Kun ord med en Word2Vec-vektor inkluderes.

Målord / baner (5.831 ord)

En delmængde yderligere filtreret til kun substantiver (navneord) via DanNet. Ord der er for abstrakte, kontroversielle eller obskure er fjernet.

Lemmatisering

Bøjningsformer som "katte", "katten" og "kattene" normaliseres automatisk til lemmaet "kat". Sammensatte ord nedprioriteres i rangeringen, så mere relevante ord kommer frem.

04

Designvalg

Hvorfor Turso frem for Supabase?

Semantikas data er read-heavy: ~90.000 ord med forudberegnede rangeringer. Turso (libSQL) kører edge-replicas tæt på brugeren med sub-millisekund reads, og det hele koster $0 for vores volumen. Supabase ville give os mere infrastruktur end vi behøver og trægere cold-starts.

Hvorfor Word2Vec og ikke moderne embeddings?

Transformer-baserede modeller (BERT, GPT) giver kontekstafhængige vektorer — det samme ord kan have forskellige vektorer i forskellige sætninger. Word2Vec giver ét fast vektor per ord, hvilket er præcis hvad spilmekanikken kræver: en deterministisk rangering. Derudover findes DSL's Word2Vec-model specifikt for dansk med 1,4M ord.

Forudberegnede rangeringer

I stedet for at beregne cosine similarity live (O(n) per gæt over 88.000 ord), er alle rangeringer forudberegnet og gemt i databasen. Brugeren får kun tallet — aldrig modellen, ordlisterne eller vektorerne. Det giver instant response og beskytter IP.

Sammensatte ord-håndtering

Dansk er rigt på sammensætninger ("samarbejdsaftale" for "aftale"). Uden justering ville de dominere top-rangeringerne. Vi implementerede en penalty-baseret model: sammensatte ord fjernes ikke, men deprioriteres proportionelt, så semantisk relevante ord kommer først.

05

Datakilder

DanNetDen danske WordNet med ~48.000 navneord og deres semantiske relationer
DDO LemmalisteLemmaer fra Den Danske Ordbog
DSL Word2Vec1,4 millioner ordvektorer fra Det Danske Sprog- og Litteraturselskab
COR / COR.EXT530.000+ bøjningsformer til lemmatisering fra ordregister.dk
06

Teknologi

FrontendNext.js (App Router)
HostingVercel
DatabaseTurso (libSQL)
AI ModelWord2Vec Skipgram
LanguageTypeScript
DataDanNet + DDO

Prøv spillet selv

Spil Semantika