[ Skip to the content ]

Institute of Formal and Applied Linguistics Wiki


[ Back to the navigation ]

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
user:zeman:ukoly:morfologicka-gramatika-pro-chart-parser [2008/10/22 13:14]
zeman Zadání zásadně rozšířeno.
user:zeman:ukoly:morfologicka-gramatika-pro-chart-parser [2013/10/08 08:10] (current)
zeman quest
Line 1: Line 1:
 ====== Morfologická gramatika pro chart parser ====== ====== Morfologická gramatika pro chart parser ======
-//(úloha z počítačového zpracování přirozeného jazyka)// +{{template>spolecne}}
- +
-//Upozornění: Specifikace je detailnější (a tudíž více svazující) než bývá u zápočtových úloh zvykem. Ideálně by díky tomu měla tři řešení téže úlohy od tří různých lidí být zaměnitelná; šetří vám to také práci s dokumentací, která už je součástí zadání. Samozřejmě nelze vyloučit, že najdete dobrý důvod, aby něco bylo jinak než ve specifikaci; takové případy se mnou prosím [[zeman@ufal.mff.cuni.cz|konzultujte]]. Bez posvěcení se raději od specifikace zbytečně neodchylujte. Kdo bude místo na STDOUT čmárat do souboru, jehož cesta je zadrátována ve zdrojáku jako "C:\Documents and Settings\PanVopička\Dokumenty\tisícdalšíchadresářů\mujchytrysoubor.dat" apod., nejenže nedostane zápočet, ale bude podroben veřejnému zostuzení.//+
  
 Tato úloha má blízký vztah k úloze [[Chart parser]]. Parser je program, který s pomocí gramatiky umí rozebírat text a rozpoznávat v něm jednotlivé složky. Text může být slovo, které chceme rozložit na morfémy (morfologická analýza), nebo věta, kterou chceme rozložit na fráze podle větné stavby (syntaktická analýza). Zatímco cílem zmiňované úlohy Chart parser je napsat parser, cílem této úlohy je napsat gramatiku a další obslužné programy, které umožní chart parser opravdu využít. Aby bylo možné řešení obou úloh propojit, je nezbytné na obou stranách dodržet specifikaci. Formát souboru s gramatikou a formát výstupu z parseru (derivační strom ve zhuštěné podobě) je popsán u úlohy Chart parser. Tato úloha má blízký vztah k úloze [[Chart parser]]. Parser je program, který s pomocí gramatiky umí rozebírat text a rozpoznávat v něm jednotlivé složky. Text může být slovo, které chceme rozložit na morfémy (morfologická analýza), nebo věta, kterou chceme rozložit na fráze podle větné stavby (syntaktická analýza). Zatímco cílem zmiňované úlohy Chart parser je napsat parser, cílem této úlohy je napsat gramatiku a další obslužné programy, které umožní chart parser opravdu využít. Aby bylo možné řešení obou úloh propojit, je nezbytné na obou stranách dodržet specifikaci. Formát souboru s gramatikou a formát výstupu z parseru (derivační strom ve zhuštěné podobě) je popsán u úlohy Chart parser.
Line 24: Line 22:
  
 Gramatika se z pohledu uživatele skládá ze dvou částí (z pohledu parseru mezi nimi není rozdíl): z obecné a slovníkové. Obecná část obsahuje pravidla, která nejsou přímo vázána na jedno konkrétní slovo, ale spíše na skupinu slov patřících ke stejnému vzoru (i když se výjimečně může stát, že některá nepravidelná slova budou ve své skupině sama). Slovníková část napojuje gramatiku na slovní zásobu daného jazyka. Typicky obsahuje mnohem více pravidel než obecná část (pro každé slovo alespoň jedno pravidlo). Tuto část bývá vhodné reprezentovat v nějaké kompaktnější podobě, např. jako seznam slov s čísly jejich vzorů, ze kterého se příslušná pravidla gramatiky vygenerují nějakým skriptem. Gramatika se z pohledu uživatele skládá ze dvou částí (z pohledu parseru mezi nimi není rozdíl): z obecné a slovníkové. Obecná část obsahuje pravidla, která nejsou přímo vázána na jedno konkrétní slovo, ale spíše na skupinu slov patřících ke stejnému vzoru (i když se výjimečně může stát, že některá nepravidelná slova budou ve své skupině sama). Slovníková část napojuje gramatiku na slovní zásobu daného jazyka. Typicky obsahuje mnohem více pravidel než obecná část (pro každé slovo alespoň jedno pravidlo). Tuto část bývá vhodné reprezentovat v nějaké kompaktnější podobě, např. jako seznam slov s čísly jejich vzorů, ze kterého se příslušná pravidla gramatiky vygenerují nějakým skriptem.
- 
-==== Požadovaná množina slov ==== 
- 
-Gramatiku sestavte pro **podstatná jména v češtině.** Obecná část by měla pokud možno pokrývat všechny varianty skloňování. Slovník nemusí obsahovat všechna česká podstatná jména, ale měl by obsahovat alespoň 100 podstatných jmen, mezi nimiž budou zastoupeny všechny 4 rody (mužský životný, mužský neživotný, ženský a střední) a co nejvíce různých vzorů a podvzorů skloňování (včetně změn kmenových hlásek). 
- 
-Některá doporučená podstatná jména: pán, hoch, občan, muž, otec, obyvatel, host, kněz, rukojmí, předseda, paňáca, husita, sluha, soudce, patriarcha, hrad, ostrov, zámek, domeček, stroj, den, žena, matka, banka, bába, díra, skica, ruka, růže, píseň, ulice, dveře, město, jablko, středisko, pončo, moře, bojiště, kuře, stavení, génius, virus, kuli, idea, Nikaragua... 
- 
-Pro každé podstatné jméno, které je ve slovníku, musí gramatika popisovat tvary všech 7 pádů obou čísel. Tam, kde mluvnice připouští více tvarů (//páni// vs. //pánové//), by měla gramatika popsat všechny. Naopak gramatika nesmí připustit tvary, které jsou chybné (např. //*mužemi//). Pro homonymní tvary musí gramatika popsat všechna čtení (např. //růže// může být 1., 2. nebo 5. pád jednotného čísla a 1., 4. nebo 5. pád množného čísla). 
- 
-I pokud si ze základní školy pamatujete všechny základní vzory podstatných jmen, budete možná překvapeni, kolik drobných odchylek existuje. Proto vám doporučuji nahlédnout do některé mluvnice (např. Petr Karlík et al.: //Příruční mluvnice češtiny//. Nakladatelství Lidové noviny, Praha, 1996. ISBN 80-7106-134-4) 
  
 ===== Slovník ===== ===== Slovník =====
Line 54: Line 42:
  
 Hlavní část ale spočívá v interpretaci derivačního stromu způsobem, jaký jste si sami definovali pro svoji gramatiku. Tedy např. že přečtete preterminály, část za podtržítkem prohlásíte za lemma a zbytek za značku. Viz též příklad výše. Zatímco první část problému by mohl řešit kdokoliv i bez znalosti vaší gramatiky, tato část přímo souvisí s vaším řešením ostatních částí úlohy. Hlavní část ale spočívá v interpretaci derivačního stromu způsobem, jaký jste si sami definovali pro svoji gramatiku. Tedy např. že přečtete preterminály, část za podtržítkem prohlásíte za lemma a zbytek za značku. Viz též příklad výše. Zatímco první část problému by mohl řešit kdokoliv i bez znalosti vaší gramatiky, tato část přímo souvisí s vaším řešením ostatních částí úlohy.
 +
 +
 +===== Požadovaná množina slov =====
 +
 +Na rozdíl od většiny jiných úloh tato vyžaduje vaši znalost zpracovávaného jazyka. Budete proto pracovat s češtinou (pokud dostatečně ovládáte a preferujete jiný jazyk, kontaktujte mě a domluvíme se). Úlohu lze řešit pro několik skupin českých slov.
 +
 +I pokud si ze základní školy pamatujete všechny základní vzory, budete možná překvapeni, kolik drobných odchylek existuje. Proto vám doporučuji nahlédnout do některé mluvnice (např. Petr Karlík et al.: //Příruční mluvnice češtiny//. Nakladatelství Lidové noviny, Praha, 1996. ISBN 80-7106-134-4)
 +
 +Tam, kde mluvnice připouští více tvarů (//páni// vs. //pánové//), by měla gramatika popsat všechny. Naopak gramatika nesmí připustit tvary, které jsou chybné (např. //*mužemi//). Pro homonymní tvary musí gramatika popsat všechna čtení (např. //růže// může být 1., 2. nebo 5. pád jednotného čísla a 1., 4. nebo 5. pád množného čísla).
 +
 +==== Podstatná jména ====
 +
 +Gramatiku sestavte pro **podstatná jména v češtině.** Obecná část by měla pokud možno pokrývat všechny varianty skloňování. Slovník nemusí obsahovat všechna česká podstatná jména, ale měl by obsahovat alespoň 100 podstatných jmen, mezi nimiž budou zastoupeny všechny 4 rody (mužský životný, mužský neživotný, ženský a střední) a co nejvíce různých vzorů a podvzorů skloňování (včetně změn kmenových hlásek).
 +
 +Některá doporučená podstatná jména: pán, hoch, občan, muž, otec, obyvatel, host, kněz, rukojmí, předseda, paňáca, husita, sluha, soudce, patriarcha, hrad, ostrov, zámek, domeček, stroj, den, žena, matka, banka, bába, díra, skica, ruka, růže, píseň, ulice, dveře, město, jablko, středisko, pončo, moře, bojiště, kuře, stavení, génius, virus, kuli, idea, Nikaragua...
 +
 +Pro každé podstatné jméno, které je ve slovníku, musí gramatika popisovat tvary všech 7 pádů obou čísel. Navíc by gramatika měla umožňovat odvození přivlastňovacího přídavného jména od podstatných jmen mužského a ženského rodu (obvykle se tvoří jen od životných, ale toto omezení ignorujte). Přídavná jména stačí odvodit v základním tvaru (mužský rod, jednotné číslo, 1. pád). Ostatní tvary umět nemusíte.
 +
 +==== Přídavná jména a příslovce ====
 +
 +Pro každé přídavné jméno, které je ve slovníku, musí gramatika popisovat tvary všech 4 rodů (mužský životný, mužský neživotný, ženský a střední), 3 čísel (jednotné, dvojné a množné), 7 pádů, 3 stupňů (s výjimkou přídavných jmen, která se nestupňují), kladné i záporné tvary. Navíc by gramatika měla umožňovat odvození příslovce od přídavného jména (např. //zelený// -> //zeleně//, opět ve všech 3 stupních a v kladném i záporném tvaru (tedy např. také //nejnezeleněji//).
 +
 +Obecná část by měla pokud možno pokrývat všechny varianty skloňování. Slovník nemusí obsahovat všechna česká přídavná jména, ale měl by obsahovat alespoň 100 přídavných jmen, mezi nimiž bude zastoupeno co nejvíce různých vzorů a podvzorů skloňování (včetně změn kmenových hlásek).
 +
 +Některá doporučená přídavná jména: mladý, dobrý, špatný, český, německý, tichý, drahý, levný, jarní, ryzí, krycí, otcův, matčin...
 +
 +==== Slovesa ====
 +
 +Varování: slovesa mají velké množství značně odlišných tvarů, proto je tato skupina pracnější (ale taky je to větší výzva :-)) než ty ostatní. Přehled tvarů, na které gramatika může narazit: infinitiv (alternativní tvary na //-t//, //-ti//, resp. //-ct//, //-ci//), přítomný a budoucí čas //(jedu, pojedu, jedeš, pojedeš, jede, pojede, jedem, jedeme, pojedem, pojedeme, jedete, pojedete, jedou, pojedou),// rozkazovací způsob //(jeď, jeďme, jeďte),// příčestí minulé //(jel, jela, jelo, jeli, jely, jela),// příčestí trpné včetně odvozeného přídavného jména //(přibit, přibitý, přibita, přibitá, přibito, přibité, přibiti, přibití, přibity, přibité, přibita, přibitá),// přechodník přítomný a minulý včetně odvozeného přídavného jména //(nesa, nesouc, nesouce, nesoucí, vytisknuv, vytisknuvši, vytisknuvše, vytisknuvší).// Různé skupiny tvarů téhož slovesa se tvoří až od tří různých kmenů: přítomného, minulého a infinitivního. Např. pro sloveso //brát// je infinitivní kmen //brá-// (tvoří se z něj infinitiv a příčestí trpné), minulý kmen //bra-// (tvoří se z něj příčestí minulé) a přítomný kmen //ber-// (tvoří se z něj přítomný čas, rozkazovací způsob a přechodník přítomný). Podle různého chování jednotlivých kmenů se slovesa dělí na 5 tříd a řadu vzorů //(nese, bere, maže, peče, umře, tiskne, mine, začne, kryje, kupuje, prosí, trpí, sází, dělá),// plus nepravidelná slovesa //(být, jít// a další).
 +
 +Můžete vynechat přechodníky (ale samozřejmě dobrovolnosti se meze nekladou) a odvozování přídavných jmen. O budoucím čase předpokládejte, že se vždy tvoří opisem pomocí slovesa //budu// (nemusíte tedy řešit tvary jako //pojedu//, které se týkají jen několika sloves, zejména pohybových). Zbývají běžné slovesné tvary infinitiv, přítomný čas, příčestí minulé a trpné. Pokryjte alespoň výše uvedených 14 vzorů + 2 nepravidelná slovesa. Všímejte si případů, kde bude přidání dalších sloves vyžadovat nové podvzory, např. kvůli změnám kmenových hlásek //(drtí - drť, hledí - hleď, kouří - kuř...)//
  
 ===== Další informace ===== ===== Další informace =====
  
-Tento úkol (včetně zadání konkrétního jazyka) si můžete zarezervovat vyplněním formuláře na http://ufal.mff.cuni.cz/cgi-bin/zeman/zapoctaky/rezervace_ukolu.pl (pokud ještě není rozebrán).+Tento úkol (včetně zadání konkrétní skupiny slov) si můžete zarezervovat vyplněním formuláře na http://quest.ms.mff.cuni.cz/cgi-bin/zeman/zapoctaky/rezervace_ukolu.pl (pokud ještě není rozebrán).
  
 Pokud se individuálně nedohodneme jinak, termín odevzdání je konec listopadu. Při některé prosincové přednášce program předvedete ostatním. Pokud se individuálně nedohodneme jinak, termín odevzdání je konec listopadu. Při některé prosincové přednášce program předvedete ostatním.
Line 63: Line 82:
 V ideálním případě bude vaše gramatika na závěr otestována ve spojení s existujícím chart parserem, který vytvořili vaši předchůdci v minulých letech. Záleží na tom, jak přesně jste vy i oni splnili zadání, a zda tedy vaše řešení budou vzájemně kompatibilní. V ideálním případě bude vaše gramatika na závěr otestována ve spojení s existujícím chart parserem, který vytvořili vaši předchůdci v minulých letech. Záleží na tom, jak přesně jste vy i oni splnili zadání, a zda tedy vaše řešení budou vzájemně kompatibilní.
  
-V případě zájmu můžete dostat k dispozici pro pokusy chart parser a anotovaná data z českého korpusu, ze kterých lze vytáhnout přehled podstatných jmen a některých jejich tvarů.+V případě zájmu můžete dostat k dispozici pro pokusy chart parser a anotovaná data z českého korpusu, ze kterých lze vytáhnout přehled podstatných jmen (přídavných jmen, sloves...) a některých jejich tvarů.
  

[ Back to the navigation ] [ Back to the content ]