= Popis vertikálů = #Popis_vertik.2BAOE-l.2BAW8- [[BR]] Korpusová data jsou uložena v textové podobě jako tzv. vertikální texty (zkráceně "vertikály") (*.vert) a metainformace (*.meta). Tento dokument popisuje strukturu těch prvých - vertikálů. Vertikály obsahují vlastní texty korpusů (pozice) a také strukturní značky. Vertikál je XML dokument definovaný pomocí DTD. == Obecné informace == #Obecn.2BAOk_informace Základní formát vertikálního textu: * textový soubor s koncovkou ‘.vert' * na každém řádku jedna pozice (slovo, číslo, oddělovač) nebo strukturní značka (viz níže) * u pozic jsou tabulátorem odděleny jednotlivé atributy (word, lemma, tag, příp. další). Při převodu nových textů je uveden pouze atribut word - vlastní slovo. Jeden soubor s vertikálním textem by měl mít velikost zhruba několik desítek kB. Kódování znaků je v iso-latin2. Znaky, které v iso-latin2 nejsou, jsou vkládány pomocí ‘&'. (Zatím není jasné, o které jde.) == Příklad vertikálu == #P.2BAVkA7Q-klad_vertik.2BAOE-lu {{{ Co stojí za tažením hokejového týmu

Hello world ! Další zlato

MARTIN HAŠEK
}}} == Rozdělení textu do pozic == #Rozd.2BARs-len.2BAO0_textu_do_pozic Oddělovače (tečky, čárky, závorky, ...) jsou na samostatné pozici, pouze v případě, že se těsně za sebou (bez mezer) vyskytuje stejný znak, tvoří celá skupina stejných znaků jednu pozici. Aby bylo zachována informace, zda byl daný oddělovač v textu těsně vedle sousedního slova, nebo tam byla mezera, jsou na místa, kde mezera nebyla, vloženy strukturní značky (glue). Například text {{{ (slovo, které ... }}} se převede na: {{{ ( slovo , které ... }}} Zatím se tímto způsobem řeší všechny oddělovače, tedy i tečky u zkratek, časových a kalendářních údajů. Později se pravděpodobně některé oddělovače automaticky spojí s předcházejícími pozicemi. Vše řeší buď externí program, nebo, při práci v Perlu / Pythonu, volání funkce `split` z modulu `Corpus` (dostupné přes `module add corpus`). Způsob použití - Perl: {{{ use Corpus; $line = Corpus::split($line); }}} Způsob použití - Python: {{{ import Corpus line = Corpus.split(line) }}} Externí program v Perlu, který volá funkci `Corpus::split`, se jmenuje `corpus_split`. Pracuje s STDIN a STDOUT a každý řádek, na kterém není "tag" (tj. neodpovídá regulárnímu výrazu '<.*>'), rozdělí. Použití: {{{ $ module add corpus $ corpus_split < bez_glue > s_glue }}} == Popis strukturních značek == #Popis_strukturn.2BAO0-ch_zna.2BAQ0-ek Všechny uvedené značky kromě
 a  jsou párové. Značky  a  mají atribut id.

{{{
	hranice vertikálu
		hranice dokumentu
		atribut id - jednoznačná identifikace v rámci vertikálu
		nadpis
	průběžný titulek, popisky (nepatří do textu);
		například popisek pod obrázkem v novinách

odstavec báseň "line group" - skupina řádků v básni "line" - řádek básně seznam odrážka v seznamu poznámky (pod čarou) uvození (uvozovky, apostrofy), zvýraznění (font) podpis, jméno autora jazyk jiný než čeština atribut id - identifikaci jazyka dle ISO 639:1988

		zastupuje vypuštěné větší objekty
		(obrázek, tabulka, graf, zdrojový kód)
		prázdná, nepárová značka, jen ve formě  
		krátké části kódu, počítačové adresy, ...
		tabulka - strukturované textové údaje, které netvoří věty
		řádek tabulky
		buňka tabulky
		glue - "lepidlo", viz rozdělení textu do pozic
		prázdná, nepárová značka, jen ve formě  
}}}
== "Document Type Definition" - DTD vertikálu == #A.22Document_Type_Definition.22_-_DTD_vertik.2BAOE-lu
Jak číst toto DTD?

 * ENTITY popisuje textové nahrazení v rámci tohoto DTD - obsahuje název zkratky a v uvozovkách to, čím se má nahradit
 * %POZICE; bude vždy nahrazeno textem 'z,(g,z)*'
 * ELEMENT popisuje  značku - obsahuje název značky a její obsah
 * vertical je značka obsahující jeden nebo více prvků doc
 * g je značka obsahující EMPTY, tedy nic
 * ATTLIST popisuje atributy nějaké značky
 * značka doc má povinný atribut id
 * Význam symbolů +,*,| je postupně: 1 a více opakování, 0 a více opakování, výběr

{{{






































  


}}}
== Orientační schéma zanoření značek == #Orienta.2BAQ0-n.2BAO0_sch.2BAOk-ma_zano.2BAVk-en.2BAO0_zna.2BAQ0-ek
Předchozí DTD  se dá orientačně zapsat asi takto:

{{{

        
        |
|

| [BLOK] [BLOK]

        
                 [TEXT]
                 
                
 [TEXT]
                  
                 
  
 [TEXT]
                 
  [TEXT]
 
přičemž [BLOK] znamená:


         
                  [BLOK]

|

         [TEXT]
[TEXT]

přičemž [TEXT] znamená:


         [POZICE]
[POZICE]


přičemž [POZICE] znamená:

  (zde bude ve skutečnosti konkrétní pozice)

}}}
==  == #Rozd.2BAO0-ly_mezi_vertik.2BAOE-lem_a_jeho_DTD_definic.2BAO0-
== Rozdíly mezi vertikálem a jeho DTD definicí == #rozdily-
jsou dva

 * kódování - DTD předpokládá UTF-8, vertikál používá ISO-8859-2 (Latin-2)
 * značka  - tam, kde ji očekává DTD, má vertikál pozici

Tyto  rozdíly se musí smazat před tím, než provedeme kontrolu (včetně  validace) vertikálu pomocí xml-parseru. Proto se každá pozice převede na  značku . Tím navíc vyřeším problém s kódováním UTF-8 (to  nepodporuje české znaky) u pozic. V druhém kroku odstraním možnou  češtinu v atributu id značky  tím, že nastavím . To vše není třeba provádět explicitně, je to zahrnuto jako  preprocessing v kontrolním programu `xml_check`. Jen je třeba si být vědom, že výstupní zprávy od xml-parseru se vztahují k takto předzpracovanému dokumentu.

== Závěrečné info == #Z.2BAOE-v.2BARs-re.2BAQ0-n.2BAOk_info
Další  atributy dokumentu (autor, typ textu, ...) jsou uloženy v samostatném  souboru se jménem stejným jako soubor vertikálního textu až na koncovku  ‘.meta'.  Například vertikální text bude v souborech nevpes95.vert,  nevpes96.vert, nevpes97.vert a metainformace v souborech nevpes95.meta,  nevpes96.meta, nevpes97.meta.  Popis metainformací o dokumentech je  popsán   [[PopisMetainformaci| zde]] .