Morfologická analýza Bezkontextové gramatiky

Podobné dokumenty
Vlastnosti Derivační strom Metody Metoda shora dolů Metoda zdola nahoru Pomocné množiny. Syntaktická analýza. Metody a nástroje syntaktické analýzy

Výpočetní modely pro rozpoznávání bezkontextových jazyků zásobníkové automaty LL(k) a LR(k) analyzátory

Čísla značí použité pravidlo, šipka směr postupu Analýza shora. Analýza zdola A 2 B 3 B * C 2 C ( A ) 1 a A + B. A Derivace zleva:

Turingovy stroje. Teoretická informatika Tomáš Foltýnek

Formální jazyky a gramatiky Teorie programovacích jazyků

PROGRAMOVACÍ JAZYKY A PŘEKLADAČE LL SYNTAKTICKÁ ANALÝZA DOKONČENÍ, IMPLEMENTACE.

Algoritmizace Dynamické programování. Jiří Vyskočil, Marko Genyg-Berezovskyj 2010

Vztah jazyků Chomskeho hierarchie a jazyků TS

Jednoznačné a nejednoznačné gramatiky

Základy algoritmizace. Pattern matching

doplněk, zřetězení, Kleeneho operaci a reverzi. Ukážeme ještě další operace s jazyky, na které je

Select sort: krok 1: krok 2: krok 3: atd. celkem porovnání. výběr nejmenšího klíče z n prvků vyžaduje 1 porovnání

Výhody a nevýhody jednotlivých reprezentací jsou shrnuty na konci kapitoly.

Implementace LL(1) překladů

Syntaxí řízený překlad

Cílem kapitoly je seznámit studenta se seznamem a stromem. Jejich konstrukci, užití a základní vlastnosti.

Automaty a gramatiky(bi-aag) Motivace. 1. Základní pojmy. 2 domácí úkoly po 6 bodech 3 testy za bodů celkem 40 bodů

AUTOMATY A GRAMATIKY. Pavel Surynek. Kontextové uzávěrové vlastnosti Turingův stroj Rekurzivně spočetné jazyky Kódování, enumerace

Řešení: PŘENESVĚŽ (N, A, B, C) = přenes N disků z A na B pomocí C

Prohledávání do šířky = algoritmus vlny

NPRG030 Programování I 3/2 Z --- NPRG031 Programování II --- 2/2 Z, Zk

Dynamické programování

Automaty a gramatiky

Metodický koncept k efektivní podpoře klíčových odborných kompetencí s využitím cizího jazyka ATCZ62 - CLIL jako výuková strategie na vysoké škole

Úvod do programování 6. hodina

Objektově orientované technologie Dynamický náhled Sekvenční diagram (Realizace UC) Daniela Szturcová

2 Formální jazyky a gramatiky

Zásobníkový automat. SlovoaaaabbbbpatřídojazykaL={a i b i i 1} a a a a b b b b

Autor: Jan Hošek

Strukturální rozpoznávání

Referát z předmětu Teoretická informatika

Programování 3. hodina. RNDr. Jan Lánský, Ph.D. Katedra informatiky a matematiky Fakulta ekonomických studií Vysoká škola finanční a správní 2015

63. ročník Matematické olympiády 2013/2014

Kapitola 6. LL gramatiky. 6.1 Definice LL(k) gramatik. Definice 6.3. Necht G = (N, Σ, P, S) je CFG, k 1 je celé číslo.

Zadání soutěžních úloh

Třídy složitosti P a NP, NP-úplnost

Intervalové stromy. Představme si, že máme posloupnost celých čísel p 0, p 1,... p N 1, se kterou budeme. 1. Změna jednoho čísla v posloupnosti.

Informatika navazující magisterské studium Přijímací zkouška z informatiky 2018 varianta A

Konečný automat. Jan Kybic.

Překladač sestrojující k regulárnímu výrazu ekvivalentní konečný automat Připomeňme si jednoznačnou gramatiku G pro jazyk RV({a, b})

AUTOMATY A GRAMATIKY

Složitost 1.1 Opera ní a pam ová složitost 1.2 Opera ní složitost v pr rném, nejhorším a nejlepším p ípad 1.3 Asymptotická složitost

Bezkontextové jazyky. Bezkontextové jazyky 1 p.1/39

Algoritmizace prostorových úloh


Metody návrhu algoritmů, příklady. IB111 Programování a algoritmizace

Rekurentní rovnice, strukturální indukce

1. Převeďte dané číslo do dvojkové, osmičkové a šestnáctkové soustavy: a) b)

Algoritmy a datové struktury

DUM č. 5 v sadě. 34. Inf-10 Praktická typografie s LO Writer/MS Word

Rekurentní rovnice, strukturální indukce

Syntaktická analýza. Implementace LL(1) překladů. Šárka Vavrečková. Ústav informatiky, FPF SU Opava

8) Jaké jsou důvody pro použití víceprůchodového překladače Dříve hlavně kvůli úspoře paměti, dnes spíše z důvodu optimalizace

bfs, dfs, fronta, zásobník, prioritní fronta, halda

Stromy, haldy, prioritní fronty

Hardwarová realizace konečných automatů

Obsah prezentace. Základní pojmy v teorii o grafech Úlohy a prohledávání grafů Hledání nejkratších cest

popel, glum & nepil 16/28

Věta 12.3 : Věta 12.4 (princip superpozice) : [MA1-18:P12.7] rovnice typu y (n) + p n 1 (x)y (n 1) p 1 (x)y + p 0 (x)y = q(x) (6)

NP-ÚPLNÉ PROBLÉMY. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze

Programování: základní konstrukce, příklady, aplikace. IB111 Programování a algoritmizace

Bezkontextové jazyky 2/3. Bezkontextové jazyky 2 p.1/27

3. Třídy P a NP. Model výpočtu: Turingův stroj Rozhodovací problémy: třídy P a NP Optimalizační problémy: třídy PO a NPO MI-PAA

Automaty a gramatiky. Uzávěrové vlastnosti v kostce R J BKJ DBKJ. Roman Barták, KTIML. Kvocienty s regulárním jazykem

Elegantní algoritmus pro konstrukci sufixových polí

Složitost Filip Hlásek

Zadání soutěžních úloh

bfs, dfs, fronta, zásobník, prioritní fronta, halda

Da D to t v o é v ty t py IB111: Datové typy

Konstrukce relace. Postupně konstruujeme na množině všech stavů Q relace i,

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

Content Aware Image Resizing

EKO-KOLONIE. Ústav informatiky, Filozoficko-přírodovědecká fakulta Slezské univerzity v Opavě 24.

Základy umělé inteligence

Implementace seznamů do prostředí DELPHI pomocí lineárního seznamu

Infrastruktura UML. Modelování struktury v UML. Superstruktura UML. Notace objektů. Diagramy objektů

Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost rozhraním a výjimkám.

Z. Sawa (VŠB-TUO) Teoretická informatika 5. listopadu / 43

Lineární spojový seznam (úvod do dynamických datových struktur)

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ

1 / 11. Slovíčka. Jiří Heralt. Dokumentace

PŘÍJMENÍ a JMÉNO: Login studenta: DATUM:

bfs, dfs, fronta, zásobník

Agent pracující v částečně pozorovatelném prostředí udržuje na základě senzorického modelu odhaduje, jak se svět může vyvíjet.

Prolog PROgramming in LOGic část predikátové logiky prvního řádu rozvoj začíná po roce 1970 Robert Kowalski teoretické základy Alain Colmerauer, David

Vyhledávání v textu. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava

Substituce a morfismy jednoduše

AVL stromy. pro každý uzel u stromu platí, že rozdíl mezi výškou jeho levého a pravého podstromu je nejvýše 1 stromy jsou samovyvažující

Algoritmy I, složitost

Soustavy lineárních rovnic

Komprese dat (Komprimace dat)

Řazení řádků ve vzestupném pořadí (A až Z nebo 0 až 9) nebo sestupném pořadí (Z až A nebo 9 až 0)

Binární soubory (datové, typované)

Úvod do informatiky. Miroslav Kolařík

Základní grafové algoritmy

Fakulta informačních technologií. Teoretická informatika

3. Prohledávání grafů

Návrh Designu: Radek Mařík

Inovace a zkvalitnění výuky prostřednictvím ICT Základy programování a algoritmizace úloh Třídění dat. Ing. Hodál Jaroslav, Ph.D. VY_32_INOVACE_26 04

Definice. B-stromu. B-strom řádu m je strom, kde každý uzel má maximálně m následníků a ve kterém platí:

Transkript:

Počítačové zpracování přirozeného jazyka Morfologická analýza Bezkontextové gramatiky Daniel Zeman http://ufal.mff.cuni.cz/course/popj1/

Bezkontextové gramatiky Zkratka CFG (context-free grammar) Čtveřice (T, N, S, P) T abeceda terminálních (koncových) symbolů, obvykle se používají malá písmena N abeceda neterminálních symbolů, obvykle se používají velká písmena S N startovní neterminální symbol P množina přepisovacích pravidel tvaru X ξ, kde X N a ξ (T N)* Řetězec lze v CFG odvodit, jestliže může vzniknout opakovanou aplikací pravidel na startovní symbol. 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 2

Bezkontextové gramatiky: příklad Neterminály začínají velkým písmenem, terminály malým. Slovo Stupeň Zápor Kmen Koncovka Kmen Koncovka Stupeň nej Zápor ne Kmen abatyš abbé abdikac abdikov Koncovka λ a ovi e em y u o ou Odlišit kmeny, které dovolují konkrétní skupiny afixů. Vyřešit nepravidelnosti, změny kmenových souhlásek Problém: gramatika by byla příliš veliká! 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 3

Morfologie a CFG: mnohem více vzorů, než jsme zvyklí žena žen vlád mát láv + a y ě u o ě ou y λ ám y y ách ami matka mat bab vlaj + ka ky ce ku ko ce kou ky ek kám ky ky kách kami banka ban + ka ky ce ku ko ce kou ky k kám ky ky kách kami 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 4

Morfologie a CFG: mnohem více vzorů, než jsme zvyklí barva bar lar kur bit pit + va vy vě vu vo vě vou vy ev vám vy vy vách vami tráva tr kr šť (ale ne už třeba k!) + áva ávy ávě ávu ávo ávě ávou ávy av ávám ávy ávy ávách ávami louka l m (ale ne už třeba prv, mrav!) + ouka ouky ouce ouku ouko ouce oukou ouky uk oukám ouky ouky oukách oukami 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 5

Bezkontextové gramatiky: příklad derivačního stromu Slovo neterminály Kmen Koncovka terminály abatyš e 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 6

Morfologická syntéza pomocí bezkontextové gramatiky Vstup: <l>matka<t>nnfs6-----a---- Očekávaný výstup: <f>matce Gramatika: TvarMatka KmenMatka KoncMatka KmenMatka mat bab vlaj KoncMatka MatS1 MatS2 MatS1 ka ; MatS2 ky ; MatS3 ce MatP1 ky ; MatP2 ek ; MatP3 kám 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 7

Morfologická syntéza pomocí bezkontextové gramatiky Doplňková dohoda: Názvy některých neterminálů nesou informaci z morfologických značek. Zde konkrétně: poslední dva znaky v neterminálech těsně pod neterminálem, jehož jméno začíná Konc. Teoreticky možný postup: Nejdřív analýza lemmatu matka. Zjistíme, že se skládá z mat + MatS1. Nahradíme za požadované MatS6. 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 8

Výsledek analýzy Po analýze ještě syntéza základního tvaru (dle dohody je to S1). TvarV nám řekne správný vzor. TvarV TvarV KmenK1V KoncKrV KmenK0V KoncV Xou NFVP2 NFVS1 sml u v λ smlouv a 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 9

Nedeterminismus Syntéza Vyjdeme ze startovního symbolu. V řetězci, který máme, vybereme nějaký neterminální symbol a přepíšeme ho na základě přepisovacího pravidla. Někdy (často!) si musíme pravidlo vybrat z několika, která přicházejí v úvahu. Jakmile se řetězec skládá pouze z terminálních symbolů, je hotov. Analýza Máme řetězec, v případě morfologické analýzy slovo. Hledáme části, které lze nahradit neterminály. Nedeterministické! Cíl: startovní symbol S. 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 10

Nedeterminismus TvarV13 KmenV13 KoncV13 KoncV13 V13PS1 V13PS2 V13PS3 V13PP1 V13PP2 V13PP3 KmenV13 nes ber maž jd V13PS1 u V13PS2 eš V13PS3 e V13PP1 eme em V13PP2 ete V13PP3 ou nesoucími V13PS1 V13PP3 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 11

Homonymie TvarV KmenK0V KoncV NFVS2 NFVP1 NFVP4 smlouv y NFVP5 smlouv y smlouv y smlouv y 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 12

Algoritmus analýzy podle bezkontextové gramatiky Shora dolů Na začátku máme jeden neterminál počáteční symbol. Rozbalit jeden neterminál: najít pravidlo, kde tvoří levou stranu, nahradit ho pravou stranou. Opakovat, dokud nemáme samé terminály. Pokud jsme nedostali analyzované slovo, vrátit se a pro některý neterminál vybrat jiné pravidlo. Pokud jsme analyzované slovo dostali, vrátit se také, může existovat i jiná analýza. Pokud jsme prošli všechny kombinace, známe množinu analýz. Je prázdná? Pak slovo není ve slovníku. 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 13

Algoritmus analýzy podle bezkontextové gramatiky Zdola nahoru Na začátku máme posl. terminálů analyzované slovo. Sbalit jeden neterminál: najít v analyzovaném řetězci pravou stranu některého jeho pravidla, nahradit jím. Opakovat, dokud lze něco najít. Pokud jsme nedostali počáteční symbol, vrátit se a pro některý neterminál vybrat jiné pravidlo. Pokud jsme počáteční symbol dostali, vrátit se také, může existovat i jiná analýza. Pokud jsme prošli všechny kombinace, známe množinu analýz. Je prázdná? Pak slovo není ve slovníku. 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 14

Analýza shora dolů Musíme zajistit směřování k terminálnímu řetězci, který analyzujeme. Řešení: průběžně kontrolovat, zda terminály ve stavu odpovídají počátku věty. Stav analýzy:řetězec terminálů a neterminálů, tečka označuje zkontrolovanou (přečtenou) část. 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 15

Příklad analýzy shora dolů Analyzujeme slovo matce. Tvar. TvarNFeka. KmenNFeka KoncNFeka. bár KoncNFeka!!! ZPĚT. bud KoncNFeka!!! ZPĚT. mat KoncNFeka mat. KoncNFeka mat. NFekaS1 mat. ka!!! ZPĚT mat. NFekaS2 mat. ky!!! ZPĚT mat. NFekaS3 mat. ce matce. 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 16

Pozorování o slovníku V praxi by se měl slovník oddělit a implementovat efektivněji. Poslední neterminál nad slovníkem je tzv. preterminál. Ten zná seznam řetězců, které pod něj patří, a umí ho prohledávat rychle. Implementace: hashovací tabulka, vyhledávací strom, trie 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 17

Pozorování o (levé) rekurzi dělat dělávat dělávávat dělávávávat dělávávávávat Tvar TvarV5 TvarV5 KmenV5 KoncV5 KmenV5 Iter KoncV5 KoncV5 V5INF V5PS1 V5PS2 KmenV5 děl lét Iter Iter áv áv V5INF at ati V5PS1 ám. Tvar. TvarV5 děl. Iter KoncV5 děl. Iter áv KoncV5 děl. Iter áv áv KoncV5 děl. Iter áv áv áv KoncV5 děl. Iter áv áv áv áv KoncV5 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 18

Rekurze a obrana proti zacyklení Zajistit, aby se rekurentní pravidla použila, až když to jinak nejde. Je-li více rekurentních pravidel, zajistit, aby se vyzkoušely všechny kombinace. Kombinací je konečně mnoho rekurze každého pravidla se dá zastavit, jakmile počet symbolů překročí počet terminálů na vstupu. Zakázat levou rekurzi, povolit jen pravou (Iter áv áv Iter). Použít analýzu zdola nahoru. 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 19

Příklad analýzy zdola nahoru Analyzujeme slovo matce. matce. NNíS7 atce. KoncNNí atce!!! ZPĚT. NFaD7 tce. KoncNFa tce!!! ZPĚT. KmenNFeka ce KmenNFeka. ce KmenNFeka. NFekaS3 KmenNFeka. KoncNFeka KmenNFeka KoncNFeka. TvarNFeka. Tvar. 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 20

Jak si zapamatovat možné odbočky V případě krachu se máme vrátit na poslední křižovatku, kde jsme vybírali z více pravidel. Musíme si tedy křižovatky pamatovat. Možnost: zásobník záložních stavů. Na křižovatce nevybírat jeden nový stav, vygenerovat všechny. Uložit je do zásobníku. Potom vybrat jeden stav ze zásobníku a s ním pokračovat. Při krachu ho zahodit a zkusit další ze zásobníku. 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 21

Bezkontextová analýza jako problém hledání cesty Analýza odpovídá obecnému problému hledání cesty stromem možností od kořene k listu (umělá inteligence). Prohledávání do hloubky: seznam možností je zásobník (LIFO). Prohledávání do šířky: seznam možností je fronta (FIFO). Prohledávání do šířky potřebuje více paměti na záložní stavy, ale má méně problémů při rekurzi. Ovšem na negramatických řetězcích se zacyklí také. 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 22

Analýza zdola nahoru: popis algoritmu Vzít stav, který je na řadě v zásobníku (frontě), a prohlásit ho za aktuální. Projít všechny podřetězce aktuálního stavu začínající nalevo od tečky a končící u tečky. Porovnat je s pravými stranami všech pravidel. Pro každý podřetězec, který se s nějakou pravou stranou shoduje, vygenerovat nový stav, v němž bude nalezená pravá strana nahrazena levou stranou příslušného pravidla; zbytek stavu se bude shodovat s aktuálním stavem. Uložit nově vygenerovaný stav do zásobníku. Nakonec ještě vygenerovat stav, který se od aktuálního stavu liší tím, že tečka je posunuta o 1 symbol doprava. Uložit ho do zásobníku. 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 23

Příklad analýzy zdola nahoru včetně zásobníku Gramatika Aktuální stav Zásobník S C D C c B C D d d C B b ab. a b c d b c 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 24

Příklad analýzy zdola nahoru včetně zásobníku Gramatika Aktuální stav Zásobník S C D C c B C D d d C B b ab. a b c d b c a. b c d b c 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 25

Příklad analýzy zdola nahoru včetně zásobníku Gramatika Aktuální stav Zásobník S C D C c B C D d d C B b ab a. b c d b c 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 26

Příklad analýzy zdola nahoru včetně zásobníku Gramatika Aktuální stav Zásobník S C D C c B C D d d C B b ab a. b c d b c a b. c d b c 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 27

Příklad analýzy zdola nahoru včetně zásobníku Gramatika Aktuální stav Zásobník S C D C c B C D d d C B b ab a b. c d b c 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 28

Příklad analýzy zdola nahoru včetně zásobníku Gramatika Aktuální stav Zásobník S C D C c B C D d d C B b ab a b. c d b c a b c. d b c B. c d b c a B. c d b c 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 29

Příklad analýzy zdola nahoru včetně zásobníku Gramatika Aktuální stav Zásobník S C D C c B C D d d C B b ab a b c. d b c B. c d b c a B. c d b c 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 30

Příklad analýzy zdola nahoru včetně zásobníku Gramatika Aktuální stav Zásobník S C D C c B C D d d C B b ab a b c. d b c a b c d. b c a b C. d b c B. c d b c a B. c d b c 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 31

Příklad analýzy zdola nahoru včetně zásobníku Gramatika Aktuální stav Zásobník S C D C c B C D d d C B b ab a b c d. b c a b C. d b c B. c d b c a B. c d b c 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 32

Příklad analýzy zdola nahoru včetně zásobníku Gramatika Aktuální stav Zásobník S C D C c B C D d d C B b ab a b c d. b c a b c d b. c a b c D. b c a b C. d b c B. c d b c a B. c d b c 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 33

Příklad analýzy zdola nahoru včetně zásobníku Gramatika Aktuální stav Zásobník S C D C c B C D d d C B b ab a b c d b. c a b c D. b c a b C. d b c B. c d b c a B. c d b c 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 34

Příklad analýzy zdola nahoru včetně zásobníku Gramatika Aktuální stav Zásobník S C D C c B C D d d C B b ab a b c d b. c a b c d b c. a b c d B. c a b c D. b c a b C. d b c B. c d b c a B. c d b c 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 35

Příklad analýzy zdola nahoru včetně zásobníku Gramatika Aktuální stav Zásobník S C D C c B C D d d C B b ab a b c d b c. a b c d B. c a b c D. b c a b C. d b c B. c d b c a B. c d b c 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 36

Příklad analýzy zdola nahoru včetně zásobníku Gramatika Aktuální stav Zásobník S C D C c B C D d d C B b ab a b c d b c. a b c d b C. a b c d B. c a b c D. b c a b C. d b c B. c d b c a B. c d b c 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 37

Příklad analýzy zdola nahoru včetně zásobníku Gramatika Aktuální stav Zásobník S C D C c B C D d d C B b ab a b c d b C. a b c d B. c a b c D. b c a b C. d b c B. c d b c a B. c d b c 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 38

Příklad analýzy zdola nahoru včetně zásobníku Gramatika Aktuální stav Zásobník S C D C c B C D d d C B b ab a b c d b C. a b c d B. c a b c D. b c a b C. d b c B. c d b c a B. c d b c 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 39

Příklad analýzy zdola nahoru včetně zásobníku Gramatika Aktuální stav Zásobník S C D C c B C D d d C B b ab a b c d B. c a b c D. b c a b C. d b c B. c d b c a B. c d b c 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 40

Příklad analýzy zdola nahoru včetně zásobníku Gramatika Aktuální stav Zásobník S C D C c B C D d d C B b ab a b c d B. c a b c d B c. a b c D. b c a b C. d b c B. c d b c a B. c d b c 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 41

Příklad analýzy zdola nahoru včetně zásobníku Gramatika Aktuální stav Zásobník S C D C c B C D d d C B b ab a b c d B c. a b c D. b c a b C. d b c B. c d b c a B. c d b c 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 42

Příklad analýzy zdola nahoru včetně zásobníku Gramatika Aktuální stav Zásobník S C D C c B C D d d C B b ab a b c d B c. a b c d B C. a b c D. b c a b C. d b c B. c d b c a B. c d b c 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 43

Příklad analýzy zdola nahoru včetně zásobníku Gramatika Aktuální stav Zásobník S C D C c B C D d d C B b ab a b c d B C. a b c D. b c a b C. d b c B. c d b c a B. c d b c 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 44

Příklad analýzy zdola nahoru včetně zásobníku Gramatika Aktuální stav Zásobník S C D C c B C D d d C B b ab a b c d B C. a b c d C. a b c D. b c a b C. d b c B. c d b c a B. c d b c 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 45

Příklad analýzy zdola nahoru včetně zásobníku Gramatika Aktuální stav Zásobník S C D C c B C D d d C B b ab a b c d C. a b c D. b c a b C. d b c B. c d b c a B. c d b c 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 46

Příklad analýzy zdola nahoru včetně zásobníku Gramatika Aktuální stav Zásobník S C D C c B C D d d C B b ab a b c d C. a b c D. a b c D. b c a b C. d b c B. c d b c a B. c d b c 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 47

Příklad analýzy zdola nahoru včetně zásobníku Gramatika Aktuální stav Zásobník S C D C c B C D d d C B b ab a b c D. a b c D. b c a b C. d b c B. c d b c a B. c d b c 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 48

Příklad analýzy zdola nahoru včetně zásobníku Gramatika Aktuální stav Zásobník S C D C c B C D d d C B b ab a b c D. a b c D. b c a b C. d b c B. c d b c a B. c d b c 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 49

Příklad analýzy zdola nahoru včetně zásobníku Gramatika Aktuální stav Zásobník S C D C c B C D d d C B b ab a b c D. b c a b C. d b c B. c d b c a B. c d b c 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 50

Příklad analýzy zdola nahoru včetně zásobníku Gramatika Aktuální stav Zásobník S C D C c B C D d d C B b ab a b c D. b c a b c D b. c a b C. d b c B. c d b c a B. c d b c 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 51

Příklad analýzy zdola nahoru včetně zásobníku Gramatika Aktuální stav Zásobník S C D C c B C D d d C B b ab a b c D b. c a b C. d b c B. c d b c a B. c d b c 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 52

Příklad analýzy zdola nahoru včetně zásobníku Gramatika Aktuální stav Zásobník S C D C c B C D d d C B b ab a b c D b. c a b c D b c. a b c D B. c a b C. d b c B. c d b c a B. c d b c 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 53

Tutéž pravou stranu hledáme na stejném místě stále znova! Gramatika Aktuální stav Zásobník S C D C c B C D d d C B b ab a b c d b. c a b c D b. c a b C d b. c B c d b. c a B c d b. c a b c D b c. a b c D B. c a b C. d b c B. c d b c a B. c d b c 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 54

Složitost analýzy Popsaný algoritmus má exponenciální složitost (musíme projít všechny cesty ve stromu). Problém: opakovaně hledáme stejnou pravou stranu na stejném místě. Existuje polynomiální algoritmus: CYK, chart parser. 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 55

Chart parser Chart [ča:t] = přehled, diagram Hlavní datová struktura v chart parseru. Pamatuje si, které pravé strany už byly rozpoznány a kde. Poznámka: Česky by se tedy chart parser dal přeložit jako analýza s přehledem, ale tento název se nepoužívá. I včeštině je tato metoda známa pod anglickým názvem. Chart parsing je speciální případ tzv. dynamického programování. 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 56

Nehledat všechny kombinace. Evidovat každou složku zvlášť! Gramatika Řetězec Chart (Přehled) S C D C c B C D d d C B b ab 0a 1 b 2 c 3 d 4 b 5 c 6 B 0 2 B 1 2 C 2 3 C 1 3 S 0 6 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 57

Stádium rozpracovanosti Vstup se čte po jednotlivých terminálech, protože za každým z nich může být rozpoznána pravá strana nějakého pravidla. V přehledu je navíc seznam pravidel, jejichž pravé strany jsou rozečteny: Tečka označuje, která část pravé strany byla už rozpoznána a která ještě ne. Opět známe pozice ve vstupním řetězci, kde pravá strana začala a kde zatím končí (kde je tečka). Příklad: (B -> a. b) (0;1) 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 58

Přehled (chart) Agenda. Seznam složek, které už byly ve vstupu rozpoznány a čekají na zpracování. U každé je uveden rozsah (počáteční a koncová pozice ve vstupu). Přehled aktivních přechodů, tj. pravých stran, jejichž část už byla ve vstupu rozpoznána. U každé je rozsah (počáteční a koncová pozice pravé strany) a pozice, ke které už byla pravá strana rozpoznána (tečka). Přehled zpracovaných složek. U každé je uveden rozsah. Sem se přesouvají složky z agendy po zpracování. 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 59

Algoritmus chart parseru 1. Na začátku je agenda, přehled aktivních přechodů i zpracovaných složek prázdný. 2. Je-li agenda prázdná, přečíst další terminál ze vstupu a přidat ho do agendy. 3. Pokud je agenda prázdná a vstup přečten, skočit na 10. 4. Vybrat z agendy novou aktuální složku (C,i,j). Složka ve vstupním řetězci sahá od pozice i do pozice j. 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 60

Algoritmus chart parseru 5. Projít pravidla gramatiky. Pro každé pravidlo tvaru X C X 1 X n přidat do přehledu nový aktivní přechod z i do i tvaru X C X 1 X n. (Nová pravidla, která zde začínají.) 6. Pro každý aktivní přechod z k do i tvaru X X 1 C X n přidat do přehledu nový aktivní přechod z k do j tvaru X X 1 C X n. (Pravidla, která zde pokračují.) 7. Pro každý aktivní přechod z k do j tvaru X X 1 X n C přidat do agendy novou složku X s rozsahem od k do j, pokud tato již není v agendě nebo v seznamu zpracovaných frází. (Pravidla, která zde končí.) 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 61

Algoritmus chart parseru 8. Přesunout (C,i,j) z agendy do seznamu zpracovaných složek. Pokud C=S a i,j pokrývá celý vstup, byla nalezena analýza vstupu. Mohou však existovat i jiné analýzy. 9. Vrátit se na krok 2. 10. Jestliže seznam zpracovaných složek obsahuje složku (S,0,n), kde n je počet terminálů na vstupu, analýza byla úspěšná. 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 62

Složitost chart parsingu Polynomiální (O(gn 3 ), n je počet terminálů na vstupu, g je počet pravidel v gramatice). Rozsahů složek (od i do j) je (n+1) 2. V jednom rozsahu lze nalézt nejvýše tolik složek, kolik pravidel má gramatika. Každé pravidlo můžeme mít rozečtené v nejvýše n+1 stavech (počet možných umístění tečky). 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 63

Zachovat všechny fáze rozpracovanosti pravidel! 6.Pro každý aktivní přechod z k do i tvaru X X 1 C X n přidat do přehledu nový aktivní přechod z k do j tvaru X X 1 C X n. (Pravidla, která zde pokračují.) Po posunutí tečky v pravidle ponechat v přehledu i dosavadní fázi pravidla! Co když bude později rozpoznána stejná složka začínající na stejném místě, ale delší? 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 64

Aplikujeme tohle pravidlo A a a A B b A Příklad B b A (0,1) baac na tenhle vstup 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 65

Aplikujeme tohle pravidlo Příklad Poznáme (A,1,2), ale tento aktivní přechod nezahodíme! A a a A B b A B b A (0,1) A a (1,2) B b A (0,2) baac na tenhle vstup 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 66

Aplikujeme tohle pravidlo Příklad Poznáme (A,1,2), ale tento aktivní přechod nezahodíme! A a a A B b A baac na tenhle vstup B b A (0,1) A a (1,2) B b A (0,2) A a (2,3) A a A (1,3) B b A (0,3) Později poznáme ještě (A,1,3) a budeme chtít vytvořit tohle! 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 67

Jak si zapamatovat analýzu? Zatím pouze umíme zjistit, zda analýza existuje, tj. zda řetězec patří do jazyka popsaného gramatikou. Potřebujeme znát i hierarchii složek ( derivační strom ). Z ní přečteme to, co má být výstupem analýzy: Tvar ( TvarNFeka ( KmenNFeka ( m a t ) KoncNFeka ( NFekaS1 ( k a ) ) ) ) 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 68

Jak si zapamatovat analýzu? 7.Pro každý aktivní přechod z k do j tvaru X X 1 X n C přidat do agendy novou složku X s rozsahem od k do j, pokud tato již není v agendě nebo v seznamu zpracovaných frází. S každou složkou vláčet i informaci o tom, jak vznikla. Totéž u každého rozpracovaného pravidla. Pozor, stejná složka se stejným rozsahem mohla vzniknout několika alternativními způsoby! 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 69

Jak si zapamatovat analýzu? S A Ab A a ab řetězec ab S ( A ( a b ) ) S ( A ( a ) b ) $agenda[$i][$j]{$n}{slozeni}[$k][$l] složka začíná na pozici $i složka končí na pozici $j složka má neterminál $N ke každé složce máme tyto údaje: složení popis ze všech způsobů, jak složku složit, chceme ten $k-tý složení je seznam odkazů na podsložky, z nich nás zajímá $l-tá podsložka $agenda[0][2]{"s"}{popis} = "S:0:2"; push(@slozeni, [$agenda[0][1]{"a"}, $agenda[1][2]{"b"}]); push(@slozeni, [$agenda[0][2]{"a"}]); push(@{$agenda[0][2]{"s"}{slozeni}}, \@slozeni); # Vypsat j-tou složku i-tého složení složky S:0:2. print $agenda[0][2]{"s"}{slozeni}[$i][$j]{popis}; PERL 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 70

Příklad chart parsingu Gramatika S C D C c B C D d d C B b ab a b c d b c c 6 b 5 d 4 c 3 b 2 a 1 0 1 2 3 4 5 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 71

Příklad chart parsingu Gramatika S C D C c B C D d d C B b ab a b c d b c c C 6 b B 5 d D 4 c C 3 b B 2 a 1 0 1 2 3 4 5 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 72

Příklad chart parsingu Gramatika S C D C c B C D d d C B b ab a b c d b c B C S C c C 6 b B 5 d D 4 c C 3 b B 2 a 1 0 1 2 3 4 5 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 73

Příklad chart parsingu Gramatika S C D C c B C D d d C B b ab a b c d b c D C c C 6 b B 5 S S d D 4 C C c C 3 B b B 2 a 1 0 1 2 3 4 5 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 74

Příklad chart parsingu Gramatika S C D C c B C D d d C B b ab a b c d b c S D C c C 6 b B 5 S S S d D 4 C C c C 3 B b B 2 a 1 0 1 2 3 4 5 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 75

Příklad chart parsingu Gramatika S C D C c B C D d d C B b ab a b c d b c S S D C c C 6 b B 5 S S S d D 4 C C c C 3 B b B 2 a 1 0 1 2 3 4 5 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 76

Příklad chart parsingu Gramatika S C D C c B C D d d C B b ab a b c d b c S S S D C c C 6 b B 5 S S S d D 4 C C c C 3 B b B 2 a 1 0 1 2 3 4 5 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 77

Bezkontextové gramatiky pro morfologickou analýzu: shrnutí Hezky popisují opravdu pravidelné jevy. Zvládají dlouhé závislosti! Pro pravidelné nepravidelnosti někdy potřeba operace, které CFG přímo nepodporují, nutno simulovat. Neúnosně roste velikost gramatiky. Vysoký počet vzorů potřebujeme rozumné nástroje pro údržbu. Má-li uživatel přiřadit nové slovo ke vzoru, nemůžeme chtít, aby procházel 30 velmi podobných vzorů, které se liší třeba jen jedním drobným rysem. 12.11.2009 http://ufal.mff.cuni.cz/course/popj1 78