Hoppa till innehållet
AI-grafen
D· AI-utvecklaresprakmodeller· ca 45 min· grundläggande — ändras sällan· verifierad 2026-09-20

n-gram-språkmodeller

Kunna bygga en n-gram-modell, beräkna perplexitet och förstå glesheten som motiverade neurala modeller.

Förkunskaper

Intuition

Före neurala språkmodeller fanns n-gram: gissa nästa ord utifrån de n−1 föregående, genom att räkna hur ofta kombinationen förekommit i en textmassa.

P(ord | föregående) = antal(föregående + ord) / antal(föregående)

Med en bigram-modell (n = 2) räknar man bara ordpar. «katten sover» förekom 12 gånger, «katten» 300 gånger → P(sover | katten) = 0,04.

Problemet: gleshet. Med ett ordförråd på 50 000 ord finns 2,5 miljarder möjliga bigram och 10¹⁴ trigram. De allra flesta har du aldrig sett — och då blir sannolikheten noll, vilket gör hela meningen omöjlig. Man utjämnar (smoothing) genom att lägga till en liten sannolikhet överallt, men grundproblemet består.

Kod

from collections import defaultdict, Counter
import math, random

def bygg_bigram(tokens):
    modell = defaultdict(Counter)
    for a, b in zip(tokens, tokens[1:]):
        modell[a][b] += 1
    return modell

def sannolikhet(modell, a, b, vokab, alpha=1.0):      # add-alpha-utjämning
    return (modell[a][b] + alpha) / (sum(modell[a].values()) + alpha * len(vokab))

def perplexitet(modell, tokens, vokab):
    logs = [math.log(sannolikhet(modell, a, b, vokab)) for a, b in zip(tokens, tokens[1:])]
    return math.exp(-sum(logs) / len(logs))

def generera(modell, start, n=12):
    ut = [start]
    for _ in range(n):
        val = modell[ut[-1]]
        if not val: break
        ut.append(random.choices(list(val), weights=val.values())[0])
    return " ".join(ut)

Vad n-gram inte kan: «Mannen som bodde i huset vid sjön var» — för att välja «var» behövs «mannen», sju ord bort. En 3-gram-modell ser bara «vid sjön». Att bara öka n hjälper inte: datan räcker aldrig till.

Det är precis det problemet neurala modeller löste — först med embeddings (liknande ord delar statistik), sedan med attention (godtyckligt långt beroende).

Behärskning innebär

  • Bygger en n-gram-modell och genererar text
  • Beräknar perplexitet
  • Förklarar glesheten som motiverade neurala modeller

Logga in för att göra övningarna och bygga upp din behärskning.

Källor

Alla källor och licenser