{ "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 }