Obě strany předchozí revizePředchozí verzeNásledující verze | Předchozí verze |
kurz:syntakticka_analyza [2021/02/18 09:34] – [4. Vyhledávání na základě vlastností řídícího slova] vaclavcvrcek | kurz:syntakticka_analyza [2022/08/13 13:19] (aktuální) – [Hledání v syntakticky anotovaném korpusu] alexandrrosen |
---|
====== Hledání v syntakticky anotovaném korpusu ====== | ====== Hledání v syntakticky anotovaném korpusu ====== |
| |
Korpus [[cnk:syn2015|SYN2015]] byl opatřen syntaktickou anotací, která k morfologické anotaci a lemmatizaci přidává informaci o vztazích mezi slovy ve větě. Syntaktická anotace vychází z [[https://ufal.mff.cuni.cz/pdt2.0|Pražského závislostního korpusu]], z anotace na tzv. analytické (povrchové) rovině. | Korpusy [[cnk:syn2015|SYN2015]] a [[cnk:syn2020|SYN2020]] byly opatřeny syntaktickou anotací, která k morfologické anotaci a lemmatizaci přidává informaci o vztazích mezi slovy ve větě. Syntaktická anotace vychází z [[https://ufal.mff.cuni.cz/pdt2.0|Pražského závislostního korpusu]], z anotace na tzv. analytické (povrchové) rovině. Verze [[cnk:intercorp:verze13ud|13ud]] paralelního korpusu [[cnk:intercorp|InterCorp]] je syntakticky (a morfologicky) anotována alternativním způsobem podle zásad mezinárodního projektu [[pojmy:ud|Universal Dependencies]]. Dále popisujeme anotaci podle [[https://ufal.mff.cuni.cz/pdt2.0|Pražského závislostního korpusu]]. |
Anotace je závislostní, to znamená, že každý token (tedy jak slovo, tak interpunkční znaménka aj.) je závislý buď na jiném tokenu v téže větě, nebo na technickém (umělém) "kořenu" věty v případě, že slovo má v celé větě řídící funkci (obvykle sloveso). | Anotace je závislostní, to znamená, že každý token (tedy jak slovo, tak interpunkční znaménka aj.) je závislý buď na jiném tokenu v téže větě, nebo na technickém (umělém) "kořenu" věty v případě, že slovo má v celé větě řídící funkci (obvykle sloveso). |
Korpus byl označkován automaticky, přičemž chybovost značkování je cca 16%, tj. výrazně vyšší než v případě anotace morfologické. Chybovost je vyšší u méně častých a složitějších konstrukcí, nižší u jednodušších. | Korpus byl označkován automaticky, přičemž chybovost značkování je cca 11% (16% v SYN2015), tj. výrazně vyšší než v případě anotace morfologické. Chybovost je vyšší u méně častých a složitějších konstrukcí, nižší u jednodušších. |
Pro efektivní vyhledávání v rozsáhlém korpusu bylo nutno anotaci zjednodušit, vyhledávat lze tedy ve směru od závislého tokenu k řídícímu, ne naopak. Syntaktická anotace je podrobněji popsána v [[pojmy:syntakticka_analyza|samostatném hesle]]; zde se naučíme, jak se syntaktickou anotací pracovat. Všechny dotazy jsou založené na dotazovacím jazyce [[kurz:pokrocile_dotazy|CQL]]. | Pro efektivní vyhledávání v rozsáhlém korpusu bylo nutno anotaci zjednodušit, vyhledávat lze tedy ve směru od závislého tokenu k řídícímu, ne naopak. Syntaktická anotace je podrobněji popsána v [[pojmy:syntakticka_analyza|samostatném hesle]]; zde se naučíme, jak se syntaktickou anotací pracovat. Všechny dotazy jsou založené na dotazovacím jazyce [[kurz:pokrocile_dotazy|CQL]]. |
| |
===== 1. Zobrazování závislostních struktur ===== | ===== 1. Zobrazování závislostních struktur ===== |
Než se ale dostaneme k dotazům na syntaktickou anotaci, podíváme se na to, jak závislostní struktury (tzv. stromy) v KonTextu zobrazovat. | Než se ale dostaneme k dotazům na syntaktickou anotaci, podíváme se na to, jak závislostní struktury (tzv. stromy) v KonTextu zobrazovat. |
Celý korpus SYN2015 je syntakticky označkovaný, u výsledku jakéhokoli dotazu můžeme vždy zobrazit kliknutím na ikonku {{:manualy:kontext:syntax-tree-icon.png?nolink&20|Ikonka pro zobrazení syntaktického stromu}} na levé straně konkordanční řádky, jak ukazuje obrázek: | Celé korpusy SYN2015 a SYN2020 jsou syntakticky označkované, u výsledku jakéhokoli dotazu můžeme vždy zobrazit kliknutím na ikonku {{:manualy:kontext:syntax-tree-icon.png?nolink&20|Ikonka pro zobrazení syntaktického stromu}} na levé straně konkordanční řádky, jak ukazuje obrázek: |
| |
[{{:kurz:kurz_synt_analyza_ex0.png?direct&700|Zobrazení syntaktického stromu FIXME}}] | [{{:kurz:kurz_synt_analyza_ex0.png?direct&700|Zobrazení syntaktického stromu }}] |
| |
Po kliknutí se zobrazí syntaktický strom: | Po kliknutí se zobrazí syntaktický strom: |
Kromě těchto funkcí jsou v korpusu i funkce pomocné pro neplnovýznamová slova a interpunkci, např. pomocné sloveso **AuxV**, předložka **AuxP**, podřadicí spojka **AuxC**. A funkce označující slova (tokeny), které reprezentují slova ve vztahu koordinace **Coord** (obvykle spojky) a apozice **Apos** (nejčastěji interpunkce). | Kromě těchto funkcí jsou v korpusu i funkce pomocné pro neplnovýznamová slova a interpunkci, např. pomocné sloveso **AuxV**, předložka **AuxP**, podřadicí spojka **AuxC**. A funkce označující slova (tokeny), které reprezentují slova ve vztahu koordinace **Coord** (obvykle spojky) a apozice **Apos** (nejčastěji interpunkce). |
| |
[{{ :kurz:kurz_synt_analyza_ex1.png?direct&500|CQL dotaz na zájmena se synt. funkcí Pnom v instrumentálu FIXME}}] | [{{ :kurz:kurz_synt_analyza_ex1.png?direct&500|CQL dotaz na zájmena se synt. funkcí Pnom v instrumentálu }}] |
| |
Chci-li například najít v korpusu SYN2015 všechna zájmena, která mají syntaktickou funkci "jmenná část verbonominálního predikátu", zadám následující dotaz: | Chci-li například najít v korpusu SYN2015 všechna zájmena, která mají syntaktickou funkci "jmenná část verbonominálního predikátu", zadám následující dotaz: |
***p_case**: pád řídícího slova | ***p_case**: pád řídícího slova |
| |
[{{ :kurz:kurz_synt_analyza_ex3.png?direct&500|CQL dotaz na substantiva závislá na následujících číslovkách FIXME }}] | [{{ :kurz:kurz_synt_analyza_ex3.png?direct&500|CQL dotaz na substantiva závislá na následujících číslovkách }}] |
| |
Můžeme tak vyhledávat slova zároveň podle jejich vlastností a vlastností jejich řídícího slova. | Můžeme tak vyhledávat slova zároveň podle jejich vlastností a vlastností jejich řídícího slova. |
Pokud chceme vyhledat slova, která mají vícenásobnou hodnotu atributu eparent, musí se v dotazu objevit znaky zpětné lomítko a svislice **%%"\|"%%**. Svislice proto, že vícenásobná hodnota tento znak obsahuje, zpětné lomítko proto, aby se vyhledal skutečně znak %%"|"%%, a nepoužil se způsobem obvyklým v regulárním výrazu, tj. jako alternativa mezi dvěma možnostmi. Dotaz pak bude vypadat třeba takto: | Pokud chceme vyhledat slova, která mají vícenásobnou hodnotu atributu eparent, musí se v dotazu objevit znaky zpětné lomítko a svislice **%%"\|"%%**. Svislice proto, že vícenásobná hodnota tento znak obsahuje, zpětné lomítko proto, aby se vyhledal skutečně znak %%"|"%%, a nepoužil se způsobem obvyklým v regulárním výrazu, tj. jako alternativa mezi dvěma možnostmi. Dotaz pak bude vypadat třeba takto: |
| |
[{{:kurz:kurz_synt_anot_ex7.png?direct&400|CQL dotaz pro nalezení vícenásobných hodnot FIXME}}] | [{{:kurz:kurz_synt_anot_ex7.png?direct&400|CQL dotaz pro nalezení vícenásobných hodnot }}] |
| |
Obecný dotaz, který vyhledá všechna slova s multihodnotou atributu eparent, může být formulován takto: ''[eparent=%%".+\|.+"%%]''. | Obecný dotaz, který vyhledá všechna slova s multihodnotou atributu eparent, může být formulován takto: ''[eparent=%%".+\|.+"%%]''. |
Kdybychom chtěli vyloučit shodné přívlastky (//**panem** Novákem//, //městem **Prahou**//), museli bychom ještě vyloučit případy, kdy se řídící a závislé substantivum shodují v pádě. Ztratili bychom tím však i část jiných výskytů. Stačí vyloučit instrumentál u "skutečného rodiče" pomocí ''ep_case!=%%"%%7%%"%%''. | Kdybychom chtěli vyloučit shodné přívlastky (//**panem** Novákem//, //městem **Prahou**//), museli bychom ještě vyloučit případy, kdy se řídící a závislé substantivum shodují v pádě. Ztratili bychom tím však i část jiných výskytů. Stačí vyloučit instrumentál u "skutečného rodiče" pomocí ''ep_case!=%%"%%7%%"%%''. |
| |
[{{:kurz:kurz_synt_analyza_ex10.png?direct&400|CQL dotaz na vyhledání substantivních přívlastků v prostém instrumentálu FIXME}}] | [{{:kurz:kurz_synt_analyza_ex10.png?direct&400|CQL dotaz na vyhledání substantivních přívlastků v prostém instrumentálu }}] |
| |
Vyhledáme tak 72 000 výskytů přívlastků, nejčastěji závislých na slovech //cesta//, //jízda//, //společnost//, //zásobování// nebo //rána//. | Vyhledáme tak 72 000 výskytů přívlastků, nejčastěji závislých na slovech //cesta//, //jízda//, //společnost//, //zásobování// nebo //rána//. |
Můžeme třeba chtít zjistit, jaké typy neshodných substantivních přívlastků (z hlediska syntaktické struktury) rozvíjejí substantivum //zájem//. Nejprve tedy vyhledáme všechny substantivní přívlastky rozvíjející toto slovo (přímo či přes předložku) následujícím příkazem: ''[pos=%%"N"%% & afun=%%"Atr.*"%% & ep_lemma=%%"zájem"%%]''. | Můžeme třeba chtít zjistit, jaké typy neshodných substantivních přívlastků (z hlediska syntaktické struktury) rozvíjejí substantivum //zájem//. Nejprve tedy vyhledáme všechny substantivní přívlastky rozvíjející toto slovo (přímo či přes předložku) následujícím příkazem: ''[pos=%%"N"%% & afun=%%"Atr.*"%% & ep_lemma=%%"zájem"%%]''. |
| |
[{{ :kurz:kurz_synt_analyza_ex13.png?direct&400|FIXME}}] | [{{ :kurz:kurz_synt_analyza_ex13.png?direct&400|}}] |
| |
Připomínáme, že při vyhledávání s využitím syntaktických atributů je třeba postupovat od závislých slov k řídícím, opačně to není možné, proto hledáme všechna substantiva s funkcí přívlastku závislá na (nejbližším plnovýznamovém) slově //zájem//. Po vyhledání a zobrazení konkordance v korpusu si vytvoříme frekvenční distribuci (**[[manualy:kontext:frekvence#vlastni_nastaveni_frekvencni_distribuce|Frekvence → Vlastní]]**). Na úrovni **1.** zvolíme atribut **prep**, prokliknutím modrého tlačítka plus vlevo dole přidáme úroveň a na úrovni **2.** zvolíme atribut **case**. Pozici a (Node) začít od necháme beze změny. | Připomínáme, že při vyhledávání s využitím syntaktických atributů je třeba postupovat od závislých slov k řídícím, opačně to není možné, proto hledáme všechna substantiva s funkcí přívlastku závislá na (nejbližším plnovýznamovém) slově //zájem//. Po vyhledání a zobrazení konkordance v korpusu si vytvoříme frekvenční distribuci (**[[manualy:kontext:frekvence#vlastni_nastaveni_frekvencni_distribuce|Frekvence → Vlastní]]**). Na úrovni **1.** zvolíme atribut **prep**, prokliknutím modrého tlačítka plus vlevo dole přidáme úroveň a na úrovni **2.** zvolíme atribut **case**. Pozici a (Node) začít od necháme beze změny. |