Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Morfologická analýza Bezkontextové gramatiky Daniel Zeman Počítačové zpracování přirozeného jazyka.

Podobné prezentace


Prezentace na téma: "Morfologická analýza Bezkontextové gramatiky Daniel Zeman Počítačové zpracování přirozeného jazyka."— Transkript prezentace:

1 Morfologická analýza Bezkontextové gramatiky Daniel Zeman Počítačové zpracování přirozeného jazyka

2 http://ufal.mff.cuni.cz/course/popj12 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.

3 http://ufal.mff.cuni.cz/course/popj13 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á!

4 http://ufal.mff.cuni.cz/course/popj14 Bezkontextové gramatiky: příklad derivačního stromu abatyše KmenKoncovka Slovo neterminály terminály

5 http://ufal.mff.cuni.cz/course/popj15 Bezkontextové gramatiky: změny kmenových souhlásek Změny kmenových souhlásek — možné řešení: –KmenNF1  m a t K | ž e N | … –K  k | c –N  n | ň –KoncovkaNF1  a | y | e | … Přijme matka, matky, matce, ale i *matca, *matcy, *matke. Buď doplňková pravidla mimo gramatiku (např. před „e“ měkká souhláska, všude jinde tvrdá), nebo zesložitění gramatiky.

6 http://ufal.mff.cuni.cz/course/popj16 Bezkontextové gramatiky: změny kmenových souhlásek Přesnější gramatika pro změnu kmenových souhlásek: –Slovo  KmenNF1Normální KoncovkaNF1Normální | KmenNF1Měkký KoncovkaNF1Měkká –KmenNF1Normální  m a t k | ž e n –KmenNF1Měkký  m a t c | ž e ň –KoncovkaNF1Normální  a | y | u | o | ou | | ám | ách | ami –KoncovkaNF1Měkká  e Nebezpečí, aby se velikost gramatiky nepřiblížila velikosti výčtu všech tvarů. Zbytečně opakujeme části „m a t“, „ž e“.

7 http://ufal.mff.cuni.cz/course/popj17 Bezkontextové gramatiky: vkládání / mazání e Navíc ještě vkládání e: matek –Slovo  KmenNF1Normální KoncovkaNF1Normální | KmenNF1Měkký KoncovkaNF1Měkká | KmenNF1VklE –KmenNF1Normální  m a t k | ž e n –KmenNF1Měkký  m a t c | ž e ň –KmenNF1VklE  m a t e k | ž e n –KoncovkaNF1Normální  a | y | u | o | ou | ám | ách | ami –KoncovkaNF1Měkká  e

8 http://ufal.mff.cuni.cz/course/popj18 Bezkontextové gramatiky: analýza a syntéza 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.

9 http://ufal.mff.cuni.cz/course/popj19 Morfologická syntéza pomocí bezkontextové gramatiky Vstup: matka NNFS6-----A---- Očekávaný výstup: 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

10 http://ufal.mff.cuni.cz/course/popj110 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.

11 http://ufal.mff.cuni.cz/course/popj111 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 http://ufal.mff.cuni.cz/course/popj112 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

13 http://ufal.mff.cuni.cz/course/popj113 Všeho moc škodí Exploze vzorů Dva nezávislé problémy: –Měkčení kmenové souhlásky ha/ze, ga/ze, cha/še, ka/ce, ra/ře, da/dě, ta/tě, na/ně, ba/bě, fa/fě, ma/mě, pa/pě, va/vě … 13 –Krácení kmenové samohlásky láva/láv, tráva/trav, louka/luk, síla/sil, díra/děr … 5 –Pro původně 1 vzor žena dostáváme = × 5 = 65 Nějak oddělit řešení obou problémů!

14 http://ufal.mff.cuni.cz/course/popj114 Měkčení a krácení KoncV  NFVS1 | NFVS2 | NFVS3 | NFVS4 | NFVS5 | NFVS6 | NFVS7 | NFVP1 | NFVP3 | NFVP4 | NFVP5 | NFVP6 | NFVP7 KoncKrV  NFVP2 KmenV  láv | sův | tráv | smlouv | … KmenKrV  láv | sův | trav | smluv | … TvarV  KmenV KoncV  KmenKrV KoncKrV Nevýhoda: Po analýze se nedozvíme, že kmeny smlouv a smluv odpovídají stejnému lemmatu!

15 http://ufal.mff.cuni.cz/course/popj115 Opakování doplňkové dohody Dosavadní doplňková dohoda: –Neterminály bezprostředně pod neterminálem začínajícím na Konc kódují morfologické značky. Např. neterminál začínající na NFV odpovídá značce NNF??-----A----. Součástí dohody je tabulka korespondencí značek a neterminálů. Jedné značce odpovídá několik neterminálů od různých skloňovacích vzorů! –Poslední dva znaky neterminálů pod Konc kódují číslo a pád. Např. NFVP2 odpovídá číslo P a pád 2, celá značka je pak NNFP2-----A----.

16 http://ufal.mff.cuni.cz/course/popj116 Rozšíření doplňkové dohody Přidat do dohody: –Neterminály začínající na X obsahují znaky, které by na daném místě byly v kmeni u lemmatu. Např. neterminál Xá nám řekne, že v lemmatu by na tomto místě bylo dlouhé á, přestože pro tvar, který právě analyzujeme, se Xá přepíše na krátké a.

17 http://ufal.mff.cuni.cz/course/popj117 Měkčení a krácení KoncV  NFVS1 | NFVS2 | NFVS3 | NFVS4 | NFVS5 | NFVS6 | NFVS7 | NFVP1 | NFVP3 | NFVP4 | NFVP5 | NFVP6 | NFVP7 KoncKrV  NFVP2 Xá  a Xou  u KmenV  láv | sův | … KmenK0V  tráv | smlouv | … KmenK1V  tr Xá v | sml Xou v | … TvarV  KmenV KoncV | KmenV KoncKrV  KmenK0V KoncV | KmenK1V KoncKrV

18 http://ufal.mff.cuni.cz/course/popj118 Výsledek analýzy Na konci analýzy podle doplňkové dohody přečíst kmen lemmatu a morfologickou značku. smluvλ Xou KmenK1V NFVP2 KoncKrV TvarV

19 http://ufal.mff.cuni.cz/course/popj119 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. smluvλ Xou KmenK1V NFVP2 KoncKrV TvarV smlouva KmenK0V NFVS1 KoncV TvarV

20 http://ufal.mff.cuni.cz/course/popj120 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 nesou cími V13PS1 V13PP3

21 http://ufal.mff.cuni.cz/course/popj121 Homonymie smlouvy KmenK0V NFVS2 KoncV TvarV smlouvy NFVP1 smlouvy NFVP4 smlouvy NFVP5

22 http://ufal.mff.cuni.cz/course/popj122 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.

23 http://ufal.mff.cuni.cz/course/popj123 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.

24 http://ufal.mff.cuni.cz/course/popj124 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.

25 http://ufal.mff.cuni.cz/course/popj125 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.

26 http://ufal.mff.cuni.cz/course/popj126 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…

27 http://ufal.mff.cuni.cz/course/popj127 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 …

28 http://ufal.mff.cuni.cz/course/popj128 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.

29 http://ufal.mff.cuni.cz/course/popj129 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.

30 http://ufal.mff.cuni.cz/course/popj130 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.

31 http://ufal.mff.cuni.cz/course/popj131 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é.

32 http://ufal.mff.cuni.cz/course/popj132 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.

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

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

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

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

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

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

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

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

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

42 http://ufal.mff.cuni.cz/course/popj142 Příklad analýzy zdola nahoru včetně zásobníku Gramatika S  C D C  c | B C D  d | d C B  b | ab Zásobník 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 Aktuální stav a b c d. b c

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

44 http://ufal.mff.cuni.cz/course/popj144 Příklad analýzy zdola nahoru včetně zásobníku Gramatika S  C D C  c | B C D  d | d C B  b | ab Zásobník 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 Aktuální stav a b c d b. c

45 http://ufal.mff.cuni.cz/course/popj145 Příklad analýzy zdola nahoru včetně zásobníku Gramatika S  C D C  c | B C D  d | d C B  b | ab Zásobník 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 Aktuální stav a b c d b c.

46 http://ufal.mff.cuni.cz/course/popj146 Příklad analýzy zdola nahoru včetně zásobníku Gramatika S  C D C  c | B C D  d | d C B  b | ab Zásobník 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 Aktuální stav a b c d b c.

47 http://ufal.mff.cuni.cz/course/popj147 Příklad analýzy zdola nahoru včetně zásobníku Gramatika S  C D C  c | B C D  d | d C B  b | ab Zásobník 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 Aktuální stav a b c d b C.

48 http://ufal.mff.cuni.cz/course/popj148 Příklad analýzy zdola nahoru včetně zásobníku Gramatika S  C D C  c | B C D  d | d C B  b | ab Zásobník 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 Aktuální stav a b c d b C.

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

50 http://ufal.mff.cuni.cz/course/popj150 Příklad analýzy zdola nahoru včetně zásobníku Gramatika S  C D C  c | B C D  d | d C B  b | ab Zásobník 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 Aktuální stav a b c d B. c

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

52 http://ufal.mff.cuni.cz/course/popj152 Příklad analýzy zdola nahoru včetně zásobníku Gramatika S  C D C  c | B C D  d | d C B  b | ab Zásobník 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 Aktuální stav a b c d B c.

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

54 http://ufal.mff.cuni.cz/course/popj154 Příklad analýzy zdola nahoru včetně zásobníku Gramatika S  C D C  c | B C D  d | d C B  b | ab Zásobník 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 Aktuální stav a b c d B C.

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

56 http://ufal.mff.cuni.cz/course/popj156 Příklad analýzy zdola nahoru včetně zásobníku Gramatika S  C D C  c | B C D  d | d C B  b | ab Zásobník 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 Aktuální stav a b c d C.

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

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

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

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

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

62 http://ufal.mff.cuni.cz/course/popj162 Příklad analýzy zdola nahoru včetně zásobníku Gramatika S  C D C  c | B C D  d | d C B  b | ab Zásobník 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 Aktuální stav a b c D b. c

63 http://ufal.mff.cuni.cz/course/popj163 Tutéž pravou stranu hledáme na stejném místě stále znova! Gramatika S  C D C  c | B C D  d | d C B  b | ab Zásobník 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 Aktuální stav 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 …

64 http://ufal.mff.cuni.cz/course/popj164 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.

65 http://ufal.mff.cuni.cz/course/popj165 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í.

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

67 http://ufal.mff.cuni.cz/course/popj167 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)

68 http://ufal.mff.cuni.cz/course/popj168 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í.

69 http://ufal.mff.cuni.cz/course/popj169 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 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.

70 http://ufal.mff.cuni.cz/course/popj170 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čí.)

71 http://ufal.mff.cuni.cz/course/popj171 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 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á.

72 http://ufal.mff.cuni.cz/course/popj172 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).

73 http://ufal.mff.cuni.cz/course/popj173 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ší?

74 http://ufal.mff.cuni.cz/course/popj174 Příklad A  a | a A B  b A … baac 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) … Aplikujeme tohle pravidlo na tenhle vstup Poznáme (A,1,2), ale tento aktivní přechod nezahodíme! Později poznáme ještě (A,1,3) a budeme chtít vytvořit tohle!

75 http://ufal.mff.cuni.cz/course/popj175 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 ) ) ) )

76 http://ufal.mff.cuni.cz/course/popj176 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!

77 http://ufal.mff.cuni.cz/course/popj177 Jak si zapamatovat analýzu? S  A | Ab A  a | ab řetězec „ab“ –S ( A ( a b ) ) –S ( A ( a ) b ) $agenda[0][2]{"S"}{popis} = "S:0:2"; [$agenda[0][1]{"A"}, $agenda[1][2]{"b"}]); [$agenda[0][2]{"A"}]); # Vypsat j-tou složku i-tého složení složky S:0:2. print $agenda[0][2]{"S"}{slozeni}[$i][$j]{popis}; $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

78 http://ufal.mff.cuni.cz/course/popj178 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 c6 b5 d4 c3 b2 a

79 http://ufal.mff.cuni.cz/course/popj179 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 cCcC 6 bBbB 5 dDdD 4 cCcC 3 bBbB 2 a

80 http://ufal.mff.cuni.cz/course/popj180 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 cCcC 6 bBbB 5 S dDdD 4 C cCcC 3 B bBbB 2 a

81 http://ufal.mff.cuni.cz/course/popj181 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 DC cCcC 6 bBbB 5 SS dDdD 4 CC cCcC 3 B bBbB 2 a

82 http://ufal.mff.cuni.cz/course/popj182 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 SDC cCcC 6 bBbB 5 SSS dDdD 4 CC cCcC 3 B bBbB 2 a

83 http://ufal.mff.cuni.cz/course/popj183 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 SSDC cCcC 6 bBbB 5 SSS dDdD 4 CC cCcC 3 B bBbB 2 a

84 http://ufal.mff.cuni.cz/course/popj184 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 SSSDC cCcC 6 bBbB 5 SSS dDdD 4 CC cCcC 3 B bBbB 2 a

85 http://ufal.mff.cuni.cz/course/popj185 Bezkontextové gramatiky pro morfologickou analýzu: shrnutí Hezky popisují opravdu pravidelné jevy.  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.

86 http://ufal.mff.cuni.cz/course/popj186 Domácí úkol CHRT Vstup: –Bezkontextová gramatika v dohodnutém formátu. –Text (slovo, věta) v dohodnutém formátu. Výstup: –Analýza textu (odvozovací strom). Napište v Perlu chart parser, který na základě gramatiky rozebere vstupní text a na výstup vypíše buď derivační strom, nebo informaci, že text nelze danou gramatikou analyzovat.

87 http://ufal.mff.cuni.cz/course/popj187 CHRT – formát vstupu Text i gramatika jsou v UTF-8. Text na STDIN, gramatika v $ARGV[0]. –Text je jediné slovo. Každý znak je samostatným terminálem. Mezerový znak nebo EOF ukončuje vstup. Alternativně rozšířená verze: text je delší, rozsekaný na slova, samostatně analyzovat vše od |.*?>) do <.

88 http://ufal.mff.cuni.cz/course/popj188 CHRT – formát gramatiky Jedno pravidlo na jednom řádku. Pravé strany ke stejné levé straně se neshlukují, vždy samostatné pravidlo. Neterminál se pozná tak, že se v některém pravidle vyskytuje na levé straně. –Neterminál na levé straně prvního pravidla je počáteční symbol. Jednotlivé symboly (terminály i neterminály) na pravé straně jsou odděleny jedním nebo více mezerovými znaky. Zvláštní znaky: -> (přesně takhle za sebou). Pokud by se měly vyskytnout na pravé straně nějakého pravidla (jako terminály), bude mezi nimi mezera.

89 http://ufal.mff.cuni.cz/course/popj189 CHRT – příklad gramatiky S -> C D S -> Ab1 B C D C -> m a t D -> k a D -> k y D -> c e D -> k u …

90 http://ufal.mff.cuni.cz/course/popj190 CHRT – formát výstupu Seznam všech nalezených složek, které jsou součástí alespoň jedné z analýz. U každé složky uvést rozsah. U každé složky uvést odkazy na bezprostřední podsložky, ze kterých se může skládat. Potenciálně obrovská množina derivačních stromů je tedy sbalena do relativně malého seznamu složek. Jestliže vstupní řetězec neodpovídá gramatice, vrátit jedinou složku s vyznačením této chyby.

91 http://ufal.mff.cuni.cz/course/popj191 CHRT – formát výstupu (id může být libovol) a (terminál) ab a bflmpsvz (negramatický vstup)


Stáhnout ppt "Morfologická analýza Bezkontextové gramatiky Daniel Zeman Počítačové zpracování přirozeného jazyka."

Podobné prezentace


Reklamy Google