Skrýt
Nastavení

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revize Předchozí verze
Následující verze
Předchozí verze
kurz:pokrocile_dotazy [2017/10/06 10:30]
Tomáš Jelínek [Shoda (a neshoda) atributů]
kurz:pokrocile_dotazy [2018/08/29 14:42] (aktuální)
Jan Kocek
Řádek 3: Řádek 3:
 V páté lekci se zaměříme na klíčovou dovednost, která teprve umožní plně využívat všechny možnosti nabízené naším [[kontext|rozhraním KonText]]: jde o ovládnutí dotazovacího jazyka [[pojmy:​dotazovaci_jazyk|CQL]]. Tento typ dotazu úzce souvisí také se zvládnutím tzv. [[pojmy:​regularni_vyrazy|regulárních výrazů]], s nimiž jsme se seznámili v předešlé lekci. V páté lekci se zaměříme na klíčovou dovednost, která teprve umožní plně využívat všechny možnosti nabízené naším [[kontext|rozhraním KonText]]: jde o ovládnutí dotazovacího jazyka [[pojmy:​dotazovaci_jazyk|CQL]]. Tento typ dotazu úzce souvisí také se zvládnutím tzv. [[pojmy:​regularni_vyrazy|regulárních výrazů]], s nimiž jsme se seznámili v předešlé lekci.
  
-Korpusový [[pojmy:​dotazovaci_jazyk|dotazovací jazyk]] (CQL, Corpus Query Language) je formální jazyk, který slouží k vyhledávání v korpusu. Budete-li chtít formulovat dotaz přímo v CQL, je nutné ho zadat prostřednictvím příslušného [[kurz:​prvni_dotaz#​typy_dotazu|typu dotazu]] (**CQL**). Všechny ostatní typy dotazů se do dotazovacího jazyka překládají automaticky. CQL slouží jak k zadávání velmi složitých dotazů (např. vyhledej všechny výskyty adjektiv v superlativu v jiném pádě než nominativ, po nichž v textu nenásleduje substantivum ani interpunkce),​ tak i k zadávání dotazů jednoduchých (např. najdi výskyty lemmatu //oko//). Právě v možnosti vyhledávat pomocí velmi sofistikovaných kritérií ​lze spatřovat ​základní kvalitativní rozdíl mezi korpusovým vyhledávačem a běžným fulltextovým hledáním, které využíváme např. při práci s Googlem.+Korpusový [[pojmy:​dotazovaci_jazyk|dotazovací jazyk]] (CQL, Corpus Query Language) je formální jazyk, který slouží k vyhledávání v korpusu. Budete-li chtít formulovat dotaz přímo v CQL, je nutné ho zadat prostřednictvím příslušného [[kurz:​prvni_dotaz#​typy_dotazu|typu dotazu]] (**CQL**). Všechny ostatní typy dotazů se do dotazovacího jazyka překládají automaticky. CQL slouží jak k zadávání velmi složitých dotazů (např. vyhledej všechny výskyty adjektiv v superlativu v jiném pádě než nominativ, po nichž v textu nenásleduje substantivum ani interpunkce),​ tak i k zadávání dotazů jednoduchých (např. najdi výskyty lemmatu //oko//). Právě v možnosti vyhledávat pomocí velmi sofistikovaných kritérií ​tkví základní kvalitativní rozdíl mezi korpusovým vyhledávačem a běžným fulltextovým hledáním, které využíváme např. při práci s Googlem.
 ===== Základní formát CQL dotazu ===== ===== Základní formát CQL dotazu =====
  
Řádek 30: Řádek 30:
 ===== Logické operátory: Kombinace podmínek v rámci jedné pozice ===== ===== Logické operátory: Kombinace podmínek v rámci jedné pozice =====
  
-V rámci jedné pozice lze kombinovat nejrůznější podmínky, ​lze tedy specifikovat hodnotu dvou i více atributů: Hledáme například předložku //s//, ale požadujeme jen slabičné tvary //se// -- pokud bude CQL dotaz mít formu ''​[word=<​nowiki>"</​nowiki>​se<​nowiki>"</​nowiki>​]'',​ vyhledají se i tvary zájmena //se//. Proto je třeba zadat dotaz např. v podobě: ''​%%[lemma="​s"​ & word="​se"​]%%''​.+V rámci jedné pozice lze kombinovat nejrůznější podmínky, ​je tedy možné ​specifikovat hodnotu dvou i více atributů: Hledáme například předložku //s//, ale požadujeme jen slabičné tvary //se// -- pokud bude CQL dotaz mít formu ''​[word=<​nowiki>"</​nowiki>​se<​nowiki>"</​nowiki>​]'',​ vyhledají se i tvary zájmena //se//. Proto je třeba zadat dotaz např. v podobě: ''​%%[lemma="​s"​ & word="​se"​]%%''​.
  
-Pokud chceme ​kombinovat podmínky, musíme se nejprve seznámit s tzv. **logickými operátory**:​+Chceme-li ​kombinovat podmínky, musíme se nejprve seznámit s tzv. **logickými operátory**:​
  
 ^ název ^ znak ^ co zastupuje ^ další informace ^ příklad dotazu ^ popis dotazu ^ ^ název ^ znak ^ co zastupuje ^ další informace ^ příklad dotazu ^ popis dotazu ^
-| **ampersand** |  ''&'' ​ | a zároveň (AND) | platí všechny podmínky zároveň | ''​[lemma=<​nowiki>"</​nowiki>​jak<​nowiki>"</​nowiki>​ & pos=<​nowiki>"</​nowiki>​N<​nowiki>"</​nowiki>​]''​ | vyhledá výskyty substantiva //[[wp>yak|jak]]// (zástupce turů) |+| **ampersand** |  ''&'' ​ | a zároveň (AND) | platí všechny podmínky zároveň | ''​[lemma=<​nowiki>"</​nowiki>​jak<​nowiki>"</​nowiki>​ & pos=<​nowiki>"</​nowiki>​N<​nowiki>"</​nowiki>​]''​ | vyhledá výskyty substantiva //[[https://​cs.wikipedia.org/​wiki/​Jak_domác%C3%AD|jak]]// (zástupce turů) |
 | **vykřičník** |  ''​!'' ​ | negace (NOT) | neguje následující výraz | ''​%%[lemma="​stát"​ & pos!="​N"​]%%'' ​ | vyhledá výskyty **ne**substantivního (tedy slovesného) lemmatu //stát// | | **vykřičník** |  ''​!'' ​ | negace (NOT) | neguje následující výraz | ''​%%[lemma="​stát"​ & pos!="​N"​]%%'' ​ | vyhledá výskyty **ne**substantivního (tedy slovesného) lemmatu //stát// |
 | **svislá čára** |  ''​|'' ​ | nebo (OR) | alespoň jedna možnost platí | ''​[lemma=<​nowiki>"</​nowiki>​modrozelený<​nowiki>"</​nowiki>​ | lemma=<​nowiki>"</​nowiki>​zelenomodrý<​nowiki>"</​nowiki>​]''​ | vyhledá výskyty lemmat //​modrozelený//​ a //​zelenomodrý//​ | | **svislá čára** |  ''​|'' ​ | nebo (OR) | alespoň jedna možnost platí | ''​[lemma=<​nowiki>"</​nowiki>​modrozelený<​nowiki>"</​nowiki>​ | lemma=<​nowiki>"</​nowiki>​zelenomodrý<​nowiki>"</​nowiki>​]''​ | vyhledá výskyty lemmat //​modrozelený//​ a //​zelenomodrý//​ |
- 
 ===== Posloupnost pozic ===== ===== Posloupnost pozic =====
  
-Jedny hranaté závorky s atributem a jeho hodnotou odpovídají v CQL jedné pozici v textu. Pokud za sebou v CQL zapíšeme dvoje hranaté závorky za sebou, vyhledají se (samozřejmě podle zadaných podmínek) dvě pozice v textu bezprostředně následující za sebou. Můžeme například vyhledat spojení //zelené jablko//, a to prostřednictvím dotazu ''​[word=<​nowiki>"</​nowiki>​zelené<​nowiki>"</​nowiki>​][word=<​nowiki>"</​nowiki>​jablko<​nowiki>"</​nowiki>​]''​. Podobně můžeme vyhledat i větší množství slov následujících za sebou v textu, např. dotaz ''​[lemma=<​nowiki>"</​nowiki>​od<​nowiki>"</​nowiki>​][lemma=<​nowiki>"</​nowiki>​ráno<​nowiki>"</​nowiki>​][lemma=<​nowiki>"</​nowiki>​do<​nowiki>"</​nowiki>​][lemma=<​nowiki>"</​nowiki>​večer<​nowiki>"</​nowiki>​]''​ v korpusu [[cnk:​syn2015|SYN2015]] vyhledá [[https://​kontext.korpus.cz/​view?​q=~RfkXq3PT&​attr_allpos=kw&​attrs=word&​corpname=syn2015&​ctxattrs=word&​pagesize=30&​refs=%3Ddoc.title&​structs=s&​viewmode=kwic&​|399 výskytů]] fráze //od/Od rána do večera//, dotaz ''​[lemma=<​nowiki>"</​nowiki>​rozhodnout<​nowiki>"</​nowiki>​][lemma=<​nowiki>"</​nowiki>​se<​nowiki>"</​nowiki>​][lemma=<​nowiki>"</​nowiki>,<​nowiki>"</​nowiki>​][lemma=<​nowiki>"</​nowiki>​že<​nowiki>"</​nowiki>​]'' ​téměř ​[[https://​kontext.korpus.cz/​view?​q=~EOlDKJmd&​attr_allpos=kw&​attrs=word&​corpname=syn2015&​ctxattrs=word&​pagesize=30&​refs=%3Ddoc.title&​structs=s&​viewmode=kwic&​|tisíc výskytů]] spojení slov //​rozhodnout se, že// v různých tvarech. Atributy v jednotlivých pozicích se samozřejmě můžou lišit, např. dotaz ''​[pos=<​nowiki>"</​nowiki>​V<​nowiki>"</​nowiki>​][word=<​nowiki>"</​nowiki>,<​nowiki>"</​nowiki>​][lemma=<​nowiki>"</​nowiki>​že<​nowiki>"</​nowiki>​]''​ vyhledá slovesa, která předcházejí spojce //​že//​. ​+Jedny hranaté závorky s atributem a jeho hodnotou odpovídají v CQL jedné pozici v textu. Pokud za sebou v CQL zapíšeme dvoje hranaté závorky za sebou, vyhledají se (samozřejmě podle zadaných podmínek) dvě pozice v textu bezprostředně následující za sebou. Můžeme například vyhledat spojení //zelené jablko//, a to prostřednictvím dotazu ''​[word=<​nowiki>"</​nowiki>​zelené<​nowiki>"</​nowiki>​][word=<​nowiki>"</​nowiki>​jablko<​nowiki>"</​nowiki>​]''​. Podobně můžeme vyhledat i větší množství slov následujících za sebou v textu, např. dotaz ''​[lemma=<​nowiki>"</​nowiki>​od<​nowiki>"</​nowiki>​][lemma=<​nowiki>"</​nowiki>​ráno<​nowiki>"</​nowiki>​][lemma=<​nowiki>"</​nowiki>​do<​nowiki>"</​nowiki>​][lemma=<​nowiki>"</​nowiki>​večer<​nowiki>"</​nowiki>​]''​ v korpusu [[cnk:​syn2015|SYN2015]] vyhledá [[https://​kontext.korpus.cz/​view?​q=~RfkXq3PT&​attr_allpos=kw&​attrs=word&​corpname=syn2015&​ctxattrs=word&​pagesize=30&​refs=%3Ddoc.title&​structs=s&​viewmode=kwic&​|426 výskytů]] fráze //od/Od rána do večera//, dotaz ''​[lemma=<​nowiki>"</​nowiki>​rozhodnout<​nowiki>"</​nowiki>​][lemma=<​nowiki>"</​nowiki>​se<​nowiki>"</​nowiki>​][lemma=<​nowiki>"</​nowiki>,<​nowiki>"</​nowiki>​][lemma=<​nowiki>"</​nowiki>​že<​nowiki>"</​nowiki>​]''​ [[https://​kontext.korpus.cz/​view?​q=~EOlDKJmd&​attr_allpos=kw&​attrs=word&​corpname=syn2015&​ctxattrs=word&​pagesize=30&​refs=%3Ddoc.title&​structs=s&​viewmode=kwic&​|téměř ​tisíc výskytů]] spojení slov //​rozhodnout se, že// v různých tvarech. Atributy v jednotlivých pozicích se samozřejmě můžou lišit, např. dotaz ''​[pos=<​nowiki>"</​nowiki>​V<​nowiki>"</​nowiki>​][word=<​nowiki>"</​nowiki>,<​nowiki>"</​nowiki>​][lemma=<​nowiki>"</​nowiki>​že<​nowiki>"</​nowiki>​]''​ vyhledá slovesa, která předcházejí spojce //​že//​. ​
  
 Nyní si ukážeme počítání pozic **včetně interpunkce** (i ta tvoří v korpusech samostatné pozice) ještě na konkrétním dotazu, v němž jde o publicistické užití a aktualizace přísloví //vlk se nažral a koza zůstala celá//: Nyní si ukážeme počítání pozic **včetně interpunkce** (i ta tvoří v korpusech samostatné pozice) ještě na konkrétním dotazu, v němž jde o publicistické užití a aktualizace přísloví //vlk se nažral a koza zůstala celá//:
Řádek 51: Řádek 50:
 </​WRAP>​ </​WRAP>​
  
-Jak může vypadat podrobný rozpis pozic v jedné realizaci dotazu ''<​fc #​FF00FF>​[lemma=<​nowiki>"</​nowiki>​vlk<​nowiki>"</​nowiki>​]</​fc>​[]{1,​5}<​fc #​008000>​[lemma=<​nowiki>"</​nowiki>​koza<​nowiki>"</​nowiki>​]</​fc>​[]{1,​3}<​fc #​800000>​[lemma=<​nowiki>"</​nowiki>​celý<​nowiki>"</​nowiki>​]</​fc>''​:+Jak může vypadat podrobný rozpis pozic v jedné realizaci dotazu ''<​fc #​FF00FF>​[lemma=<​nowiki>"</​nowiki>​vlk<​nowiki>"</​nowiki>​]</​fc>​[]{1,​5}<​fc #​008000>​[lemma=<​nowiki>"</​nowiki>​koza<​nowiki>"</​nowiki>​]</​fc>​[]{1,​3}<​fc #​800000>​[lemma=<​nowiki>"</​nowiki>​celý<​nowiki>"</​nowiki>​]</​fc>''​shrnuje následující tabulka. Číselný údaj odkazující k jednotlivým pozicím se může měnit v závislosti na tom, zda pozici nula přiřadíme pravému či levému okraji KWICu.
  
 ^ slovní tvar | kterak | <fc #​FF00FF>​vlka</​fc>​ | státotvorné | povinnosti | nakrmit | , | aby | <fc #​008000>​koza</​fc>​ | divákova | zájmu | zůstala | <fc #​800000>​celá</​fc>​ | . | ^ slovní tvar | kterak | <fc #​FF00FF>​vlka</​fc>​ | státotvorné | povinnosti | nakrmit | , | aby | <fc #​008000>​koza</​fc>​ | divákova | zájmu | zůstala | <fc #​800000>​celá</​fc>​ | . |
 ^ pozice od začátku (levé strany) KWICu |  1L  |  <fc #​FF00FF>​0</​fc> ​ |  1P  |  2P  |  3P  |  4P  |  5P  |  <fc #​008000>​6P</​fc> ​ |  7P  |  8P  |  9P  |  <fc #​800000>​10P</​fc> ​ |  11P  | ^ pozice od začátku (levé strany) KWICu |  1L  |  <fc #​FF00FF>​0</​fc> ​ |  1P  |  2P  |  3P  |  4P  |  5P  |  <fc #​008000>​6P</​fc> ​ |  7P  |  8P  |  9P  |  <fc #​800000>​10P</​fc> ​ |  11P  |
 +^ pozice od začátku (pravé strany) KWICu |  11L  |  <fc #​FF00FF>​10L</​fc> ​ |  9L  |  8L  |  7L  |  6L  |  5L  |  <fc #​008000>​4L</​fc> ​ |  3L  |  2L  |  1L  |  <fc #​800000>​0</​fc> ​ |  1P  |
 ^ |  levý kontext ​ |  KWIC  ||||||||||| ​ pravý kontext ​ | ^ |  levý kontext ​ |  KWIC  ||||||||||| ​ pravý kontext ​ |
 +
 <WRAP round important 60%> <WRAP round important 60%>
-Pozor: ​KWIC je vše, co je v dotazu specifikováno,​ tedy od levé strany, kde je lemma //vlk//, až po stranu pravou, kde je lemma //celý//. Také proto se celá struktura zobrazí červeně.+KWIC je vše, co je v dotazu specifikováno,​ tedy od levé strany, kde je lemma //vlk//, až po stranu pravou, kde je lemma //celý//. Také proto se celá struktura zobrazí červeně.
 </​WRAP>​ </​WRAP>​
    
 Vidíme, že //vlka// a //kozu// dělí přesně 5 pozic (což je maximum umožněné naším dotazem), a stejně tak byl maximální rozptyl uplatněn i mezi lemmaty //koza// a //celý//. Vidíme, že //vlka// a //kozu// dělí přesně 5 pozic (což je maximum umožněné naším dotazem), a stejně tak byl maximální rozptyl uplatněn i mezi lemmaty //koza// a //celý//.
  
-A abyste nemohli říkat: "Vlk slibů, že tento kurz bude podrobný, se nažral, a koza zatajování znalostí zůstala celá", ​zkusíme ​si společně ještě ​právě obměnění ​počtu pozic v dotazu -- otázkou je, jestli už náhodou nedostaneme takové doklady, které nebudou obměněním ​zkoumaného přísloví:​+A abyste nemohli říkat: "Vlk slibů, že tento kurz bude podrobný, se nažral, a koza zatajování znalostí zůstala celá", ​zkusme ​si společně ještě ​rozšířit ​počet pozic v dotazu -- otázkou je, jestli už náhodou nedostaneme takové doklady, které nebudou obměnou zkoumaného přísloví:​
  
 ''<​fc #​FF00FF>​[lemma=<​nowiki>"</​nowiki>​vlk<​nowiki>"</​nowiki>​]</​fc>​[]{1,​7}<​fc #​008000>​[lemma=<​nowiki>"</​nowiki>​koza<​nowiki>"</​nowiki>​]</​fc>​[]{1,​5}<​fc #​800000>​[lemma=<​nowiki>"</​nowiki>​celý<​nowiki>"</​nowiki>​]</​fc>''​ ''<​fc #​FF00FF>​[lemma=<​nowiki>"</​nowiki>​vlk<​nowiki>"</​nowiki>​]</​fc>​[]{1,​7}<​fc #​008000>​[lemma=<​nowiki>"</​nowiki>​koza<​nowiki>"</​nowiki>​]</​fc>​[]{1,​5}<​fc #​800000>​[lemma=<​nowiki>"</​nowiki>​celý<​nowiki>"</​nowiki>​]</​fc>''​
Řádek 73: Řádek 74:
 Další možností je počet pozic nijak přesně nespecifikovat:​ ''​[lemma=<​nowiki>"</​nowiki>​vlk<​nowiki>"</​nowiki>​][]+[lemma=<​nowiki>"</​nowiki>​koza<​nowiki>"</​nowiki>​][]+[lemma=<​nowiki>"</​nowiki>​celý<​nowiki>"</​nowiki>​]''​. Výsledků je 383, některé jsou pro náš výzkum zcela nepodstatné (//<fc #​FF00FF>​vlky</​fc>​ nechali postřílet //[...]// pastevci se zase strachují o své ovce a <fc #​008000>​kozy</​fc>​. "​Komplex Červené Karkulky je evidentní – lidé z vlků mají strach. Přitom jsou v <fc #​800000>​celé</​fc>//​ [...]//"//​),​ jiné se výrazně liší od výchozího výrazu, ale můžeme se rozhodnout je do výzkumu zahrnout. Další možností je počet pozic nijak přesně nespecifikovat:​ ''​[lemma=<​nowiki>"</​nowiki>​vlk<​nowiki>"</​nowiki>​][]+[lemma=<​nowiki>"</​nowiki>​koza<​nowiki>"</​nowiki>​][]+[lemma=<​nowiki>"</​nowiki>​celý<​nowiki>"</​nowiki>​]''​. Výsledků je 383, některé jsou pro náš výzkum zcela nepodstatné (//<fc #​FF00FF>​vlky</​fc>​ nechali postřílet //[...]// pastevci se zase strachují o své ovce a <fc #​008000>​kozy</​fc>​. "​Komplex Červené Karkulky je evidentní – lidé z vlků mají strach. Přitom jsou v <fc #​800000>​celé</​fc>//​ [...]//"//​),​ jiné se výrazně liší od výchozího výrazu, ale můžeme se rozhodnout je do výzkumu zahrnout.
  
-Na tomto příkladu jsme si ukázali, že na dobře specifikovaných pozicích záleží. Na vás pak je, jaký typ specifikace budete potřebovat. 
 ===== Velikost písmen v CQL ===== ===== Velikost písmen v CQL =====
  
Řádek 92: Řádek 92:
 | ''</​s>''​ | konec věty | Jaké typy vět končí sekvencí tří interpunkčních pozic? | ''​%%[pos="​Z"​]{3}%% </s> ''​ | Po přihlášení si výsledky [[https://​kontext.korpus.cz/​view?​q=~H1uP3zbS&​attr_allpos=kw&​attrs=word&​corpname=syn2015&​ctxattrs=word&​pagesize=30&​refs=%3Ddoc.title&​structs=s&​viewmode=kwic&​|ověřte sami]] | | ''</​s>''​ | konec věty | Jaké typy vět končí sekvencí tří interpunkčních pozic? | ''​%%[pos="​Z"​]{3}%% </s> ''​ | Po přihlášení si výsledky [[https://​kontext.korpus.cz/​view?​q=~H1uP3zbS&​attr_allpos=kw&​attrs=word&​corpname=syn2015&​ctxattrs=word&​pagesize=30&​refs=%3Ddoc.title&​structs=s&​viewmode=kwic&​|ověřte sami]] |
  
-A jak hledat v rámci jedné věty? Existují ​dvě cesty. Buď položíme dotaz pomocí ''​[[pojmy:​within|within]]''​ ("v rámci, uvnitř"​),​ nebo za pomoci výrazu ''​[[pojmy:​containing|containing]]''​ ("​obsahuje"​). Oba příkazy umožňují využívat informace ze strukturních atributů v rámci CQL dotazu a mají následující obecnou podobu: ​+Chceme-li ​hledat v rámci jedné věty, máme dvě možnosti. Buď položíme dotaz pomocí ''​[[pojmy:​within|within]]''​ ("v rámci, uvnitř"​),​ nebo za pomoci výrazu ''​[[pojmy:​containing|containing]]''​ ("​obsahuje"​). Oba příkazy umožňují využívat informace ze strukturních atributů v rámci CQL dotazu a mají následující obecnou podobu: ​
  
 ''​DOTAZ within STRUKTURA'' ​ ''​DOTAZ within STRUKTURA'' ​
Řádek 101: Řádek 101:
  
 <WRAP round important 40%> <WRAP round important 40%>
-Pozor, konec věty ''</​s>''​ má velmi podobnou značku jako její obsah ''<​s/>''​.+Konec věty ''</​s>''​ má velmi podobnou značku jako její obsah ''<​s/>''​.
 </​WRAP>​ </​WRAP>​
  
  
-značka ^ význam ​^ výzkumná otázka ^ příklad dotazu ^ výsledek pro SYN2015 ^ +příkaz ​^ výzkumná otázka ^ příklad dotazu ^ výsledek pro SYN2015 ^ 
-| ''​within <​s/>'' ​| celá věta | Jaké věty obsahují zároveň citoslovce a slovesa (v libovolném pořadí)? | ''​[tag=%%"​I.*"​][]*[tag="​V.*"​]|[tag="​V.*"​][]*[tag="​I.*"​%%] within <​s/>''​ | Např.: //Hele, já vím, jaký to je.// nebo //Sakra, někdo tam je!// | +| ''​within <​s/>''​ | Jaké věty obsahují zároveň citoslovce a slovesa (v libovolném pořadí)? | ''​[tag=%%"​I.*"​][]*[tag="​V.*"​]|[tag="​V.*"​][]*[tag="​I.*"​%%] within <​s/>''​ | Např.: //Hele, já vím, jaký to je.// nebo //Sakra, někdo tam je!// | 
-| ''<​s/>​ containing'' ​| celá věta | Jaké věty obsahují posloupnost čtyř substantiv? | ''<​s/>​ containing %%[tag="​N.*"​]%%{4}''​ | Např.: //​Oběžník vyvolá v Oddělení verifikace faktů pobavení.//​ |+| ''<​s/>​ containing''​ | Jaké věty obsahují posloupnost čtyř substantiv? | ''<​s/>​ containing %%[tag="​N.*"​]%%{4}''​ | Např.: //​Oběžník vyvolá v Oddělení verifikace faktů pobavení.//​ |
  
 Rozdíl mezi příkazy ''​within''​ a ''​containing''​ je pouze v podobě [[pojmy:​kwic|KWICu]]. Vyhodnocení dotazu s příkazem ''​within''​ označí za KWIC pouze specifikovanou sekvenci (např. sloveso, citoslovce a vše mezi nimi), kdežto dotaz s příkazem ''​containing''​ označí za KWIC celou strukturu (v našem případě větu), která odpovídá specifikované podmínce. Rozdíl mezi příkazy ''​within''​ a ''​containing''​ je pouze v podobě [[pojmy:​kwic|KWICu]]. Vyhodnocení dotazu s příkazem ''​within''​ označí za KWIC pouze specifikovanou sekvenci (např. sloveso, citoslovce a vše mezi nimi), kdežto dotaz s příkazem ''​containing''​ označí za KWIC celou strukturu (v našem případě větu), která odpovídá specifikované podmínce.
Řádek 118: Řádek 118:
 ==== Automaticky vložená podmínka within ==== ==== Automaticky vložená podmínka within ====
  
-[[kurz:​kontext|Rozhraní KonText]] uživatelům umožňuje vložit do CQL dotazu formulář podmínky pomocí klikatelné nabídky. V rámci jedné věty lze díky tomu vyhledávat i pomocí automaticky vložené podmínky ''​within <s id=%%"​.*"​%%/>''​ (lze interpretovat takto: hledej v rámci jedné //​libovolné//​ věty).+Rozhraní KonText uživatelům umožňuje vložit do CQL dotazu formulář podmínky pomocí klikatelné nabídky. V rámci jedné věty lze díky tomu vyhledávat i pomocí automaticky vložené podmínky ''​within <s id=%%"​.*"​%%/>''​ (lze interpretovat takto: hledej v rámci jedné //​libovolné//​ věty).
  
-[{{:​kurz:​vetybezsloves.png?​400|Within vkládané přímo v rozhraní KonText}}]+[{{:​kurz:​vetybezsloves.png?​400|Within vkládané přímo v rozhraní KonText }}]
  
 ===== Shoda (a neshoda) atributů ===== ===== Shoda (a neshoda) atributů =====
  
-V CQL lze využít také dotaz na shodu či neshodu atributů dvou či více tokenů. ​Nejprve musíme ​označit pozice, u kterých chceme shodu testovat, uvedením čísla a dvojtečky v dotazu před hranatou závorku ​(např. %%1:​[pos="​N"​] [word="​a"​] 2:​[pos="​N"​]%%). Shodu pak testujeme za znakem **&​** ​uvedením ​číselné identifikace pozice, tečky a názvu atributu, který se má shodovat, například ​takto: ​%%& 1.lemma = 2.lemma%% (lemma tokenu s číslem 1 je stejné jako lemma tokenu označeného číslem 2). Dotaz ''​ %%1:​[pos="​N"​] [word="​a"​] 2:​[pos="​N"​] & 1.lemma = 2.lemma%% ''​ tedy najde dvě substantiva se stejným lemmatem, mezi nimiž stojí slovo //a//.+V CQL lze využít také dotaz na shodu či neshodu atributů dvou nebo více tokenů; jejich hodnoty přitom nemusejí být jinak stanovenyJe však nejprve potřeba ​označit pozice, u kterých chceme shodu testovat, ​a to uvedením čísla a **dvojtečky** v dotazu před hranatou závorku. ​Například dotazem '' ​%%1:​[pos="​N"​] [word="​a"​] 2:​[pos="​N"​]%% ​''​ hledáme sekvenci třÍ tokenů, z nichž první je substantivum označené jako <fc #​ff0000>​1</​fc>,​ následuje slovní tvar //a// a po něm další substantivum označené jako <fc #​ff0000>​2</​fc>​. Shodu pak testujeme ​jako součást tzv. globální podmínky uvedené ​za znakem **&**, která je vždy až na konci celého dotazu. Samotný test shody se skládá z číselného odkazu na označenou pozici**tečky** a názvu atributu, který se má shodovat, napřtakto:
  
-Chceme-li najít po sobě následující adjektivum a substantivum,​ jež se shodují v pádě, zadáme dotaz:\\ +''​ %%1:​[pos="​N"] [word="​a"] 2:​[pos="​N"​] & 1.lemma = 2.lemma%% '' ​najde sekvenci substantivum,​ slovní tvar //a// a substantivum,​ přičemž lemmata obou substantiv jsou shodná.
-''​ %%1:​[pos="​A"] 2:​[pos="​N"​] & 1.case = 2.case%% ''​.+
  
-Neshodu lze testovat stejným způsobem, jen místo rovnítka %%(=)%% použijeme vykřičník ​rovnítko %%(!=)%%například takto:\\ +Chceme-li najít po sobě následující adjektivum ​substantivumkteré se shodují v pádě, zadáme dotaz:\\ 
-''​ %%1:​[pos="​N"] [word="​a"] 2:​[pos="​N"​] & 1.case ​!= 2.case%% '' ​(dotaz najde dvě substantiva oddělená slovem //a//, která se neshodují v pádě).+''​ %%1:​[pos="​A"] 2:​[pos="​N"​] & 1.case = 2.case%% ''​
  
-Podmínky ​lze i kombinovat, tj. uvést jich víceoddělené znakem ​**&**, například takto:\\+Analogicky ​lze testovat neshodu, jen místo rovnítka %%(=)%% použijeme vykřičník a rovnítko %%(!=)%%, například takto:\\ 
 +''​ %%1:​[pos="​N"​] [word="​a"​] 2:​[pos="​N"​] & 1.case != 2.case%% ''​ (dotaz najde dvě substantiva oddělená slovem //a//, která se **ne**shodují v pádě). 
 + 
 +Podmínky lze také kombinovat, tj. uvést jich více oddělených ​znakem &:\\
 ''​ %%1:​[pos="​N"​] 2:​[pos="​A"​] 3:​[pos="​N"​] & 1.case = 2.case & 2.case != 3.case%% ''​ (najde sekvenci substantivum - adjektivum - substantivum,​ ve které se adjektivum shoduje v pádě s prvním substantivem,​ ale ne s druhým). ''​ %%1:​[pos="​N"​] 2:​[pos="​A"​] 3:​[pos="​N"​] & 1.case = 2.case & 2.case != 3.case%% ''​ (najde sekvenci substantivum - adjektivum - substantivum,​ ve které se adjektivum shoduje v pádě s prvním substantivem,​ ale ne s druhým).
  
-Podmínky lze aplikovat pouze na celé atributy, ne na jejich části, lze tak ověřovat ​například ​shodu forem, lemmatmorfologických ​tagů, slovního druhu nebo pádu, ne však třeba rodu a čísla (které ​nemají samostatný atribut).+<WRAP round important 60%> 
 +Podmínky lze aplikovat pouze na celé atributy, ne na jejich části. Lze tak ověřovat shodu či neshodu celých slovních tvarů, lemmat ​nebo morfologických ​značek, ne však už například shodu v rodě nebo čísle (nemají-li samostatný atribut). 
 + 
 +</​WRAP>​
  
 ===== Vyzkoušejte si na závěr ===== ===== Vyzkoušejte si na závěr =====
  
-Byla tato lekce náročná? Doufejme, že platí //těžko na cvičišti kurzu, lehko na bojišti praxe//. Nebo se nic podobného neříká?+Pravda, ​tato lekce byla poněkud ​náročná, doufejme však, že platí //těžko na cvičišti kurzu, lehko na bojišti praxe//. Nebo se nic podobného neříká?
  
 <WRAP round help 60%> <WRAP round help 60%>
   * Zkuste zformulovat dotaz, jímž ověříte ne/​existující aktualizace přísloví //těžko na cvičišti, lehko na bojišti// v korpusech [[cnk:​syn2015|SYN2015]] a [[cnk:​syn2013pub|SYN2013PUB]].   * Zkuste zformulovat dotaz, jímž ověříte ne/​existující aktualizace přísloví //těžko na cvičišti, lehko na bojišti// v korpusech [[cnk:​syn2015|SYN2015]] a [[cnk:​syn2013pub|SYN2013PUB]].
-  * A z jiného soudku: ​zaujaly vás někdy nadávky odvozené ​od německého //Herr Gott// ​jako např. //hergot//, //​herdek// ​či //hernajs//Vyhledejte co nejvíc takovýchto odvozenin v korpusu [[cnk:​oral2013|ORAL2013]] a zjistěte, zda se jejich užití liší podle regionů. ​+  * A z jiného soudku: ​Nadávek odvozených ​od německého //Herr Gott// ​je nemálo (např. //hergot//, //herdek////​hernajs// ​a jistě vymyslíte další). ​Vyhledejte co nejvíc takovýchto odvozenin v korpusu [[cnk:​oral2013|ORAL2013]] a zjistěte, zda se jejich užití liší podle regionů. ​
  
 Řešení naleznete opět na [[reseni_ukolu#​lekce_5|zvláštní stránce]]. Řešení naleznete opět na [[reseni_ukolu#​lekce_5|zvláštní stránce]].