Obě strany předchozí revizePředchozí verzeNásledující verze | Předchozí verze |
kurz:syntakticka_analyza [2021/03/15 14:52] – jankocek | 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 ====== |
| |
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ě. | 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]]. |
| |
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. |