Przetwarzanie języka Wprowadzenie do informatyki Jerzy Nawrocki

Slides:



Advertisements
Podobne prezentacje
Lingwistyka Matematyczna
Advertisements

Lingwistyka Matematyczna
Lingwistyka Matematyczna
Logiki (nie)klasyczne
Lingwistyka Matematyczna
Metoda pierwszeństwa operatorów
Imperatywne modele obliczeń Copyright, 2003 © Jerzy R. Nawrocki Teoretyczne podstawy.
Metody numeryczne Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie do informatyki.
Programowanie imperatywne i język C Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie.
Programowanie imperatywne i granice obliczalności Copyright, 2004 © Jerzy R. Nawrocki
Języki formalne i gramatyki
Modularyzacja i struktury danych w C Copyright, 2005 © Jerzy R. Nawrocki Wprowadzenie.
Modularyzacja i struktury danych w C Copyright, 2005 © Jerzy R. Nawrocki Wprowadzenie.
Programowanie imperatywne i język C Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie.
Język C – Część II Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie do informatyki.
Kompilacja przechodnia
Generator analizatorów składniowych
Translatory Copyright, 2006 © Jerzy R. Nawrocki Wprowadzenie do informatyki Wykład 11.
Gramatyki i translatory
PWSZ Gniezno // codefly 2009 Łukasz Tomczak
Języki formalne i gramatyki Copyright, 2005 © Jerzy R. Nawrocki Teoretyczne podstawy.
Języki formalne Copyright, 2006 © Jerzy R. Nawrocki Wprowadzenie do informatyki Wykład.
ANALIZA SKŁADNIOWA.
You are about to see a few sentences in Polish. Try to translate them into English, but keep in mind they are: The First Conditonal The Second Conditional.
Temat 2: Podstawy programowania Algorytmy – 1 z 2 _________________________________________________________________________________________________________________.
Wstęp do programowania Wykład 9
1 Dr Galina Cariowa. 2 Legenda Iteracyjne układy kombinacyjne Sumatory binarne Sumatory - substraktory binarne Funkcje i układy arytmetyczne Układy mnożące.
InMoST, Analiza architektury metodą ATAM Jerzy Nawrocki
Wyrażenia Algebraiczne Bibliografia Znak 1Znak 2 Znak 3 Znak 4 Znak 5 Znak 6 Znak 7 Znak 8 Znak 9 Znak 10 Znak 11.
Zagrożenia i szanse gospodarki polskiej Spojrzenie długookresowe Dr hab. Prof. UW Grzegorz Jędrzejczak 2016L w I 1.
Metody sztucznej inteligencji - Technologie rozmyte i neuronowe 2015/2016 Perceptrony proste nieliniowe i wielowarstwowe © Kazimierz Duzinkiewicz, dr hab.
 Przedziałem otwartym ( a;b ) nazywamy zbiór liczb rzeczywistych x spełniających układ nierówności x a, co krócej zapisujemy a
O PARADOKSIE BRAESSA Zbigniew Świtalski Paweł Skałecki Wydział Matematyki, Informatyki i Ekonometrii Uniwersytet Zielonogórski Zakopane 2016.
Hoopl Higher-order optimization library
Wykład I: Pytania o logikę
STEROWANIE RUCHEM METODĄ OKNA – SIEĆ PAKIETOWA
Programowanie Obiektowe – Wykład 1
Minimalizacja automatu
W kręgu matematycznych pojęć
Schematy blokowe.
Techniki Informacji i Komunikacji
Rachunki zdań Tautologiczność funkcji
Projektowanie wspomagane komputerem
Liczby pierwsze.
Akademia C# - Lab2 Zmienne, instrukcje warunkowe, pętle, debugger,
Autorka: Natalia Marszałkowska
ALGORYTMY I STRUKTURY DANYCH
Programowanie obiektowe
Wstęp do Informatyki - Wykład 3
Tomasz Gizbert-Studnicki
Kurs języka C++ – wykład 13 ( )
Elementy fizyki kwantowej i budowy materii
Języki programowania.
ALGORYTMY I STRUKTURY DANYCH
Przetwarzanie tekstów i AWK
Instrukcje wyboru.
Własności statystyczne regresji liniowej
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
ZAJĘCIA DODATKOWE Z JĘZYKA ANGIELSKIEGO W KLASIE 1 I 2
Przedziały liczbowe.
Implementacja rekurencji w języku Haskell
Język C++ Preprocesor Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła.
Język C++ Operatory Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła.
ALGORYTMY I STRUKTURY DANYCH
Elementy Kombinatoryki
Grazyna Mirkowska Matematyka Dyskretna PJWSTK 2001
Własności asymptotyczne metody najmniejszych kwadratów
dr Robert Kowalczyk, PWSZ Płock
Python 3 Wprowadzenie.
Zapis prezentacji:

Przetwarzanie języka Wprowadzenie do informatyki Jerzy Nawrocki www.cs.put.poznan.pl/jnawrocki/wdi

Komputer Człowiek Gracz A B Test Turinga (1950) Komputer Człowiek Gracz A B Alan Turing

User: They’re always buggin us about something or other. Program ELIZA (1966) User: Men are all alike. Eliza: In what way User: They’re always buggin us about something or other. Eliza: Can you think of a specific example User: My boyfriend made me come here Eliza: Your boyfriend made you come here Joseph Weizenbaum

Przetwarzanie języka naturalnego Fonetyka Morfologia Składnia Semantyka Pragmatyka Discourse

Podejścia do analizy języka Formalna teoria języka Modele probabilistyczne

Drzewo rozbioru (parse tree) Sentence VP NP Verb NP the man took the book

Plan wykładu Gramatyka i wywód Język formalny Gramatyki bezkontekstowe Notacja Backusa-Naura Idea zejść rekurencyjnych

(reguły zastępowania) S  1 S  S 1 Produkcje i wywód 1+ = { 1, 11, 111, ... } Symbol początkowy: S Produkcje: (reguły zastępowania) S  1 S  S 1 1) 2) Wywód:  1 1: S 1  2  2  1 111: S S 1 S 1 1 1 1 1

Inne produkcje S  A B A  1 A  A 1 B  0 B  B 0 Wywód:    10: S 1) 2) 3) 4) 5) Wywód:  1  2  4 10: S A B 1 B 1 0 100:

Gramatyka S  A B A  1 A  A 1 B  0 B  B 0 Symbol początkowy Symbole nieterminalne N = {S, A, B} Symbole terminalne T = {0, 1} Produkcje

Domknięcie relacji wywodu S  A B A  1 A  A 1 B  0 B  B 0 1) 2) 3) 4) 5) Wywód: S A B 1 B 1 0  1 2 4 S 1 0  + Z S można wywieść 10 stosując 1 lub więcej produkcji

Zbiór ciągów nad alfabetem S  A B A  1 A  A 1 B  0 B  B 0 Alfabet = Zbiór symboli terminalnych T = {0, 1} Zbiór ciągów nad alfabetem T*: Zbiór wszystkich ciągów skończonych zbudowanych z elementów zbioru T. Jeśli T = {0, 1} to T* = {, 0, 1, 00, 01, 10, 11, 000, ...} Jeśli T = {a, b, c} to T* = {, a, b, c, aa, ab, ac, ba, bb, bc, ...}

Gramatyka G = <S, N, T, P> Język formalny Gramatyka G = <S, N, T, P> S – Symbol początkowy N – Zbiór symboli nieterminalnych T – Zbiór symboli terminalnych P – Zbiór produkcji Język formalny L zdefiniowany przez gramatykę G: L(G) = {x  T*: S x  + }

Język formalny S  A B A  1 A  A 1 B  0 B  B 0 L(G) = {x  T*: S x 1) 2) 3) 4) 5) S  A B A  1 A  A 1 B  0 B  B 0 L(G) = {x  T*: S x  + } S A B 1 B  1 2 S 1 B  + Czy 1B należy do L(G) ? 11  T* Czy 11 należy do L(G) ?

Równoważność gramatyk Gramatyki G1 i G2 są równoważne wtedy i tylko wtedy, gdy L(G1) = L(G2) S  A B A  1 A  A 1 B  0 B  B 0 G1 S  S 0 S  A 0 A  1 A  A 1 G2 S  1 S S  1 A A  0 A  0 A G3

Klasyfikacja Chomsky’ego Noam Chomsky Gramatyki klasy 0 Gramatyki kontekstowe Gramatyki bezkontekstowe Gramatyki liniowe

Gramatyki liniowe S  S b S  A b A  a A  A a Prawoliniowa S  a S S  a B B  b B B  b Lewoliniowa Twierdzenie. Dla każdego wyrażenia regularnego istnieje gramatyka lewoliniowa (prawoliniowa) opisująca ten sam język.

Gramatyka bezkontekstowa 1. W  ( W ) 2. W  1 Jeden nieterminal

Gramatyka bezkontekstowa W  S W  W + S 3. S  C 4. S  S * C 5. C  L 6. C  ( W ) 7. L  1 8. L  2 9. L  3 Jeden nieterminal

Gramatyka kontekstowa S  a X Y S  a S X Y a X  a b b X  b b c X  c c b Y  b c c Y  c c

Rozszerzona notacja Backusa-Naura Produkcje + wyrażenia regularne <C> ::= ‘0’ | ‘1’ | ‘2’ | ‘3’ | ‘4’ | ‘5’ | ‘6’ | ‘7’ | ‘8’ | ‘9’ <L> ::= <C>+ <L> ::= <C>* <C> <S> ::= (<L> ‘*’)* <L> <W> ::= (<S> ‘+’)* <S> John Backus

Przejście z EBNF na gramatyki <J> ::= <A>* <B> J  B J  A J

Przejście z EBNF na gramatyki <L> ::= <C>* <C> <S> ::= (<L> ‘*’)* <L> <W> ::= (<S> ‘+’)* <S> C  ‘0’ C  ‘1’ C  ‘2’ . . . C  ‘9’

Przejście z EBNF na gramatyki <L> ::= <C>* <C> <S> ::= (<L> ‘*’)* <L> <W> ::= (<S> ‘+’)* <S> <J> ::= <A>* <B> J  B J  A J L  C L  C L

Idea zejść rekurencyjnych - Problem Język liczb binarnych L = {0, 1, 00, 01, 10, 11, ...}. Po liczbie jest spacja. Napisać program sprawdzania, czy x  L. N – liczba binarna (Numer binarny) C – Cyfra binarna N  C N N  C C  0 C  1 N = C+ N = {C, CC, CCC, ...} gdzie C = {0, 1}

Bufor wejściowy 1 ‘ ‘ Token N  C N N  C C  0 C  1 #define Bool int ‘ ‘ Token #define Bool int #define True 1 #define False 0 char Token; void Init(){ scanf("%c", &Token); return; } Bool Widzisz(char c){ return Token == c; void Nastepny(){ N  C N N  C C  0 C  1

Bufor wejściowy 1 Token N  C N N  C C  0 C  1 void main(){ Init(); Token void main(){ Init(); if (N()){ printf("OK\n"); }else{ printf("Error\n"); } return; N  C N N  C C  0 C  1

Bufor wejściowy 1 Token N  C N N  C C  0 C  1 Bool C(){ Token Bool C(){ if (Widzisz('0') || Widzisz('1')){ Nastepny(); return True; }else{ return False; } N  C N N  C C  0 C  1

Bufor wejściowy 1 Token N  C N N  C C  0 C  1 #define N_ogr ' ' Token #define N_ogr ' ' Bool N(){ Bool ok; ok= C(); if (ok && Widzisz(N_ogr)){ return ok; }else{ if (ok){ return N(); }else{ return False; } N  C N N  C C  0 C  1

Gramatyki bezkontekstowe Notacja Backusa-Naura Podsumowanie Wreszcie! Gramatyka formalna Wywód zdania Język formalny Gramatyki bezkontekstowe Notacja Backusa-Naura Idea zejść rekurencyjnych