1 / 91

Morfologická analýza Bezkontextové gramatiky

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)

Download Presentation

Morfologická analýza Bezkontextové gramatiky

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

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

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

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

  6. 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“. http://ufal.mff.cuni.cz/course/popj1

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

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

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

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

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

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

  13. 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 • 13 + 5 = 18 • 13 × 5 = 65 • Nějak oddělit řešení obou problémů! http://ufal.mff.cuni.cz/course/popj1

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

  15. 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čceNNF??-----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----. http://ufal.mff.cuni.cz/course/popj1

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

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

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

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

  20. V13PS1 V13PP3 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 http://ufal.mff.cuni.cz/course/popj1

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

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

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

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

  25. 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 .  Příklad analýzy shora dolů http://ufal.mff.cuni.cz/course/popj1

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

  27. 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 … Pozorování o (levé) rekurzi http://ufal.mff.cuni.cz/course/popj1

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

  29. 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 . Příklad analýzy zdola nahoru http://ufal.mff.cuni.cz/course/popj1

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

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

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

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

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

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

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

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

  38. 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 Příklad analýzy zdola nahoru včetně zásobníku Aktuální stav a b . c d b c http://ufal.mff.cuni.cz/course/popj1

  39. 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 Příklad analýzy zdola nahoru včetně zásobníku Aktuální stav a b c . d b c http://ufal.mff.cuni.cz/course/popj1

  40. 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 Příklad analýzy zdola nahoru včetně zásobníku Aktuální stav a b c . d b c http://ufal.mff.cuni.cz/course/popj1

  41. 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 Příklad analýzy zdola nahoru včetně zásobníku Aktuální stav a b c d . b c http://ufal.mff.cuni.cz/course/popj1

  42. 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 Příklad analýzy zdola nahoru včetně zásobníku Aktuální stav a b c d . b c http://ufal.mff.cuni.cz/course/popj1

  43. 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 Příklad analýzy zdola nahoru včetně zásobníku Aktuální stav a b c d b . c http://ufal.mff.cuni.cz/course/popj1

  44. 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 Příklad analýzy zdola nahoru včetně zásobníku Aktuální stav a b c d b . c http://ufal.mff.cuni.cz/course/popj1

  45. 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 Příklad analýzy zdola nahoru včetně zásobníku Aktuální stav a b c d b c . http://ufal.mff.cuni.cz/course/popj1

  46. 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 Příklad analýzy zdola nahoru včetně zásobníku Aktuální stav a b c d b c . http://ufal.mff.cuni.cz/course/popj1

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

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

  49. 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 Příklad analýzy zdola nahoru včetně zásobníku Aktuální stav a b c d B . c http://ufal.mff.cuni.cz/course/popj1

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

More Related