Robocikowo>ROBOCIKOWO
Architektura

N-gram

1948HistorycznyOpublikowano: 19 maja 2026Aktualizacja: 19 maja 2026Opublikowany
N-gram to ciąg n kolejnych jednostek (znaków, słów, fonemów, tokenów) używany w modelu języka, gdzie prawdopodobieństwo tokenu szacuje się z częstości jego współwystąpień z n−1 poprzednikami.
Kluczowa innowacja
Aproksymacja prawdopodobieństwa sekwencji za pomocą założenia Markowa rzędu n−1: prawdopodobieństwo następnego tokenu zależy wyłącznie od n−1 poprzednich, co czyni statystyczne modelowanie języka na ogromnych korpusach obliczalne.
Kategoria
Architektura
Poziom abstrakcji
Primitive
Poziom operacji
ModelInferencjaDane
Zastosowania
Modelowanie języka (klasyczne, statystyczne)Rozpoznawanie mowy (ASR) — rescoring i pierwsze przejścieStatystyczne tłumaczenie maszynowe (SMT)Autouzupełnianie i predykcja tekstuKlasyfikacja tekstu (cechy n-gramowe + naiwny Bayes / SVM)Detekcja języka i identyfikacja autora (stylometria)Sprawdzanie pisowni i gramatykiInformation retrieval — shingles (Broder 1997)Bioinformatyka — k-mery w analizie sekwencji DNA i białekBaseline ewaluacyjny dla modeli neuronowych

Jak działa

1. Tokenizacja korpusu na jednostki (słowa, znaki, subwords). 2. Dodanie znaczników początku i końca zdania (<s>, </s>). 3. Zliczenie wszystkich n-gramów i (n−1)-gramów w korpusie. 4. Estymacja prawdopodobieństw warunkowych metodą największej wiarygodności: P(w_i | w_{i−n+1}...w_{i−1}) = count(w_{i−n+1}...w_i) / count(w_{i−n+1}...w_{i−1}). 5. Wygładzanie (Laplace, Good-Turing, Katz back-off, Kneser-Ney) w celu nadania niezerowej masy prawdopodobieństwa n-gramom niewidzianym w korpusie. 6. Podczas inferencji prawdopodobieństwo zdania jest iloczynem prawdopodobieństw warunkowych kolejnych n-gramów, zwykle obliczane w przestrzeni log do uniknięcia underflow. Ewaluacja: perplexity (im niższe, tym lepiej).

Rozwiązany problem

Bezpośrednie modelowanie pełnego rozkładu prawdopodobieństwa nad sekwencjami języka jest niewykonalne — liczba możliwych sekwencji rośnie wykładniczo z długością. N-gram radzi sobie z tym przez założenie Markowa: tylko n−1 ostatnich tokenów ma znaczenie, dzięki czemu model ma skończoną, oszacowywalną liczbę parametrów.

Komponenty

Tablica zliczeń n-gramówPamięć statystyczna modelu

Struktura przechowująca count(w_{i−n+1}...w_i) dla każdego n-gramu obserwowanego w korpusie treningowym; zwykle implementowana jako trie, hash-table lub baza danych klucz-wartość.

Estymator prawdopodobieństwaInferencja prawdopodobieństw warunkowych

Komponent obliczający P(w_i | w_{i−n+1}...w_{i−1}) z surowych zliczeń, zwykle MLE: count(n-gram) / count(prefix).

Wygładzanie (smoothing)Generalizacja na niewidziane n-gramy

Algorytm redystrybucji masy prawdopodobieństwa do n-gramów niewidzianych w treningu. Standardowe metody: Laplace (add-one), Good-Turing, Katz back-off, interpolated Kneser-Ney, modified Kneser-Ney.

Back-off / interpolacjaŁączenie estymatorów różnych rzędów

Mechanizm cofania się do n-gramów niższego rzędu (np. trigram → bigram → unigram), gdy n-gram wyższego rzędu nie został zaobserwowany lub ma niskie zliczenie.

Implementacja

Pułapki implementacyjne
Brak wygładzania → prawdopodobieństwa zeroweKrytyczna

Każdy n-gram niewidziany w treningu dostaje P=0, co powoduje, że całe zdanie ma P=0 i log P=−∞. Wygładzanie jest obowiązkowe.

Rozwiązanie:Użyj add-one (jako baseline), Katz back-off, lub modified Kneser-Ney (najlepiej).
Underflow numerycznyWysoka

Mnożenie wielu małych prawdopodobieństw szybko trafia w dolny zakres float; wyniki tracą precyzję lub stają się 0.

Rozwiązanie:Zawsze pracuj w przestrzeni log: log P(sentence) = Σ log P(w_i | context).
Pominięcie znaczników <s> i </s>Średnia

Bez znaczników początku/końca zdania nie da się policzyć P(pierwszego słowa) ani P(zakończenia).

Rozwiązanie:Dodaj n−1 znaczników <s> na początku i jeden </s> na końcu każdego zdania.
Eksplozja rozmiaru modelu dla dużego nWysoka

Pełna tablica 5-gramów na korpusie internetowym może mieć setki GB. Bez pruningu i kompresji model jest nieużywalny.

Rozwiązanie:Użyj pruningu (Stolcke), kompresji trie (KenLM), lub aproksymacji Bloom filters (Talbot & Osborne).
Brak modelowania długozasięgowych zależnościWysoka

N-gram z założenia ignoruje cokolwiek dalej niż n−1 tokenów wstecz. Składnia, koreferencja i kontekst dyskursu są poza zasięgiem modelu.

Rozwiązanie:Tam, gdzie liczy się długi kontekst, użyj modeli neuronowych (RNN, LSTM, Transformer).

Ewolucja

Oryginalny paper · 1948 · Bell System Technical Journal · Claude E. Shannon
A Mathematical Theory of Communication
Claude E. Shannon
1948
Shannon wprowadza modele n-gramowe w teorii informacji
Punkt przełomowy

W "A Mathematical Theory of Communication" Shannon analizuje statystykę języka angielskiego za pomocą n-gramów znakowych i słownych, traktując język jako proces stochastyczny rzędu n−1 (Markov).

1951
Shannon "Prediction and Entropy of Printed English"

Klasyczny eksperyment szacowania entropii języka angielskiego przy użyciu n-gramów; pokazuje, że ludzie potrafią przewidywać kolejne litery lepiej niż n-gramy niskiego rzędu.

1980
Jelinek i IBM stosują trigramy w rozpoznawaniu mowy
Punkt przełomowy

Grupa Frederick Jelineka w IBM Research wprowadza trigramowe modele języka do dużych systemów rozpoznawania mowy, ustanawiając paradygmat noisy channel.

1987
Katz back-off

Slava Katz publikuje schemat back-off do estymacji prawdopodobieństw rzadkich n-gramów — standard branżowy przez dwie dekady.

Estimation of probabilities from sparse data for the language model component of a speech recognizer (artykuł)
1995
Kneser-Ney smoothing
Punkt przełomowy

Reinhard Kneser i Hermann Ney wprowadzają wygładzanie oparte na liczbie unikalnych kontekstów. Modified Kneser-Ney (Chen & Goodman 1998) pozostaje najlepszą metodą wygładzania dla n-gramów słownych.

2007
Google publikuje "Web 1T 5-gram"

Google udostępnia korpus 5-gramów zliczonych z 1 tryliona słów internetu. Brants et al. pokazują "Large Language Models in Machine Translation": prosty stupid back-off na ogromnych danych dorównuje wyrafinowanym metodom.

2010
KenLM — szybka implementacja n-gramów

Kenneth Heafield publikuje KenLM, otwartą bibliotekę modeli n-gramowych z modified Kneser-Ney, standard de facto dla SMT (Moses) i baseline'ów.

2013
Początek wypierania n-gramów przez neuronowe modele języka
Punkt przełomowy

Mikolov et al. (RNN LM) i word2vec pokazują, że gęste reprezentacje wektorowe rozwiązują problem data sparsity n-gramów; era statystycznego LM zaczyna się kończyć w produkcji.

Hiperparametry (konfigurowalne osie)

Order (n)Krytyczna

Rząd modelu, czyli długość n-gramu. Typowe wartości: 1 (unigram), 2 (bigram), 3 (trigram), 4–5 dla dużych korpusów.

1Unigram — tylko zliczenia pojedynczych tokenów.
2Bigram — najprostszy model warunkowy.
3Trigram — standard dla małych korpusów.
5Google n-gram używał n=5 na 1 trylionie słów.
Smoothing methodKrytyczna

Metoda wygładzania prawdopodobieństw dla n-gramów niewidzianych. Wybór tej metody jest często ważniejszy niż wybór n.

Laplace (add-one)Najprostsza; słaba na rzadkich danych.
Good-TuringReestymuje masę na podstawie liczby unikalnych n-gramów.
Katz back-offDiscountuje wysokie zliczenia, redystrybuuje do niższego rzędu.
Kneser-NeyNajlepsza dla n-gramów słownych — bazuje na liczbie unikalnych kontekstów.
Modified Kneser-NeyWariant z różnymi rabatami dla różnych zliczeń (Chen & Goodman 1998).
Token unitWysoka

Jednostka n-gramu: znak, słowo, sylaba, subword, fonem, base pair.

wordStandard w modelowaniu języka.
characterOdporne na OOV, użyteczne w identyfikacji języka.
subword/BPEHybrydowe; rzadko stosowane historycznie w n-gramach.
Vocabulary sizeWysoka

Rozmiar słownika |V|. Wyznacza maksymalną liczbę unikalnych unigramów i decyduje o eksplozji parametrów.

Złożoność obliczeniowa

Złożoność czasowa: O(N) trening; O(1) lookup (amortyzowany hash) na n-gram podczas inferencji. Złożoność przestrzenna: O(|V|^n) w pesymistycznym przypadku; O(min(N, |V|^n)) w praktyce.

Wąskie gardło obliczeniowe

Data sparsity i eksplozja pamięci

Liczba możliwych n-gramów rośnie jak |V|^n. Dla |V|=50 000 i n=5 daje to 3.1×10^23 możliwych 5-gramów; ogromna większość nigdy się nie pojawia, ale przechowywanie zaobserwowanych zliczeń wymaga wielogigabajtowych struktur (Google 5-gram: 1 TB nieskompresowany).

Paradygmat wykonania

Tryb główny
sparse

Tylko jedna ścieżka w tablicy zliczeń jest dotykana per zapytanie — bardzo rzadka aktywacja parametrów.

Wzorzec aktywacji
subset_active

Równoległość

Poziom równoległości
fully_parallel

Zliczanie n-gramów jest trywialnie równoległe (MapReduce); inferencja każdego n-gramu jest niezależna.

Zakres
traininginference

Wymagania sprzętowe

Podstawowe

Modele n-gramowe to głównie wyszukiwanie w tablicach hash/trie — operacje pamięciowo-zorientowane, świetnie dopasowane do CPU z dużym cache i szybką pamięcią.

Dobry fit

Brak zależności od mnożenia macierzy — działa wszędzie, włącznie z urządzeniami wbudowanymi.

Ograniczony

GPU nie daje praktycznie żadnego przyspieszenia dla n-gramów — to nie jest workload macierzowy.