http:// Metody morfologické analýzy Seznam slovních tvarů –books: book-1/NNS, book-2/VBZ Zadrátovat do programu –hlavní slovník: book / pravidelné sloveso, book / pravidelné podstatné jméno, nic / přídavné jméno: nice, … –koncovky: pravidelné sloveso + s / VBZ, pravidelné podstatné jméno + s / NNS, přídavné jméno / JJR, … Konečné automaty a převodníky –mnoho slovníků s ukazateli, kudy pokračovat: reg-kmen-lex reg-koncovka-lex –fonologie je zahrnuta, ale často jasně oddělena
http:// Metody morfologické analýzy Bezkontextové gramatiky, unifikační gramatiky, … –řeší spíše lingvistické než počítačové problémy –ve skutečnosti vhodnější pro morfologickou syntézu (generování) DATR
http:// Seznamy slovních tvarů Málo specifického kódu, velké nároky na paměť pro slovník. Funguje pro angličtinu. –Problém se zadáváním jazyka: opakované psaní kmenů slov. Pro jazyky, jako je angličtina, je míra opakování snad únosná. –Počet tvarů v angličtině řádově ~ počet lemmat (pár set tisíc). –Čeština: 700 tisíc lemmat (i odvozených), milióny tvarů (asi 20M, ovšem řada homonymních a mnohé zřídka používané) Implementace: vyhledávací stromy, hašovací tabulky (Perl!), trie.
http:// Seznamy slovních tvarů: vyvážené vyhledávací stromy bookbooks bookable booking bookedbookish booklet book-1+s (podst. jméno + množné číslo) nebo book-2+s (sloveso + 3. osoba)
http:// Seznamy slovních tvarů: hašovací tabulky Hašovací funkce spočitatelná pro libovolný řetězec, s omezeným oborem hodnot. Například (slovo = a 1 a 2 …a n ; velikost tabulky = x, nejlépe prvočíslo): Tedy v céčku: hsh = 0 for(i=0;i<n;i++) hsh = hsh*2+(int)a[i]; hsh %= x;
http:// Seznamy slovních tvarů: hašovací tabulky Tabulka statické velikosti, indexem je hašovací hodnota. Z prvku s indexem i vede odkaz na seznam všech slov ve slovníku, jejichž hašovací hodnota je i. U slov je uvedeno jejich lemma a značka. Hašovací funkce pokud možno taková, aby rozprostírala řetězce do tabulky rovnoměrně. Tabulka pokud možno co největší, jaká se vejde do paměti. Výsledek: rychlé vkládání, vyhledávání i odstraňování. Perl už má implementováno, stačí $slovník{$slovo}=$lemma.$značka
http:// Seznamy slovních tvarů: trie Reprezentace části slovníku: –a, a, neurčitý člen –an, a, neurčitý člen před samohláskou –and, and, spojka (a) –ant, ant, podstatné jméno (mravenec) –at, at, předložka (v) t t a n d at,Prep a,Art a,Artv ant,NN and,Conj
http:// Přímé kódování, vnitřní segmentace slova O něco více specifického kódu v programu. Pro jiný jazyk nebo pro přidání dosud nezpracovaných jevů může být obtížné upravit. O něco méně paměťových nároků na slovník. Jeden kmen už se kóduje jen jednou, má u sebe uveden vzor skloňování (časování, stupňování), povolené předpony a přípony. I tak je možné slovník ukládat podobným způsobem jako seznam slovních tvarů: hašovací tabulkou, trie, vyhledávacím stromem, …
http:// Přímé kódování, vnitřní segmentace slova (Word segmentation je ale oddělování slov, například při zpracování řeči — neplést!) Oddělit předpony (do-, od-, roz-, pře-, …, ne-). Pro všechny použitelné koncovky opakovat: –Rozdělit slovo na kmen a koncovku. –Podívat se, zda takový kmen existuje ve slovníku. Pokud ano, zapamatovat si informaci ze slovníku, zejména vzor skloňování. –Zjistit, zda vzor připouští nalezenou koncovku. –Zjistit, zda lemma pro daný kmen připouští nalezenou předponu. –Podle vzoru a koncovky zjistit lemmata a značky, které přicházejí v úvahu.
http:// 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:// Bezkontextové gramatiky: příklad Neterminály začínají velkým písmenem, terminály malým. –Slovo Stupeň Zápor 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:// 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:// 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:// Bezkontextové gramatiky: palatalizace Navíc ještě palatalizace: matek –Slovo KmenNF1Normální KoncovkaNF1Normální | KmenNF1Měkký KoncovkaNF1Měkká | KmenNF1Palat –KmenNF1Normální m a t k | ž e n –KmenNF1Měkký m a t c | ž e ň –KmenNF1Palat m a t e k | ž e n –KoncovkaNF1Normální a | y | u | o | ou | ám | ách | ami –KoncovkaNF1Měkká e
http:// 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. V praxi jsou CFG vhodné spíš pro morf. syntézu.
http:// Nedeterminismus analýzy pomocí CFG S Kmen Přípona | Kmen Koncovka Kmen venkov Přípona ský | ská | ské | ští Kmen skýv Koncovka a | y | ě | u | o | ou | | ám | ách | ami skýva Přípona(ský) va ???
http:// Bezkontextové gramatiky: 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. Nepřehlednost, špatná modifikovatelnost (týž kmen se vyskytuje na mnoha místech, tj. slovník je roztroušen po gramatice, není jasně oddělen). Analýza problematická, pro syntézu vhodnější.
http:// Nadstavba nad bezkontextovou gramatikou Napsat bezkontextovou gramatiku, která se zabývá jen pravidelným skloňováním. Bude dělit slovník na vzory pro ohýbání. –14 vzorů pro podstatná jména –4 vzory pro přídavná jména –11 vzorů pro slovesa –(ve skutečnosti další vzory a podvzory pro nepravidelná slova) Nad ní konečný převodník — změny kmen. souhlásek, pravopisné změny typu ďe dě, kontrola správnosti. –konečný převodník je ekvivalentní konečnému automatu a ten je zase ekvivalentní regulární gramatice
http:// Unifikační gramatiky Založeny na –strukturách rysů (feature structures) –jejich unifikovatelnosti Struktura rysů –Něco jako záznam v databázi, naplněná proměnná typu record v pascalu nebo typu struct v céčku. Popis objektu, seznam rysů. –rysy (atributy, features) … jména polí, položek –hodnoty –Příklady dvojic rys – hodnota: [číslo: množné], [pád: 1].
http:// Struktura rysů entita JMÉNOFF UK TELEFON entita JMÉNODan TELEFON POSsubstantivum GENmaskulinum NUMsingulár CASEdativ fakulta JMÉNOMFF UK DĚKANNetuka TELEFON POSadjektivum GENmaskulinum NUMplurál CASEakuzativ DEGkomparativ NEGafirmativ
http:// Struktura rysů Obecně: parciální funkce z množiny rysů do množiny hodnot. typ RYS 1 HODNOTA 1 RYS 2 HODNOTA 2 RYS 3 HODNOTA 3
http:// Unifikovatelnost Dvě struktury rysů jsou unifikovatelné, jestliže se shodují jejich hodnoty v těch rysech, které mají obě dvě. Příklad: struktury 1 a 2 jsou unifikovatelné 2 a 3 také, 1 a 3 nikoliv. ROD mužský ČÍSLO jednotné PÁD dativ 1 DRUH sloveso ČÍSLO jednotné ČAS přítomný 2 ROD mužský ČÍSLO jednotné PÁD instrumentál 3
http:// Unifikace Unifikace je operace na dvou unifikovatelných strukturách rysů, jejím výsledkem je nová struktura rysů. ROD mužský ČÍSLO jednotné PÁD dativ 1 OSOBA třetí ČÍSLO jednotné ČAS přítomný 2 + = ROD mužský ČÍSLO jednotné PÁD dativ OSOBA třetí ČAS přítomný 3
http:// Vstup: struktury rysů „lemma“ a „značka“. Najít ve slovníku všechny struktury „heslo“, které jsou unifikovatelné se strukturou „lemma“. Pro každou nalezenou strukturu „heslo“ najít v seznamu vzorů strukturu „vzor“, která je současně unifikovatelná s ní i se vstupní strukturou „značka“. Unifikací k sobě pasujících struktur „heslo“, „vzor“ a „značka“ vznikne struktura „tvar“. Na výstupu je pro každou strukturu „tvar“ řetězec složený z hodnot jejích rysů „vzor“ a „koncovka“. Morfologická syntéza pomocí unifikace
http:// Morfologická syntéza pomocí unifikace Vstup: struktury rysů „lemma“ a „značka“. Najít ve slovníku všechny struktury „heslo“, které jsou unifikovatelné se strukturou „lemma“. lemma LEMMA háček značka ČÍSLO množné PÁD nominativ heslo LEMMA háček VZOR hrad heslo LEMMA háček VZOR pán
http:// Morfologická syntéza pomocí unifikace Pro každou nalezenou strukturu „heslo“ najít v seznamu vzorů strukturu „vzor“, která je současně unifikovatelná s ní i se vstupní strukturou „značka“. heslo LEMMA háček VZOR hrad heslo LEMMA háček VZOR pán vzor VZOR hrad ČÍSLO množné PÁD nominativ KONCOVKA y vzor VZOR pán ČÍSLO množné PÁD nominativ KONCOVKA i | ové
http:// Morfologická syntéza pomocí unifikace Unifikací k sobě pasujících struktur „heslo“, „vzor“ a „značka“ vznikne struktura „tvar“. tvar LEMMA háček VZOR hrad | pán ČÍSLO množné PÁD nominativ KONCOVKA y | i | ové
http:// Morfologická syntéza pomocí unifikace: poznámky Unifikace se podobá databázovým operacím. Sama neříká, jak ze struktury „tvar“ vznikne slovní tvar. Pravidlo: výstup = tvar.lemma + tvar.koncovka Zesložitění pravidla, aby řešilo fonologicky podmíněné změny (na to už je unifikace nevhodná): místo *háčeky, *háčeki, *háčekové chceme háčky, háčci, háčkové
http:// Morfologická analýza pomocí unifikace Neunifikační část: najít všechny možné afixy, které lze ve slově vidět množina struktur „tvar“. Které afixy (koncovky) existují, víme ze struktur typu „vzor“. Vyřešit (nějak) změny kmenových souhlásek, palatalizaci apod. Pak už lze postupovat opačně k syntéze: unifikovat tvar se vzorem, a výsledek se slovníkem. Co se ve slovníku skutečně najde, patří do analýzy. –např. běžím=běžet(trpět)+osoba(1), běží(stavení)+pád(7)
http:// DATR Formalismus a nástroj pro morfologii založený na strukturách rysů a dědičnosti (viz objektové programování) Např. struktura pro vzor hrad má nějaké koncovky, struktura pro podvzor les vše zdědí, ale některé koncovky předefinuje. Podrobnosti — Daffyd Gibbon, Universität Bielefeld,