[ Skip to the content ]

Institute of Formal and Applied Linguistics Wiki


[ Back to the navigation ]

csts.pm, csts1.pm

Dosavadní modul csts.pm nebyl knihovnou pro vstup a výstup ve formátu CSTS. Používal se pouze při vstupu, kromě vlastní analýzy vstupu obsahoval i operace, které už lze spíše označit za předzpracování pro parser, a i vlastní čtení bylo někdy až příliš cílené na užití s parserem. Přestože se tento modul postupem času využíval i s mnoha jinými programy.

V roce 2006 paralelně vznikl modul csts1.pm, který definuje své čtení (i zápis) CSTS formátu. Není poplatný parseru (ostatně vznikl kvůli jinému nástroji), je navržen trochu robustněji, protože využívá knihovnu pro rozbor HTML, ale zatím toho umí méně než původní csts.pm.

Cílem je oba moduly sjednotit a udělat z nich skutečně kvalitní knihovnu pro čtení a zápis CSTS. K tomu je ovšem potřeba odstěhovat funkce, které jsou šité na míru parseru, do jiných modulů a vše velmi pečlivě otestovat, aby se nezměnila funkčnost parseru.

Je potřeba udělat

Obdobně syntaktický shluk bude obsahovat číselný odkaz na rodiče a syntaktickou značku pro druh závislosti.
Název zdroje, který nezačíná MM ani MD, znamená ruční anotaci (<l>, <t>, <g>, <A>).
Slovní tvar a ord nemají různé zdroje a vyskytují se pouze ve vrchním hashi.

$slovo→{m}{mda}[0]{lemma}
$slovo→{m}{mda}[0]{tag}
$slovo→{m}{mmab}[3]{lemma}
$slovo→{s}{mddz}[0]{pord} # parent ord
$slovo→{s}{mddz}[0]{stag} # afun

Přímé odkazy na jiné uzly ({parent} a {children}) by se neudržovaly mezi alternativami, ale pouze pro anotaci, která byla vytažena nahoru jako hlavní. Usnadní se tím údržba odkazů a jejich rozpojování při destrukci slova.

Protože hodnoty základních atributů (lemma, tag, pord a stag) jsou skaláry, vybrané a nahoru vytažené hodnoty nejsou odkazy, ale kopie. Případné změny hodnot se tedy neprojeví v originále mezi zdroji a alternativami! To je v některých případech i dobře. Např. DZ Parser si dělá různé úpravy (převádí slovo na malá písmena, v koncové interpunkci k němu připojuje “K”, upravuje morfologické značky), které by měl provádět na svých kopiích příslušných atributů, žel hrabe se přímo v originále. Vedlejším účinkem nové architektury tedy bude, že se nám původní lemmata a značky uchovají a budeme je moci vypsat na výstup. Bohužel to neplatí o slovním tvaru (form), protože ten žádné zdroje a alternativy nemá. Ten budeme muset chránit zvlášť.

Pozor na cyklické odkazy při destrukci anotací o slově! Na konci zpracování věty bychom měli ji měli povinně projít a všechny pomocné odkazy zrušit!


Jak vyresit, ze nektere alternativy mohou mit vahy? Kam je ulozit, abychom jeste nezeslozitili pristup k hodnotam atributu?

Pripravenost na prvky, ktere vubec nejsou v DTD CSTS. Kdyz se objevi <x atr1=A atr2=B>yyy
$slovo→{extra}[0]{elem} = “x”; # [0] je index takoveho extrata v ramci slova
$slovo→{extra}[0]{attr}{atr1} = “A”;
$slovo→{extra}[0]{attr}{atr2} = “B”;
$slovo→{extra}[0]{text} = “yyy”;
Takove prvky nesmeji byt strukturovane, tj. jejich {text} nesmi obsahovat dalsi prvky. Nebo muzu od parseru HTML dostat zadarmo celou hierarchii neceho takoveho? Nejspis ne.

Budeme nekde uchovavat poradi, ve kterem se prvky objevily ve vstupnim CSTS?
Budeme nekde uchovavat atributy prvku, ktere v DTD CSTS jsou, ale tyto jejich atributy tam nejsou?
Budeme uchovavat atributy, ktere v DTD jsou, ale normalne nas nezajimaly (napr. nektere atributy prvku <f>)?

Ruzne upravene znacky apod. muzeme chapat jako znacku z dalsiho zdroje. Napr.
$slovo→{0}{tag}{upr_mc_style} = “N4”;
Problem je, ze se ztraci korespondence s puvodni neupravenou znackou. I kdyz by samozrejme klic mohl znit treba “upr_mc_style_zdroj_mdt_a”. Ale takto zakodovana korespondence neni podchytitelna strojove.


[ Back to the navigation ] [ Back to the content ]