AplikaceAplikace
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í revizePředchozí verze
Následující verze
Předchozí verze
Následující verzeObě strany příští revize
kurz:syntakticka_analyza [2018/08/08 16:17] – [8. Využití syntaktických atributů ve statistikách] vaclavcvrcekkurz:syntakticka_analyza [2018/08/08 16:21] – [8. Využití syntaktických atributů ve statistikách] vaclavcvrcek
Řádek 9: Řádek 9:
 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ý 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:
  
-[{{:kurz:kurz_synt_analyza_ex0.png?700|Zobrazení syntaktického stromu FIXME}}]+[{{:kurz:kurz_synt_analyza_ex0.png?direct&700|Zobrazení syntaktického stromu FIXME}}]
  
 Po kliknutí se zobrazí syntaktický strom: Po kliknutí se zobrazí syntaktický strom:
  
-[{{:kurz:kurz_synt_analyza_ex01.png?600|Příklad syntaktické struktury}}]+[{{:kurz:kurz_synt_analyza_ex01.png?direct&600|Příklad syntaktické struktury}}]
  
 V syntaktickém stromě jsou graficky znázorněny závislostní vztahy mezi slovy (závislé a řídící slovo jsou propojeny čarou, závislé slovo je níže než řídící), u každého slova je uvedena jeho syntaktická funkce. Pořadí slov ve větě se zachovává. V syntaktickém stromě jsou graficky znázorněny závislostní vztahy mezi slovy (závislé a řídící slovo jsou propojeny čarou, závislé slovo je níže než řídící), u každého slova je uvedena jeho syntaktická funkce. Pořadí slov ve větě se zachovává.
Řádek 30: Řádek 30:
 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?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 FIXME}}]
  
 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:
Řádek 52: Řádek 52:
 ===== 3. Vyhledávání na základě pozice řídícího slova ===== ===== 3. Vyhledávání na základě pozice řídícího slova =====
  
-[{{ :kurz:kurz_synt_analyza_ex2.png?500|Příklad závislostního stromu}}]+[{{ :kurz:kurz_synt_analyza_ex2.png?direct&500|Příklad závislostního stromu}}]
  
 Jestliže chceme znát postavení slova, na které se ptáme, ve vztahu k jeho řídícímu slovu, pak použijeme atribut **parent**. Tento atribut je číselný, vyjadřuje vzdálenost mezi řídícím slovem a slovem, na které se ptáme. Záporná čísla (např. ''parent=%%"-2"%%'') ukazují "dozadu" v textu, kladná čísla ukazují "dopředu", tj. řídící slovo následuje po slově, na které se ptáme (před kladným číslem musí být umístěn znak plus, jemuž kvůli vlastnostem [[pojmy:regularni_vyrazy|regulárních výrazů]] musí navíc předcházet zpětné lomítko %%\%%, například takto: ''parent=%%"\+2"%%''). Znak zpětné lomítko %%"\"%% uvádíme v tomto kurzu před znakem plus pro označení kladných čísel vždy, protože při zadání dotazu v CQL musí být přítomen, ale ve skutečné hodnotě atributu, kterou si můžeme zobrazit v KonTextu, zpětné lomítko %%"\"%% obsaženo není. Řídící slova ve větě závislá přímo na (mimo větu umístěném, technickém) kořenu věty, mají hodnotu atributu 0.  Jestliže chceme znát postavení slova, na které se ptáme, ve vztahu k jeho řídícímu slovu, pak použijeme atribut **parent**. Tento atribut je číselný, vyjadřuje vzdálenost mezi řídícím slovem a slovem, na které se ptáme. Záporná čísla (např. ''parent=%%"-2"%%'') ukazují "dozadu" v textu, kladná čísla ukazují "dopředu", tj. řídící slovo následuje po slově, na které se ptáme (před kladným číslem musí být umístěn znak plus, jemuž kvůli vlastnostem [[pojmy:regularni_vyrazy|regulárních výrazů]] musí navíc předcházet zpětné lomítko %%\%%, například takto: ''parent=%%"\+2"%%''). Znak zpětné lomítko %%"\"%% uvádíme v tomto kurzu před znakem plus pro označení kladných čísel vždy, protože při zadání dotazu v CQL musí být přítomen, ale ve skutečné hodnotě atributu, kterou si můžeme zobrazit v KonTextu, zpětné lomítko %%"\"%% obsaženo není. Řídící slova ve větě závislá přímo na (mimo větu umístěném, technickém) kořenu věty, mají hodnotu atributu 0. 
Řádek 77: Řádek 77:
   ***p_case**: pád řídícího slova   ***p_case**: pád řídícího slova
  
-[{{ :kurz:kurz_synt_analyza_ex3.png?500|CQL dotaz na substantiva závislá na následujících číslovkách}}]+[{{ :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.
Řádek 89: Řádek 89:
 Dotaz v CQL bude vypadat tak, jak je naznačeno ve screenshotu, a vyhledá struktury, jako je třeba ta následující. Dotaz v CQL bude vypadat tak, jak je naznačeno ve screenshotu, a vyhledá struktury, jako je třeba ta následující.
  
-[{{:kurz:kurz_synt_analyza_ex4.png?300|Příklad vyhledané struktury}}]+[{{:kurz:kurz_synt_analyza_ex4.png?direct&300|Příklad vyhledané struktury}}]
  
 Mezi vyhledanými příklady je mnoho správně označkovaných, nemalá část (20, možná 25 %) jsou však chyby značkování. Je to také proto, že tento typ struktury je o něco méně častý a poněkud složitější, proto u něj automatické syntaktické značkování více chybuje. Mezi vyhledanými příklady je mnoho správně označkovaných, nemalá část (20, možná 25 %) jsou však chyby značkování. Je to také proto, že tento typ struktury je o něco méně častý a poněkud složitější, proto u něj automatické syntaktické značkování více chybuje.
 ===== 5. Skutečný rodič ===== ===== 5. Skutečný rodič =====
  
-[{{ :kurz:kurz_synt_analyza_ex5.png?350|Příklad pro atribut eparent}}]+[{{ :kurz:kurz_synt_analyza_ex5.png?direct&350|Příklad pro atribut eparent}}]
  
 Jistě jste si všimli, že se funkční slova, např. předložky a spojky, zapojují do závislostní struktury, často jsou řídícími slovy plnovýznamových slov jako substantiv či sloves. Někdy nám to vyhledávání usnadní, jindy, třeba pro hledání vztahů mezi plnovýznamovými slovy, je to komplikace. Proto je všem plnovýznamovým slovům (tedy substantivům, adjektivům, zájmenům, číslovkám, slovesům a příslovcím) přiřazen ještě jeden atribut: "skutečný rodič". Tento atribut odkazuje na nejbližší plnovýznamové slovo nadřazené slovu, na které se ptáme.  Jistě jste si všimli, že se funkční slova, např. předložky a spojky, zapojují do závislostní struktury, často jsou řídícími slovy plnovýznamových slov jako substantiv či sloves. Někdy nám to vyhledávání usnadní, jindy, třeba pro hledání vztahů mezi plnovýznamovými slovy, je to komplikace. Proto je všem plnovýznamovým slovům (tedy substantivům, adjektivům, zájmenům, číslovkám, slovesům a příslovcím) přiřazen ještě jeden atribut: "skutečný rodič". Tento atribut odkazuje na nejbližší plnovýznamové slovo nadřazené slovu, na které se ptáme. 
Řádek 119: Řádek 119:
 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?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 FIXME}}]
  
 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=%%".+\|.+"%%]''
Řádek 135: Řádek 135:
 Podobně jako vlastnosti přímo nadřazeného tokenu (např. **p_lemma**) odkazují vlastnosti "skutečného rodiče" od závislého slova k lemmatu, syntaktické funkci, morfologické značce, slovnímu druhu a pádu plnovýznamového řídícího slova. Jediný rozdíl je v tom, že tento atribut se týká jen vybraných slovních druhů (N, A, P, C, V, D) jak na straně závislého slova, tak na straně slova řídícího. Funkční slova jako předložky a spojky, které se ve struktuře (formálně) nacházejí na cestě mezi závislým a řídícím plnovýznamovým slovem, tento atribut ignoruje.  Podobně jako vlastnosti přímo nadřazeného tokenu (např. **p_lemma**) odkazují vlastnosti "skutečného rodiče" od závislého slova k lemmatu, syntaktické funkci, morfologické značce, slovnímu druhu a pádu plnovýznamového řídícího slova. Jediný rozdíl je v tom, že tento atribut se týká jen vybraných slovních druhů (N, A, P, C, V, D) jak na straně závislého slova, tak na straně slova řídícího. Funkční slova jako předložky a spojky, které se ve struktuře (formálně) nacházejí na cestě mezi závislým a řídícím plnovýznamovým slovem, tento atribut ignoruje. 
  
-[{{ :kurz:kurz_synt_analyza_ex8.png?350|Příklad syntaktické struktury s potlačením funkčních slov}}]+[{{ :kurz:kurz_synt_analyza_ex8.png?direct&350|Příklad syntaktické struktury s potlačením funkčních slov}}]
  
 Atributů, které zpřístupňují vlastnosti nejbližšího plnovýznamového řídícího slova, je pět. Mají "prefix" **ep_**, jinak jsou názvy atributů stejné (lemma, afun, tag, pos, case): Atributů, které zpřístupňují vlastnosti nejbližšího plnovýznamového řídícího slova, je pět. Mají "prefix" **ep_**, jinak jsou názvy atributů stejné (lemma, afun, tag, pos, case):
Řádek 152: Řádek 152:
 ===== 7. Vyhledávání slov řízených předložkou ===== ===== 7. Vyhledávání slov řízených předložkou =====
  
-[{{ :kurz:kurz_synt_analyza_ex9.png?350|}}]+[{{ :kurz:kurz_synt_analyza_ex9.png?direct&350|}}]
  
 U slovních druhů, které lze skloňovat (tj. u substantiv, adjektiv, zájmen a číslovek) se při analýze vztahů ve větě může hodit ještě jedna informace, která úzce souvisí s atributy **parent** a **eparent**, ale není s nimi totožná: informace o tom, zda je tvar daného slova přímo řízen předložkou, a pokud ano, tak kterou. Tuto informaci můžeme leckdy zjistit přes atribut **parent** a jeho vlastnosti (zvl. **p_pos**), ovšem jen tehdy, je-li dané slovo přímo závislé na předložce. Například ve výše uvedeném příkladu //troufnou si i na ještěry nebo hady// není vztah mezi slovy //ještěry// a //hady// (zeleně zvýrazněno v obrázku) a předložkou //na// (oranžově zvýrazněna) nijak vyjádřen dosud probranými atributy (tj. ani vlastnostmi přímého řídícího tokenu, ani vlastnostmi "skutečného rodiče"). Přitom je tato vlastnost určitého slova pro výzkum české skladby velmi důležitá. U slovních druhů, které lze skloňovat (tj. u substantiv, adjektiv, zájmen a číslovek) se při analýze vztahů ve větě může hodit ještě jedna informace, která úzce souvisí s atributy **parent** a **eparent**, ale není s nimi totožná: informace o tom, zda je tvar daného slova přímo řízen předložkou, a pokud ano, tak kterou. Tuto informaci můžeme leckdy zjistit přes atribut **parent** a jeho vlastnosti (zvl. **p_pos**), ovšem jen tehdy, je-li dané slovo přímo závislé na předložce. Například ve výše uvedeném příkladu //troufnou si i na ještěry nebo hady// není vztah mezi slovy //ještěry// a //hady// (zeleně zvýrazněno v obrázku) a předložkou //na// (oranžově zvýrazněna) nijak vyjádřen dosud probranými atributy (tj. ani vlastnostmi přímého řídícího tokenu, ani vlastnostmi "skutečného rodiče"). Přitom je tato vlastnost určitého slova pro výzkum české skladby velmi důležitá.
Řádek 166: Řádek 166:
 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?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 FIXME}}]
  
 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//.
Řádek 174: Řádek 174:
 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"%%]''
  
-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.+[{{ :kurz:kurz_synt_analyza_ex13.png?direct&400|FIXME}}]
  
-Získáme tak frekvenční distribuci typů syntaktických prostředkůjimiž se projevuje závislost substantivních ívlastků na slově //zájem//:+Připomínáme, ž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.
  
-[{{:kurz:kurz_synt_analyza_ex13.png?400|FIXME}}]+Získáme tak frekvenční distribuci typů syntaktických prostředků, jimiž se projevuje závislost substantivních přívlastků na slově //zájem//.
  
-Kliknutím na písmeno **p** ve spojení **p/n** (pod hlavičkou [[manualy:kontext:filtr|Filtr]]) aktivujeme pozitivní filtr s obsahem daného řádku na již vyhledanou konkordanci, a můžeme tak například rychle ověřit, nakolik je v daném případě syntaktická anotace správná. Uvidíme tak, že prostý nominativ a akuzativ jsou vesměs chybně interpretované jako přívlastky (popř. chybně morfologicky značkované), stejně tak třeba přívlastky s předložkou //s// a instrumentálem nebo s předložkou //o// a lokálem (chyba v určení pádu). Jinak je ale vrchní část tabulky zřejmě v pořádku, frekvence spojení "//zájem o// + akuzativ" převyšuje frekvenci "//zájem// + genitiv", s větším odstupem následují "//zájem na// + lokál", "//zájem v// + lokál" a "//zájem z// + genitiv". Z frekvenční distribuce je rychlý přístup k jednotlivým typům struktur.+Kliknutím na písmeno **p** ve spojení **p/n** (pod hlavičkou [[manualy:kontext:filtr|Filtr]]) aktivujeme pozitivní filtr s obsahem daného řádku na již vyhledanou konkordanci, díky čemuž lze rychle ověřit, nakolik je v daném případě syntaktická anotace správná. Uvidíme tak, že prostý nominativ a akuzativ jsou vesměs chybně interpretované jako přívlastky (popř. chybně morfologicky značkované), stejně tak třeba přívlastky s předložkou //s// a instrumentálem nebo s předložkou //o// a lokálem (chyba v určení pádu). Jinak je ale vrchní část tabulky zřejmě v pořádku, frekvence spojení "//zájem o// + akuzativ" převyšuje frekvenci "//zájem// + genitiv", s větším odstupem následují "//zájem na// + lokál", "//zájem v// + lokál" a "//zájem z// + genitiv". Z frekvenční distribuce je rychlý přístup k jednotlivým typům struktur.
  
-Zadané dotazy a následné frekvenční distribuce mohou být výrazně cílenější i mnohem obecnější, záleží na cíli, kterého chceme dosáhnout. Syntaktické atributy nabízejí mnoho možností, jak z anotovaného textu získávat informace o syntaktických strukturách, možnosti však nejsou neomezené, například není snadné získat zobecněné informace o celých větných strukturách, popř. o více slovech závislých na jednom a ž slově... A vždy je třeba pamatovat na nutnost odstranit z výsledků chyby, které tam automatická syntaktická analýza vnáší.+Zadané dotazy a následné frekvenční distribuce mohou být výrazně cílenější i mnohem obecnější, záleží na cíli, kterého chceme dosáhnout. Syntaktické atributy nabízejí mnoho možností, jak z anotovaného textu získávat informace o syntaktických strukturách, možnosti však nejsou neomezené, například není snadné získat zobecněné informace o celých větných strukturách, popř. o více slovech závislých na jednom a témž slově. Vždy je také třeba pamatovat na nutnost odstranit z výsledků chyby, které tam automatická syntaktická analýza vnáší.
  
  
  --- //Tomáš Jelínek//  --- //Tomáš Jelínek//