moj-2024/wyk/05_Ngramowy_model.org
2024-03-27 07:13:21 +01:00

4.1 KiB

N-gramowe modele języka i ich zastosowania

Przypomnienie

Przypomnijmy, że model języka zwraca prawdopodobieństwo dla danego ciągu symboli (tokenów, wyrazów itp.) $w_1\ldots w_N$ (o długości $N$):

$$P_M(w_1\ldots w_N) = ?$$

W dalszym ciągu będziemy zakładali, że będziemy operować na wyrazach. Zbiór wszystkich wyrazów nazywa się słownikiem (ang. vocabulary, nie dictionary!), w literaturze dotyczącej modelowania języka zazwyczaj oznacza się go literą $V$ (częściej niż $\Sigma$). Dale zakładamy, że słownik jest skończony.

Co jeszcze potrafi model języka?

Przewidywanie kolejnego słowa

$$P_M(w_N|w_1\ldots w_{N-1}) = \frac{P_M(w_1\dots w_{N-1}w_N*)}{P_M(w_1\dots w_{n-1}*)} = \frac{\sum_{\alpha \in \Sigma^*}P_M(w_1\dots w_N\alpha)}{\sum_{\alpha\in\Sigma^*}P(w_1\dots w_{n-1}\alpha)}$$

$P_M(w_N|w_1\ldots w_{N-1})$ to właściwie skrót notacyjny, pełny zapis powinien mieć następujący kształt:

$$P_M(X_N=w_N|X_1=w_1,\ldots,X_{N-1}=w_{N-1}),$$

gdzie $P_M(X_i=w)$ oznacza prawdopodobieństwo, że na $i$-tej pozycji wystąpi słowo $w$.

Odgadywanie słowa w luce

$$P_M(w_1\dots w_{i-1}?w_{i+1}\dots w_N) = \operatorname{argmax}_w P_M(w_1\ldots w_{i-1}ww_{i+1}\dots w_N)$$

Przykład dla autentycznego modelu języku

Zobaczmy przykładowe zastosowania i wyniki dla modelu języku wyuczonego na tekstach z II poł. XX w.

/pms/moj-2024/media/commit/dfe73f4afa29ec91f01be8c38380658276e59c07/wyk/05_Ngramowy_model/tabelka.png

Do czego stosujemy model języka?

Model języka sam w sobie nie jest zbyt użyteczny. To raczej środek do celu niż cel sam w sobie.

Model języka:

  • ma zastosowanie w kryptoanalizie

    • Oxmynsxq mkx lo kmrsofon li cdenisxq sdc kvzrklodsm mrkbkmdobc kxn bozvkmsxq okmr yxo li dro 13dr voddob zvkmon pebdrob kvyxq sx dro kvzrklod.
  • pomaga(ł) wybrać właściwe tłumaczenie w tłumaczeniu maszynowym czy transkrypcję w systemach rozpoznawania mowy (ASR) (zanim zaczęto używać do tego sieci neuronowych, gdzie nie ma już wyraźnego rozróżnienia między modelem tłumaczenia czy modelem akustycznym a modelem języka),
  • pomaga znaleźć „podejrzane” miejsca w tekście (korekta pisowni/gramatyki),
  • może być stosowany jako klasyfikator (potrzeba wtedy więcej niż jednego modelu, np. model języka spamów kontra model języka niespamów),
  • może być stosowany w kompresji danych,
  • bardzo dobry model języka musi mieć w środku bardzo dobrą wiedzę o języku i o świecie, można wziąć „wnętrzności” modelu, nie dbając o prawdopodobieństwa i użyć modelu w zupełnie innym celu.

N-gramowy model języka

Zawsze prawdziwe:

$$P_M(w_1\dots w_N) = P_M(w_1)P_M(w_2|w_1)\dots P_M(w_N|w_1\dots w_{N-1}).$$

Można aproksymować prawdopodobieństwa używając $n$-gramów:

$$P_M(w_1\dots w_N) \approx P_M(w_1)\dots P_M(w_i|w_{i-n+1}\dots w_{i-1})\dots P_M(w_N|w_{N-n+1}\dots w_{N-1}).$$

Model trigramowy

Dla $n=3$:

$$P_M(w_1\dots w_N) = P_M(w_1)P_M(w_2|w_1)P_M(w_3|w_1w_2)\dots P_M(w_i|w_{i-2}w_{i-1})\dots P_M(w_N|w_{N-2}w_{N-1}).$$

Zauważmy, że model trigramowy oznacza modelowanie kolejnego wyrazu przy znajomości 2 (nie 3!) poprzedzających wyrazów (razem mamy 3 wyrazy).

Model digramowy/bigramowy

Dla $n=2$:

$$P_M(w_1\dots w_N) = P_M(w_1)P_M(w_2|w_1)P_M(w_3|w_2)\dots P_M(w_i|w_{i-1})\dots P_M(w_N|w_{N-1})$$

Model unigramowy

Dla $n=1$ uzyskujemy przypadek szczególny:

$$P_M(w_1\dots w_N) = P_M(w_1)P_M(w_2)P_M(w_3)\dots P_M(w_N) = \prod_{i=1}^N P_M(w_i)$$

Zauważmy, że w modelu unigramowym w ogóle nie bierzemy pod uwagę kolejności wyrazów.

Estymacja prawdopodobieństw

Dla $n$-gramowego modelu potrzebujmy estymować wartości:

$$P_M(w_i|w_{i-n+1}\dots w_{i-1}).$$

Prawdopodobieństwa te estymujemy na podstawie jakiegoś korpusu tekstów (możemy nazywać go również zbiorem uczącym).

Najprostszy sposób:

$$P_M(w_i|w_{i-n+1}\dots w_{i-1}) = \frac{\# w_{i-n+1}\dots w_{i-1}w_i}{\# w_{i-n+1}\dots w_{i-1}},$$

gdzie $\# w_1\dots w_k$ oznacza liczbę wystąpień w korpusie.

Na przykład, jeśli model $M$ zostanie wyuczony na tekście do be do be do do, wówczas $P_M(\mathit{be}|\mathit{do})=\frac{2}{3}$.