Obě strany předchozí revizePředchozí verzeNásledující verze | Předchozí verzeNásledující verzeObě strany příští revize |
kurz:regularni_vyrazy [2016/08/30 15:02] – michalskrabal | kurz:regularni_vyrazy [2021/03/09 22:59] – [Další speciální symboly] michalskrabal |
---|
V předchozích lekcích jsme se naučili [[kurz:prvni_dotaz|pokládat dotaz]], [[kurz:zobrazeni_dotazu|zobrazovat a ukládat]] výsledky a [[kurz:vyhodnoceni_dotazu|vyhodnocovat výsledky]] pomocí frekvenční distribuce. V této lekci se podíváme na pokročilejší způsoby dotazování. | V předchozích lekcích jsme se naučili [[kurz:prvni_dotaz|pokládat dotaz]], [[kurz:zobrazeni_dotazu|zobrazovat a ukládat]] výsledky a [[kurz:vyhodnoceni_dotazu|vyhodnocovat výsledky]] pomocí frekvenční distribuce. V této lekci se podíváme na pokročilejší způsoby dotazování. |
| |
Tzv. [[pojmy:regularni_vyrazy|regulárními výrazy]] rozumíme sekvence znaků, pomocí kterých můžeme vyhledat množinu slov. Regulární výrazy využívají jednak znaky se speciálním významem (například znak ''*'' se používá jako zástupný symbol pro libovolný počet opakování, znak ''|'' je symbolem pro výběr z alternativ, podrobněji viz níže), jednak běžné znaky, tj. znaky abecedy, číslice apod., které mají doslovný význam. Všechny speciální znaky si postupně představíme a zároveň si vyzkoušíme, jak fungují v [[kontext|rozhraní KonText]]. | Tzv. [[pojmy:regularni_vyrazy|regulárními výrazy]] rozumíme sekvence znaků, pomocí kterých můžeme vyhledat množinu slov. Regulární výrazy využívají jednak znaky se speciálním významem (například znak ''*'' se používá jako zástupný symbol pro libovolný počet opakování, znak ''|'' je symbolem pro výběr z alternativ, podrobněji viz níže), jednak běžné znaky, tj. znaky abecedy, číslice apod., které mají doslovný význam. Všechny speciální znaky si postupně představíme a zároveň si vyzkoušíme, jak fungují v [[kontext|rozhraní KonText]]. |
| |
| <WRAP round important 50%> |
| Pro hledání v rámci **jednoduchého** dotazu s využitím **regulárních výrazů** je třeba povolit příslušnou volbu pod dotazovacím řádkem. Následující výklad v této lekci předpokládá, že tato volba je zapnuta. |
| </WRAP> |
| |
| |
===== Tečka: libovolný znak ===== | ===== Tečka: libovolný znak ===== |
| |
Začněme tím nejuniverzálnějším znakem, tedy tečkou (''.''), která zastupuje právě jeden libovolný znak. Jakékoliv třípísmenné slovo tak lze v KonTextu najít (mimo jiné) pomocí sekvence tří teček za sebou (''<nowiki>...</nowiki>''). Zadáme-li takový dotaz jako **Slovní tvar**, zobrazí se ve výsledku slova jako: //ale, pro, tak, jak// apod. | Začněme tím nejuniverzálnějším znakem, tedy tečkou (''.''), která zastupuje právě jeden libovolný znak. Jakékoliv třípísmenné slovo tak lze v KonTextu najít (mimo jiné) pomocí sekvence tří teček za sebou (''<nowiki>...</nowiki>''). Zadáme-li takový dotaz s výchozím atributem **word** (slovní tvar), zobrazí se ve výsledku slova jako: //ale//, //pro//, //tak//, //jak// apod. |
| |
<WRAP round important 50%> | <WRAP round info 50%> |
Hledáme-li tečku jakožto interpunkční znaménko, využijeme zpětné lomítko (více [[regularni_vyrazy#dalsi_specialni_symboly|viz níže]]). Dotaz pak bude vypadat takto: ''\.'' | Hledáme-li tečku jakožto interpunkční znaménko, využijeme zpětné lomítko (více [[regularni_vyrazy#dalsi_specialni_symboly|viz níže]]). Dotaz pak bude vypadat takto: ''\.'' |
</WRAP> | </WRAP> |
| **hvězdička** | ''*'' | libovolný počet (0 a více) opakování předchozího znaku nebo celku | ekvivalentní s ''{0,}'' | | | **hvězdička** | ''*'' | libovolný počet (0 a více) opakování předchozího znaku nebo celku | ekvivalentní s ''{0,}'' | |
| **plus** | ''+'' | 1 nebo více opakování předchozího znaku nebo celku | ekvivalentní s ''{1,}'' | | | **plus** | ''+'' | 1 nebo více opakování předchozího znaku nebo celku | ekvivalentní s ''{1,}'' | |
| **otazník** | ''?'' | žádný nebo jeden výskyt předchozího znaku nebo celku | ekvivalentní s ''{0,1}'' nebo ''{,1}'' | | | **otazník** | ''?'' | žádný nebo jeden výskyt předchozího znaku nebo celku | ekvivalentní s ''{0,1}'' | |
| **interval ve složených závorkách** | ''{n, k}'' | //n// až //k// opakování předchozího znaku nebo většího celku | je-li //k// vynecháno, tedy zůstane-li ''{n,}'', odpovídá intervalu nejméně //n// opakování;\\ je-li //n// vynecháno, tedy zůstane-li ''{,k}'', doplní se na jeho místo nula;\\ pokud má výraz tvar ''{n}'', odpovídá mu přesně //n// opakování | | | **interval ve složených závorkách** | ''{n, k}'' | //n// až //k// opakování předchozího znaku nebo celku | je-li //k// vynecháno, tedy zůstane-li ''{n,}'', odpovídá intervalu nejméně //n// opakování;\\ pokud má výraz tvar ''{n}'', odpovídá mu přesně //n// opakování | |
| **kulaté závorky** | ''()'' | vytvářejí celek, na který lze aplikovat další operace, např. opakování | celkem mohou být konkrétní znaky i vyšší jednotky | | | **kulaté závorky** | ''()'' | vytvářejí celek, na který lze aplikovat další operace, např. opakování | celkem mohou být konkrétní znaky i vyšší jednotky | |
| |
|''k.*o''|slova o libovolné délce začínající na písmeno //k// a končící písmenem //o// (//kdo//, //kolo//, //kafíčko//)| | |''k.*o''|slova o libovolné délce začínající na písmeno //k// a končící písmenem //o// (//kdo//, //kolo//, //kafíčko//)| |
|''256''|číslo //256//| | |''256''|číslo //256//| |
|''19..''|letopočty začínající číslem //19// (případně též kombinace čísla //19// s různými znaky)| | |''19..''| čtymístná čísla začínající číslicemi //1// a //9//, např. letopočty (případně též kombinace čísla //19// s různými znaky)| |
|''kočka''|slovo //kočka//| | |''kočka''|slovo //kočka//| |
|''kočk.*''|všechny tvary lemmatu //kočka// s výjimkou Lsg. (//kočce//) a Gpl. (//koček//), ale i další odvozená slova: //kočkodan//, //kočkovitý//, //kočkovat// aj.| | |''kočk.*''|všechny tvary lemmatu //kočka// s výjimkou Lsg. (//kočce//) a Gpl. (//koček//), ale i další odvozená slova: //kočkodan//, //kočkovitý//, //kočkovat// aj.| |
| |
<wrap lo>Regulární výrazy budeme nejčastěji zadávat v rámci typu dotazu **CQL**, o němž bude řeč v [[kurz:pokrocile_dotazy|příští lekci]]; lze je ale používat i v [[kurz:prvni_dotaz#nac_je_ktery_typ_dotazu_vhodny|jiných typech dotazu]] – i ty jsou totiž následně automaticky přeloženy do dotazovacího jazyka CQL. Pokud tedy do typu dotazu **Lemma** zadáme regulární výraz ''.*číst'', budou výsledkem všechny výskyty všech předponových sloves odvozených od slovesa //číst//.</wrap> | Regulární výrazy budeme nejčastěji zadávat v rámci CQL dotazu, tj. po přepnutí přepínače **Pokročilý dotaz**, o čemž bude řeč v [[kurz:pokrocile_dotazy|příští lekci]]. Lze je ale používat i v dotazu jednoduchém (i ten je totiž následně automaticky přeložen do dotazovacího jazyka CQL), musí však být zapnuta volba **Povolit regulární výrazy** pod dotazovacím okénkem. V takovém případě je rovněž možné upřesnit výchozí [[pojmy:atributy_pozicni|poziční atribut]], podle nějž se má vyhledávat (např. zadáme-li regulární výraz ''.*číst'', zobrazí se nám při výchozím atributu ''word'' pouze infinitivní tvary prefigovaných odvozenin od slovesa //číst//, kdežto při atributu ''lemma'' se zobrazí všechny slovesné formy těchto sloves). |
| |
Podívejme se nyní na konkrétní příklady regulárních výrazů zadaných do korpusu [[cnk:syn2010|SYN2010]] prostřednictvím typu dotazu **Slovní tvar**: | Podívejme se nyní na konkrétní příklady regulárních výrazů zadaných do korpusu [[cnk:syn2020|SYN2020]] prostřednictvím výchozího atributu ''word'': |
| |
<WRAP round help 70%> | <WRAP round help 70%> |
* ''cha(cha)+'' | * ''cha(cha)+'' |
| |
Zobrazte si u jednotlivých výsledků [[vyhodnoceni_dotazu#frekvencni_distribuce|frekvenční distribuci]] slovních tvarů (word) a lemmat. Nerozlišujte velikost písmen a vytvořte si přehled toho, co dané dotazy našly a co nenašly. | Zobrazte si u jednotlivých výsledků frekvenční distribuci (viz [[vyhodnoceni_dotazu#frekvencni_distribuce|předchozí lekce]]) slovních tvarů (word) a lemmat. Nerozlišujte velikost písmen a vytvořte si přehled toho, co dané dotazy našly a co nenašly. |
</WRAP> | </WRAP> |
| |
| |
^ dotaz ^ počet výskytů ^ odpovídající lemmata bez rozlišení velikosti (v závorce absolutní četnost) ^ | ^ dotaz ^ počet výskytů ^ odpovídající lemmata bez rozlišení velikosti (v závorce absolutní četnost) ^ |
| ''ps?t'' | 182 | //pst// (135), //pt// (47) | | | ''ps?t'' | 45 | //pt// (26), //pst// (19) | |
| ''ps*t'' | 302 | //pst// (135), //psst// (65), //pssst// (48), //pt// (47), //psssst// (6), //psssssssst// (1) | | | ''ps*t'' | 81 | //pt// (26), //pssst// (24) //pst// (19), //psssst// (7), //psst// (5) | |
| ''ps+t'' | 255 | //pst// (135), //psst// (65), //pssst// (48), //psssst// (6), //psssssssst// (1) | | | ''ps+t'' | 55 | //pssst// (24) //pst// (19), //psssst// (7), //psst// (5) | |
| ''cha(cha)?'' | 331 | //cha// (300), //chacha// (31) | | | ''cha(cha)?'' | 150 | //cha// (108), //chacha// (42) | |
| ''cha(cha)*'' | 364 | //cha// (300), //chacha// (31), //chachacha// (31), //chachachacha// (2) | | | ''cha(cha)*'' | 164 | //cha// (108), //chacha// (42), //chachacha// (10), //chachachacha// (2), //chachachachacha// (1), //chachachachachacha// (1) | |
| ''cha(cha)+'' | 64 | //chacha// (31), //chachacha// (31), //chachachacha// (2) | | | ''cha(cha)+'' | 56 | //chacha// (42), //chachacha// (10), //chachachacha// (2), //chachachachacha// (1), //chachachachachacha// (1) | |
| |
| |
Možná si kladete otázku, jestli se regulární výrazy hodí i pro výzkum zásadnějších jevů než citoslovcí. Je dobré zdůraznit, že se bez nich neobejdeme např. při prohledávání [[pojmy:mluveny|mluvených korpusů]], které zatím nejsou [[pojmy:lemma|lemmatizované]], obrovskou pomocí jsou ale i při vyhledávání v korpusech lemmatizovaných. | [{{ :kurz:jestli-oral2013.png?nolink&direct&250|Frekvenční distribuce podob //jestli// v mluveném korpusu}}] |
| |
| Možná si kladete otázku, jestli se regulární výrazy hodí i pro výzkum zásadnějších jevů než citoslovcí. Je dobré zdůraznit, že se bez nich neobejdeme např. při prohledávání [[pojmy:mluveny|mluvených korpusů]], které převážně nejsou [[pojmy:lemma|lemmatizované]], obrovskou pomocí jsou ale i při vyhledávání v korpusech lemmatizovaných. |
| |
<WRAP round help 60%> | <WRAP round help 60%> |
</WRAP> | </WRAP> |
| |
Stejně jako u většiny úloh s regulárními výrazy i v tomto případě existuje více postupů, jak se dobrat ke stejnému výsledku. V každém případě nám může pomoct [[hledani_v_mluvenych_korpusech#jak_spravne_zadat_hledane_slovo|vyhledávač variant v korpusech řady ORAL]]. Pro řešení naší výzkumné otázky jsme zvolili symbol ''?'', který pomůže specifikovat, které segmenty se ve slově nemusejí vždy vyskytovat. | Stejně jako u většiny úloh s regulárními výrazy i v tomto případě existuje více postupů, jak se dobrat ke stejnému výsledku. V každém případě nám může pomoct [[hledani_v_mluvenych_korpusech#jak_spravne_zadat_hledane_„slovo|vyhledávač variant v korpusech řady ORAL]]. Pro řešení této výzkumné otázky využijeme z regulárních výrazů nejvíc symbol ''?'', který pomůže specifikovat, které segmenty se ve slově nemusejí vždy vyskytovat. |
| |
[{{:kurz:jestli-oral2013.png?nolink&200|FIXME}}] | |
| |
<WRAP clear/> | Ve frekvenčním seznamu se ocitly dva překvapivé tvary: //jesti// a //esti//. Pomocí modře označeného **p** ([[manualy:kontext:frekvencni_distribuce#frekvencni_seznam_vypis|pozitivní filtr]]) ve frekvenčním seznamu můžeme hned zkontrolovat, zda jde o námi hledaný význam (v obou případech tomu tak je) a nakolik je použití tohoto konkrétního tvaru regionálně či jinak podmíněné (zdá se to být východomoravské specifikum -- 6 případů ze 7, respektive 8 z 9 spadá do této nářeční oblasti). FIXME |
| |
| Více o specifikách hledání v mluvených korpusech najdete v [[kurz:hledani_v_mluvenych_korpusech|bonusové lekci]]. |
| |
Ve frekvenčním seznamu se ocitly dva překvapivé tvary: //jesti// a //esti//. Pomocí modře označeného **p** ([[manualy:kontext:frekvencni_distribuce#frekvencni_seznam_vypis|pozitivní filtr]]) ve frekvenčním seznamu můžeme hned zkontrolovat, zda jde o námi hledaný význam (v obou případech tomu tak je) a nakolik je použití tohoto konkrétního tvaru regionálně či jinak podmíněné (zdá se to být východomoravské specifikum -- 6 případů ze 7, respektive 8 z 9 spadá do této nářeční oblasti). | |
| |
==== Sekvence libovolných znaků ==== | ==== Sekvence libovolných znaků ==== |
| |
Nejmocnější kombinací je vyhledání libovolného počtu opakování libovolných znaků, tj. ''.*'' (tečka a hvězdička). Ta může reprezentovat celé slovo nebo jeho libovolnou část. Proto není vhodné zadávat samotný dotaz ''.*'', není-li to nutné, protože výsledkem zdlouhavého a výpočetně náročného hledání budou všechna slova v daném korpusu. | [{{ frekvdistr_vedom.png?nolink&direct&250|Frekvenční distribuce deseti nejčastějších lemmat získaných díky tečce a hvězdičce}}] |
| |
| |
| Asi nejpoužívanější kombinací regulárních výrazů je vyhledání libovolného počtu opakování libovolných znaků, tj. ''.*'' (tečka a hvězdička). Ta může reprezentovat celé slovo nebo jeho libovolnou část. Proto není vhodné zadávat samotný dotaz ''.*'', není-li to nutné, protože výsledkem zdlouhavého a výpočetně náročného hledání budou všechna slova v daném korpusu. |
| |
<WRAP round help 60%> | <WRAP round help 60%> |
* Vyhledejte v korpusu [[cnk:syn2015|SYN2010]] v typu dotazu **Slovní tvar** řetězec znaků ''.*vědom.*''. | * Vyhledejte v korpusu [[cnk:syn2020|SYN2020]] v jednoduchém typu dotazu řetězec znaků ''.*vědom.*'' (je zapotřebí zapnout možnost **Povolit regulární výrazy** a pro srovnatelnost výsledků zvolit jako výchozí atribut **word**). |
* Zobrazte si frekvenční distribuci takto identifikovaných lemmat a výsledný frekvenční seznam si uložte. | * Zobrazte si frekvenční distribuci takto identifikovaných lemmat a výsledný frekvenční seznam si uložte. |
</WRAP> | </WRAP> |
| |
Jak kýžená frekvenční distribuce vypadá? Najde veškerá lemmata obsahující daný řetězec znaků (v tomto případě slovní základ //vědom//) a umožní zkoumat nejrůznější typy odvozování, zároveň s územ (reprezentovaným frekvencí). | Jak kýžená frekvenční distribuce vypadá? Najde veškerá lemmata obsahující daný řetězec znaků (v tomto případě slovní základ //vědom//) a umožní zkoumat nejrůznější typy odvozování. |
| |
[{{frekvdistr_vedom.png?300|FIXME Frekvenční distribuce deseti nejčastějších lemmat získaných díky tečce a hvězdičce}}] | |
| |
===== Další speciální symboly ===== | ===== Další speciální symboly ===== |
| **seznam** | ''[ ]'' | alternativa, možnost výběru **jednoho** libovolného znaku ze znaků uvnitř hranatých závorek | v rámci seznamu je možné používat také pomlčku (''-'') jako operátor rozsahu (např. ''[a-z]'', ''[1-9]'') pro alfabetické znaky a číslice | | | **seznam** | ''[ ]'' | alternativa, možnost výběru **jednoho** libovolného znaku ze znaků uvnitř hranatých závorek | v rámci seznamu je možné používat také pomlčku (''-'') jako operátor rozsahu (např. ''[a-z]'', ''[1-9]'') pro alfabetické znaky a číslice | |
| **inverzní seznam** | ''[^ ]'' | výběr **jednoho** libovolného znaku **s výjimkou** znaků uvnitř hranatých závorek | pokud je prvním znakem seznamu stříška (''^''), jde o inverzní seznam: tedy jeden libovolný znak kromě těch uvedených uvnitř hranatých závorek | | | **inverzní seznam** | ''[^ ]'' | výběr **jednoho** libovolného znaku **s výjimkou** znaků uvnitř hranatých závorek | pokud je prvním znakem seznamu stříška (''^''), jde o inverzní seznam: tedy jeden libovolný znak kromě těch uvedených uvnitř hranatých závorek | |
| **svislá čára** | ''|'' | alternativa, ovšem ne jenom mezi jednotlivými znaky, ale mezi celými řetězci tvořícími celek | kombinuje se často s kulatými závorkami, které pomáhají určit prioritu vyhodnocení | | | **svislá čára** | ''|'' | alternativa, ovšem ne jenom mezi jednotlivými znaky, ale mezi řetězci tvořícími celek | kombinuje se často s kulatými závorkami, které pomáhají určit prioritu vyhodnocení | |
| **zpětné lomítko** | ''\'' | pokud předchází speciálnímu znaku, ztrácí daný symbol svůj zvláštní význam | takto lze vyhledávat např. interpunkční znaménka či další speciální znaky v textu | | | **zpětné lomítko** | ''\'' | pokud předchází speciálnímu znaku, ztrácí daný symbol svůj zvláštní význam | takto lze vyhledávat např. interpunkční znaménka či další speciální znaky v textu | |
| |
| |
<WRAP round important 60%> | <WRAP round important 60%> |
Pozor! Význam hranatých závorek je dvojí: | Význam hranatých závorek je dvojí: |
- v rámci regulárních výrazů představují seznam (viz tabulka výše) | - v rámci regulárních výrazů představují seznam (viz tabulka výše) |
- v rámci [[pojmy:cql|CQL]] představují samostatnou pozici, [[pokrocile_dotazy#hlavni_rysy_cql|viz příští lekce]]. | - v rámci [[pojmy:cql|CQL]] představují samostatnou pozici, [[pokrocile_dotazy#hlavni_rysy_cql|viz příští lekce]]. |
</WRAP> | </WRAP> |
| |
| |
=== Příklad dotazu: Adjektiva s prefixem vy- === | |
| |
<WRAP round help 60%> | |
V korpusu [[cnk:oral2013|ORAL2013]] ověřte, jak expanduje prefix //vy-//, a to především u adjektiv. Korpus není lemmatizovaný ani tagovaný, musíme si proto vystačit s hledáním pomocí **Slovního tvaru**. | |
| |
- Nejprve si představte slova s touto předponou: //vykalený//, //vymazlený//, //vytuněný// ... | |
- Rozepište si, jaké mužské koncovky – pro jednoduchost jen tyto – mohou adjektiva (v obou číslech) mít. | |
- Vytvořte dotaz na slovní tvar, u něhož znáte začátek i konec výrazů a hledáte prostřední část. | |
</WRAP> | |
| |
Dotaz mohl vypadat takto nějak: ''vy.+(ý|ej|ma|mi|ho|mu|ých|ejch))''. Konkrétně na tento dostaneme v korpusu ORAL2013 1285 výskytů, nejfrekventovanějšími tvary jsou //vysoký// (111), //vysokej// (67), //vyřešený// (20), //vyřízený// (17), //vyfocený// (16), //vystavený// (16). Sedmý v pořadí (s absolutní frekvencí 16) je word //vyndej//, ten s dalšími slovesnými tvary (//vydržej// 13, //vymejšlej// 9 aj.) hledaným tvarům neodpovídá. V takovýchto případech je nezbytné ruční třídění výsledků (jde o potíž s tzv. [[pojmy:precision|precision a recall]] – jak přesně zformulovaný dotaz položit, aby nevyloučil příliš mnoho dokladů, které nás mohou zajímat). | |
| |
=== Příklad dotazu: Konkurence forem === | === Příklad dotazu: Konkurence forem === |
| |
<WRAP round help 50%> | <WRAP round help 50%> |
Vyhledejte v korpusu [[cnk:syn2015|SYN2015]] v typu dotazu **Lemma** prefigovaná adjektiva na //vy-// zakončená na //-lý// nebo //-ný// (např. //vyčpělý// a //vydýchaný//). | Vyhledejte v korpusu [[cnk:syn2015|SYN2015]] prefigovaná adjektivní lemmata začínající na //vy-// a zakončená na //-lý// nebo //-ný// (např. //vyčpělý// a //vydýchaný//). |
</WRAP> | </WRAP> |
| |
Použili jsme dotaz ''vy.+(lý|ný)'', slovní druh jsme omezili na přídavná jména. Celkem jsme dostali 105 328 případů, mezi nejčastějšími figurují slova //vyspělý// (2220), //vytrvalý// (1127), //vybledlý// (695) z první skupiny, z druhé pak //vybraný// (6390), //vyrovnaný// (3158), //vyrobený// (2760) a další. | Použili jsme dotaz ''vy.+(lý|ný)'' s výchozím atributem ''lemma|word'', slovní druh jsme omezili na přídavná jména. Celkem jsme dostali 105 373 případů, mezi nejčastějšími figurují slova //vyspělý// (2220), //vytrvalý// (1127), //vybledlý// (695) z první skupiny, z druhé pak //vybraný// (6390), //vyrovnaný// (3158), //vyrobený// (2760) a další. |
| |
S tímto dotazem úzce souvisí nástroj [[manualy:morfio|Morfio]], který slouží pro slovotvornou analýzu. | S tímto dotazem úzce souvisí nástroj [[manualy:morfio|Morfio]], který slouží pro slovotvornou analýzu. |
V korpusu [[cnk:syn2015|SYN2015]] najděte: | V korpusu [[cnk:syn2015|SYN2015]] najděte: |
- pomocí dotazu typu **Lemma** všechna slova, která obsahují sekvenci //kořen//, kterou následuje i předchází alespoň jeden znak (typicky předpona a přípona) | - pomocí dotazu typu **Lemma** všechna slova, která obsahují sekvenci //kořen//, kterou následuje i předchází alespoň jeden znak (typicky předpona a přípona) |
- pomocí dotazu na **Slovní tvar** všechny prefigované infinitivy odvozené od slovesa //téct/téci// | - pomocí dotazu typu **Slovní tvar** všechny prefigované infinitivy odvozené od slovesa //téct/téci// |
- všechny výskyty tvarů negativního superlativu, tj. tvary začínající na //nejne-// a končící na //-ší// nebo //-čí// (pro jednoduchost odhlédněme od jiných tvarů, než je nominativ singuláru) | - všechny výskyty tvarů negativního superlativu, tj. tvary začínající na //nejne-// a končící na //-ší// nebo //-čí// (pro jednoduchost odhlédněme od jiných tvarů, než je nominativ singuláru)FIXME |
| |
Výsledky najdete jako vždy v [[reseni_ukolu#lekce_4|Řešení úkolů]]. | Výsledky najdete jako vždy v [[reseni_ukolu#lekce_4|Řešení úkolů]]. |