diff --git a/lab/04_statystyczny_model_językowy.ipynb b/lab/04_statystyczny_model_językowy.ipynb
new file mode 100644
index 0000000..20a5d57
--- /dev/null
+++ b/lab/04_statystyczny_model_językowy.ipynb
@@ -0,0 +1,170 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "
Modelowanie języka
\n",
+ " 4. Statystyczny model językowy [ćwiczenia]
"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 278,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "NR_INDEKSU = 375985"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "https://web.stanford.edu/~jurafsky/slp3/3.pdf"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 36,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "class Model():\n",
+ " \n",
+ " def __init__(self, vocab_size=30_000, UNK_token= ''):\n",
+ " pass\n",
+ " \n",
+ " def train(corpus:list) -> None:\n",
+ " pass\n",
+ " \n",
+ " def get_conditional_prob_for_word(text: list, word: str) -> float:\n",
+ " pass\n",
+ " \n",
+ " def get_prob_for_text(text: list) -> float:\n",
+ " pass\n",
+ " \n",
+ " def most_probable_next_word(text:list) -> str:\n",
+ " 'nie powinien zwracań nigdy '\n",
+ " pass\n",
+ " \n",
+ " def high_probable_next_word(text:list) -> str:\n",
+ " 'nie powinien zwracań nigdy '\n",
+ " pass\n",
+ " \n",
+ " def generate_text(text_beggining:list, length: int, greedy: bool) -> list:\n",
+ " 'nie powinien zwracań nigdy '\n",
+ " pass"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 24,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def get_ppl(text: list) -> float:\n",
+ " pass"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 37,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def get_entropy(text: list) -> float:\n",
+ " pass"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "- wybierz tekst w dowolnym języku (10_000_000 słów)\n",
+ "- podziel zbiór na train/test w proporcji 90/100\n",
+ "- stworzyć unigramowy model językowy\n",
+ "- stworzyć bigramowy model językowy\n",
+ "- stworzyć trigramowy model językowy\n",
+ "- wymyśl 5 krótkich zdań. Policz ich prawdopodobieństwo\n",
+ "- napisz włąsnoręcznie funkcję, która liczy perplexity na korpusie i policz perplexity na każdym z modeli dla train i test\n",
+ "- wygeneruj tekst, zaczynając od wymyślonych 5 początków. Postaraj się, żeby dla obu funkcji, a przynajmniej dla high_probable_next_word teksty były orginalne. Czy wynik będzię sie róźnił dla tekstów np.\n",
+ "`We sketch how Loomis–Whitney follows from this: Indeed, let X be a uniformly distributed random variable with values` oraz `random variable with values`?\n",
+ "- stwórz model dla korpusu z ZADANIE 1 i policz perplexity dla każdego z tekstów (zrób split 90/10) dla train i test\n",
+ "\n",
+ "- klasyfikacja za pomocą modelu językowego\n",
+ "- wygładzanie metodą laplace'a"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "#### START ZADANIA"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "#### KONIEC ZADANIA"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "- znajdź duży zbiór danych dla klasyfikacji binarnej, wytrenuj osobne modele dla każdej z klas i użyj dla klasyfikacji. Warunkiem zaliczenia jest uzyskanie wyniku większego niż baseline (zwracanie zawsze bardziej licznej klasy)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## WYKONANIE ZADAŃ\n",
+ "Zgodnie z instrukcją 01_Kodowanie_tekstu.ipynb"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Teoria informacji"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Wygładzanie modeli językowych"
+ ]
+ }
+ ],
+ "metadata": {
+ "author": "Jakub Pokrywka",
+ "email": "kubapok@wmi.amu.edu.pl",
+ "kernelspec": {
+ "display_name": "Python 3",
+ "language": "python",
+ "name": "python3"
+ },
+ "lang": "pl",
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.8.3"
+ },
+ "subtitle": "0.Informacje na temat przedmiotu[ćwiczenia]",
+ "title": "Ekstrakcja informacji",
+ "year": "2021"
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}