TIMKoD - Lab 1 - Przybliżenie języka naturalnego

Podobne dokumenty
teoria informacji Entropia, informacja, kodowanie Mariusz Różycki 24 sierpnia 2015

Teoria informacji i kodowania Ćwiczenia

Kodowanie i kompresja Streszczenie Studia dzienne Wykład 9,

teoria informacji Kanały komunikacyjne, kody korygujące Mariusz Różycki 25 sierpnia 2015

Temat: Algorytm kompresji plików metodą Huffmana

Wygra Polska czy Brazylia, czyli o tym jak zwięźle zapisywać informacje

Teoria Informacji - wykład. Kodowanie wiadomości

Granica kompresji Kodowanie Shannona Kodowanie Huffmana Kodowanie ciągów Kodowanie arytmetyczne. Kody. Marek Śmieja. Teoria informacji 1 / 35

Instrukcje dla zawodników

Układy stochastyczne

Zasada Bonferroniego

Prawdopodobieństwo i statystyka

Entropia Kodowanie. Podstawy kompresji. Algorytmy kompresji danych. Sebastian Deorowicz

MODELOWANIE RZECZYWISTOŚCI

Map Reduce Proste zliczanie słów i zapytania SQL

Entropia to wielkość określająca liczbę bitów informacji zawartej w danej wiadomości lub źródle. Spełnia ona trzy naturalne warunki: I(s) jest

Def. Kod jednoznacznie definiowalny Def. Kod przedrostkowy Def. Kod optymalny. Przykłady kodów. Kody optymalne

Teoria przetwarzania A/C i C/A.

Podstawowe pojęcia. Teoria informacji

pobieramy pierwszą literę komunikatu i wypełniamy nią (wszystkie pozycje tą samą literą) bufor słownikowy.

mgr inż. Grzegorz Kraszewski SYSTEMY MULTIMEDIALNE wykład 4, strona 1. GOLOMBA I RICE'A

Języki programowania zasady ich tworzenia

Tajna wiadomość. Scenariusz lekcji

Kodowanie i entropia

Kompresja bezstratna. Entropia. Kod Huffmana

Dla człowieka naturalnym sposobem liczenia jest korzystanie z systemu dziesiętnego, dla komputera natomiast korzystanie z zapisu dwójkowego

Filozofia Informacji, Wykład II - Teoria informacji C. E. Shannona.

ŁAMIEMY SZYFR CEZARA. 1. Wstęp. 2. Szyfr Cezara w szkole. Informatyka w Edukacji, XV UMK Toruń, 2018

Instytut Politechniczny Państwowa Wyższa Szkoła Zawodowa. Diagnostyka i niezawodność robotów

Wykład 4. Plan: 1. Aproksymacja rozkładu dwumianowego rozkładem normalnym. 2. Rozkłady próbkowe. 3. Centralne twierdzenie graniczne

KATEDRA INFORMATYKI TECHNICZNEJ. Ćwiczenia laboratoryjne z Logiki Układów Cyfrowych. ćwiczenie 204

Polcode Code Contest PHP-10.09

Złożoność informacyjna Kołmogorowa. Paweł Parys

Teoria informacji i kodowania Ćwiczenia Sem. zimowy 2016/2017

Wstęp do Techniki Cyfrowej... Teoria automatów

Kodowanie informacji

ZADANIE 1. Rozwiązanie:

0 + 0 = 0, = 1, = 1, = 0.

Technologie cyfrowe semestr letni 2018/2019

Pojęcie szeregu nieskończonego:zastosowania do rachunku prawdopodobieństwa wykład 1

Map Reduce Wprowadzenie do Apache Hadoop

Kompresja Kodowanie arytmetyczne. Dariusz Sobczuk

Wprowadzenie do informatyki i użytkowania komputerów. Kodowanie informacji System komputerowy

Krótka wycieczka do wnętrza komputera

Elementy teorii informacji i kodowania

Modelowanie niezawodności prostych struktur sprzętowych

Kodowanie transformacyjne. Plan 1. Zasada 2. Rodzaje transformacji 3. Standard JPEG

Identyfikacja znamion ukrytego plagiatu. Z wykorzystaniem IDEA Caseware

Wstęp Statyczne kody Huffmana Dynamiczne kody Huffmana Praktyka. Kodowanie Huffmana. Dawid Duda. 4 marca 2004

Akademia Górniczo-Hutnicza Wydział Elektrotechniki, Automatyki, Informatyki i Elektroniki

Informatyka I stopień (I stopień / II stopień) ogólno akademicki (ogólno akademicki / praktyczny) podstawowy (podstawowy / kierunkowy / inny HES)

Zapisywanie algorytmów w języku programowania

Algorytmy kompresji. Kodowanie Huffmana, kodowanie arytmetyczne

Symulacja w przedsiębiorstwie

Modele Obliczeń. Wykład 1 - Wprowadzenie. Marcin Szczuka. Instytut Matematyki, Uniwersytet Warszawski

Lab 10. Funkcje w argumentach funkcji metoda Newtona. Synonimy nazw typów danych. Struktury. Tablice struktur.

Zad. 3: Układ równań liniowych

JAO - Wprowadzenie do Gramatyk bezkontekstowych

Zastosowanie teorii liczb w kryptografii na przykładzie szyfru RSA

O oszczędnym dziennikarzu, czyli czym jest

Prezydent wszystkich kombinacji czyli rzecz o filtrowaniu systemów Lotto

Modulacja i kodowanie. Labolatorium. Kodowanie źródłowe Kod Huffman a

Historia kodowania i format plików XML. Jolanta Bachan

Aproksymacja funkcji a regresja symboliczna

Algorytmy i złożoności Wykład 5. Haszowanie (hashowanie, mieszanie)

Podstawy technologii WWW

Wydział Elektrotechniki, Automatyki, Informatyki i Elektroniki Katedra Elektroniki

Maszyna Turinga języki

NOWY SZABLON IMPORTU PLIKÓW

Weryfikacja hipotez statystycznych

INŻYNIERIA BEZPIECZEŃSTWA LABORATORIUM NR 2 ALGORYTM XOR ŁAMANIE ALGORYTMU XOR

Teoria Informacji i Metody Kompresji Danych

Kodowanie Huffmana. Platforma programistyczna.net; materiały do laboratorium 2014/15 Marcin Wilczewski

SPIS TREŚCI WSTĘP LICZBY RZECZYWISTE 2. WYRAŻENIA ALGEBRAICZNE 3. RÓWNANIA I NIERÓWNOŚCI

Indukcja matematyczna

Excel - podstawa teoretyczna do ćwiczeń. 26 lutego 2013

Systemy operacyjne. Laboratorium 9. Perl wyrażenia regularne. Jarosław Rudy Politechnika Wrocławska 28 lutego 2017

Kody Tunstalla. Kodowanie arytmetyczne

Kryptologia przykład metody RSA

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

WYDZIAŁ MATEMATYKI KARTA PRZEDMIOTU

Oznacza to, że chcemy znaleźć minimum, a właściwie wartość najmniejszą funkcji

Wymagania z matematyki KLASA VII

Kody splotowe (konwolucyjne)

Matematyka dyskretna. Andrzej Łachwa, UJ, /14

Spacery losowe generowanie realizacji procesu losowego

2. Zmienne i stałe. Przykłady Napisz program, który wypisze na ekran wynik dzielenia 281 i 117 w postaci liczby mieszanej (tj. 2 47/117).

Kryptografia systemy z kluczem tajnym. Kryptografia systemy z kluczem tajnym

Instytut Fizyki Politechniki Łódzkiej Laboratorium Metod Analizy Danych Doświadczalnych Ćwiczenie 3 Generator liczb losowych o rozkładzie Rayleigha.

Lekcja 3: Pierwsze kroki z Pythonem. Pętle

Definiowanie Kalendarza Przed rozpoczęciem planowania musimy zdefiniować kalendarz z terminami, kiedy mogą być planowane zajęcia.

Temat: Zastosowanie wyrażeń regularnych do syntezy i analizy automatów skończonych

Statystyka i opracowanie danych Podstawy wnioskowania statystycznego. Prawo wielkich liczb. Centralne twierdzenie graniczne. Estymacja i estymatory

Elementy Teorii Obliczeń

NOWY SZABLON IMPORTU PLIKÓW

LOGIKA Klasyczny Rachunek Zdań

Nierówność Krafta-McMillana, Kodowanie Huffmana

Niezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu.

Matematyczne Podstawy Informatyki

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

Transkrypt:

TIMKoD - Lab 1 - Przybliżenie języka naturalnego 28 lutego 2018 Opis pliku z zadaniami Wszystkie zadania na zajęciach będą przekazywane w postaci plików.pdf, sformatowanych podobnie do tego dokumentu. Zadania będą różnego rodzaju. Za każdym razem będą one odpowiednio oznaczone: Zadania do wykonania na zajęciach oznaczone są symbolem nie są one punktowane, ale należy je wykonać w czasie zajęć. Punktowane zadania do wykonania na zajęciach oznaczone są symbolem należy je wykonać na zajęciach i zaprezentować prowadzącemu, w wypadku nie wykonania zadania w czasie zajęć lub nieobecności, zadania staje się zadaniem do wykonania w domu ( ). Zadania do wykonania w domu oznaczone są symbolem są one punktowane, należy je dostarczyć w sposób podany przez prowadzącego i w wyznaczonym terminie (zwykle przed kolejnymi zajęciami). Zadania programistyczne można wykonywać w dowolnym języku programowania, używając jedynie biblioteki standardowej dostępnej dla tego języka. 1

Wprowadzenie Z powodu braku pierwszego wykładu zamieszczamy słowo wstępu do przedmiotu: Krótka historia Rysunek 1: Claude Shannon (1916-2001) Mało która dyscyplina ma swój początek w tak konkretnym miejscu i czasie jak teoria informacji, dlatego szkoda by było nie zawrzeć tutaj skróconej historii jej powstania. W latach 20-tych ubiegłego wieku zaczęto zastanawiać się nad położeniem transatlantyckiego kabla telefonicznego (pierwszy telegram wysłano transatlantyckim kablem telegraficznym już w 1858, finalizacja kabla telefonicznego nastąpiła dopiero w 1956). Zetknięto się z serią praktycznych problemów dotyczących tego, jakie powinny być właściwości kabla, by był on w stanie poradzić sobie z dziennym obciążeniem oraz jak zakodować tajne rządowe połączenia. Informacja i jej własności były w tym okresie bliżej niezdefiniowane. Wiadome było jednak to, że za pomocą sygnału elektrycznego można przesłać wiadomość telegraf, dźwięk, obraz oraz, że ten skomplikowany sygnał można rozbić na sumę funkcji okresowych o różnych częstotliwościach. Sieć komunikacyjna mogła przenosić sygnały tylko o określonym zakresie tych częstotliwości, definiowanym jako szerokość pasma. (ówczesne sieci telefoniczne działy w zakresie od 200 Hz do 3200 Hz). W celu przesłania bardziej złożonej (ciekawszej) wiadomości należało wygenerować bardziej złożone funkcje. Harry Nyquist, pracujący dla Bell Labs (założone przez AT&T w 1925 roku; pracownikom tego laboratorium przypisuje się wynalezienie m.in. tranzystora, systemu Unix, języka C i właśnie teorii informacji), pokazał w 1928 roku, że przepustowość kanału komunikacyjnego ogranicza ilość inteligencji (jak sam to nazwał), która może zostać przesłana z daną szybkością. Implikacją tego było stwierdzenie, że sygnał ciągły może być zastąpiony przez sygnał dyskretny w ramach danej szerokości pasma i nikt nie będzie w stanie wskazać różnicy. W tym samym roku Ralph Hartley również pracujący dla Bell Labs, rozwija idee wprowadzone przez Nyquista. Proponuje on nowy sposób myślenia o informacji w ramach fizycznych systemów ich przesyłania, który zakłada zi- 2

gnorowanie kwestii interpretacji wiadomości, a skupia się na ilości możliwych wiadomości, które będzie mógł rozróżnić odbiorca. Ostatecznie przedstawia on wzór na ilość przesłanej informacji w systemach dyskretnych: H = log(m n ), gdzie H to ilość informacji, m jest ilością liter w alfabecie ilością dyskretnych wartości, którą posługuje się system (np. jeśli rozróżniamy tylko stany on / off to m = 2), natomiast n to długość wiadomości. Jeśli będziemy przesyłać losowe litery, ilość możliwych wiadomości rośnie wykładniczo względem długości naszej wiadomości. Zarówno Nyquistowi, jak i Hartleyowi bardziej intuicyjne wydawało się, że ilość informacji powinna rosnąć liniowo z długością komunikatu, tak by 32-literowy telegram zawierał 2 razy więcej informacji od 16-literowego, stąd zastosowany logarytm we wzorze Hartleya. Prace Nyquista i Hartleya miały silny wpływ na innego pracownika Bell Labs, Clauda Shannona, który idzie o krok dalej i jednoznacznie stwierdza, że znaczenie wiadomości może być zignorowane, a istotną rzeczą określającą wiadomość jest to, że została ona wybrana ze zbioru możliwych wiadomości. Proponuje on też uniwersalny schemat systemu komunikacji, składający się z: źródła informacji, które produkuje wiadomość, transmitera, który koduje wiadomość do formatu, który można wysłać jako sygnał, kanału, który jest medium, przez które przekazywany jest sygnał, źródła szumu, które reprezentuje zniekształcenia jakim ulega sygnał w drodzę do odbiornika, odbiornika, który dekoduje wiadomość, miejsce przeznaczenia, które jest adresatem wiadomości. W 1948, Shannon publikuje pracę A Mathematical Theory of Communication 1 uznawaną za początek teorii informacji. pdf 1 http://math.harvard.edu/~ctm/home/text/others/shannon/entropy/entropy. 3

Rysunek 2: Diagram ogólnego systemu komunikacji zaproponowany przez Shannona Cel zajęć Na tych zajęciach chcemy się skupić na dyskretnym źródle informacji. Możemy myśleć o nim jako generatorze wiadomości, który podaje nam symbol po symbolu. Źródło wybiera kolejny symbol z jakimś prawdopodobieństwem, które jest najczęściej zależne od poprzednio podanych symboli, poza najprostszymi przypadkami. Możemy więc traktować dyskretne źródło informacji jako proces stochastyczny. I odwrotnie, każdy proces stochastyczny, który generuje dyskretną sekwencję zdarzeń ze skończonego zbioru, może być traktowany jako źródło informacji. Języki naturalne (np. angielski) możemy traktować jako dyskretne źródło informacji (oczywiście nie tylko języki są źródłem informacji; inne źródła to na przykład skwantyzowany dźwięk, obraz czy video). By zobrazować tą idee, poniższe ćwiczenia skupiają się na tworzeniu sztucznych źródeł informacji, które wraz ze wzrostem skomplikowania będą generować wiadomości coraz bardziej zbliżone do języka angielskiego. Przy okazji pokażemy, jak wiedza statystyczna na temat źródła pozwala na zastosowanie odpowiedniego kodowania, które pozwala zredukować czas nadawania wiadomości lub rozmiar kodu. 4

Przygotowanie do zajęć Do wykonania zadań potrzebne będą korpusy tekstowe, które można pobrać z http://www.cs.put.poznan.pl/kjasinska/lectures/timkod/data/ lab1 Pliki są znormalizowane, zawierają jedynie 26 małych liter alfabetu łacińskiego, cyfry i spacje. Przygotuj funkcję do wczytywania pliku do pamięci. 5

1 Przybliżenie zerowego rzędu Treść Zadanie polega na wygenerowaniu tak zwanego przybliżenia zerowego rzędu dla języka angielskiego. Czyli ciągu losowych znaków (26 liter alfabetu + spacja), w którym symbole mają jednakową szansę na wystąpienie (1/27) niezależnie od poprzednio wygenerowanych symboli. Wskazówka: kolejne zadania również dotyczą generowania innych przybliżeń, zaprojektowanie kodu w oparciu o generator, który przyjmuje źródło informacji jako argument, może zaoszczędzić pisania sporej ilości podobnego kodu. Jaka jest średnia długość słowa w tym przybliżeniu? 6

2 Częstość liter Treść Czy różne znaki występują jednakowo często w prawdziwym tekście? Oblicz częstość wystąpienia poszczególnych znaków w angielskim tekście. Wskazówka: nie musisz zliczać wszystkich znaków. Jakie znaki są najbardziej prawdopodobne, a które najmniej? Zwróć uwagę na kody przypisane poszczególnym literą w kodzie Morse a, czy widzisz jakąś zależność, z czego wynika? Rysunek 3: Międzynarodowy kod Morse a 7

3 Przybliżenie pierwszego rzędu Treść Używając wyliczonych prawdopodobieństw w poprzednim zadaniu, wygeneruj nowy ciąg znaków będzie to przybliżenie pierwszego rzędu. Jaka jest średnia długość słowa w tym przybliżeniu? Czy jest ona zbliżona do faktycznej średniej tego korpusu? 8

4 Prawdopodobieństwo warunkowe liter Treść Czy różne znaki występują jednakowo często po sobie? Oblicz prawdopodobieństwo wystąpienia poszczególnych znaków po każdym z 2. najczęściej występujących znaków w korpusie. Przykład Rozważmy następujący korpus: beekeepers keep bees in a beehive. W tym zdaniu najczęstszą literą jest litera e. W przybliżeniu pierwszego rzędu wyliczonym na podstawie tego korpusu e miałoby prawdopodobieństwo pojawienia się jako kolejny znak wynoszące aż 12/32. Jednak żadne ze słów w tym korpusie nie zaczyna się od litery e po spacji, których jest 5, nigdy nie występuje litera e. To pokazuje, że bardziej skomplikowaną strukturę możemy otrzymać, jeśli zamiast wybierać kolejne symbole niezależnie, prawdopodobieństwo wyboru kolejnej litery będzie zależne od poprzedzających ją liter. Możemy stworzyć tak zwane źródło Markova pierwszego rzędu, w którym kolejne znaki są generowane z następującym prawdopodobieństwem: P (j i) = P (i, j)/p (i), gdzie P (i) jest prawdopodobieństwem litery i w tekście, P (i, j) jest prawdopodobieństwem wystąpienia bigramu (pary występujących po sobie liter) (i, j), a P (j i) jest prawdopodobieństwem warunkowym wystąpienia litery j zaraz po literze i. Z racji, że Shanon w 1948 nie mógł łatwo użyć komputera do policzenia tych liczności, zaproponował on więc rodzaj metody Monte Carlo by przybliżyć źródło Markova. Brał książkę, którą otwierał na losowej stronie, wybierał losową linijkę i losową pozycję w linii i przesuwał się w prawo tak długi, aż nie znalazł pierwszej litery (i) i brał następującą po niej (j). Proces powtarzał od początku by uzyskać kolejny symbol. 9

5 Przybliżenia na podstawie źródła Markova 10pt Treść Wygeneruj przybliżenie języka angielskiego na podstawie źródła Markova pierwszego rzędu (źródła, gdzie prawdopodobieństwo następnego symbolu zależy od 1. poprzedniego). Następnie zrób to samo dla źródła Markova trzeciego rzędu (źródła, gdzie prawdopodobieństwo następnego symbolu zależy od 3. poprzednich). Na koniec wygeneruj przybliżenie źródła Markova piątego rzedu. Zaczynij od ciągu znaków zawierającego już słowo probability. Jaka jest średnia długość wyrazu w tych przybliżeniach? 10