Standardy pro anotaci jazykových dat Daniel Zeman Počítačové zpracování přirozeného jazyka
http://ckl.mff.cuni.cz/~zeman/2 XML eXtensible Markup Language eginnerguide.shtmlhttp:// eginnerguide.shtml
http://ckl.mff.cuni.cz/~zeman/3 Značkování Počítačové zpracování přirozeného jazyka velmi často znamená „značkování“: k původně holému textu přibývají informace zjištěné na různých úrovních. V užším smyslu jde o zjednoznačnění morfologie. Jaký je jazyk pro vpisování informací do textu?
http://ckl.mff.cuni.cz/~zeman/4 SGML: Standard Generalized Markup Language „markup“ = „opatřit poznámkami“ K rozlišení textu a poznámek využívá „SGML tags“ — SGML značky. Skákal pes přes oves. Skákal skákat pes pes … Skákal skákat 1 pes pes 1…
http://ckl.mff.cuni.cz/~zeman/5 Poslání SGML SGML nevzniknul za lingvistickými účely. Standard pro strukturování (×formátování) dokumentů. –Dokumenty sdíleny mezi různými systémy. –Dokumenty s dlouhým životním cyklem. –Nárok na automatické zpracování (formátování, vyhledávání, jiná manipulace).
http://ckl.mff.cuni.cz/~zeman/6 Je to potřeba? Řada formátů je de-facto standardních, protože jsou čitelné pro větší část uživatelů. –Binární formáty (např. Microsoft Word) –Textové formáty (např. RTF, TeX) Proč tedy nestačí tyto „standardy“ a musí se zavádět něco nového?
http://ckl.mff.cuni.cz/~zeman/7 Nevýhody existujících standardů Binární formáty: problémy s uložením vícebytových hodnot, nečitelné pro člověka, čitelné jen pro konkrétní software, často ani nejsou dokumentované a veřejné. Textové: lepší, ale soustřeďují se na vzhled dokumentu, ne na jeho logickou strukturu.
http://ckl.mff.cuni.cz/~zeman/8 Příklad dokumentu: novinový článek
http://ckl.mff.cuni.cz/~zeman/9 Formát prostého textu ZE ZAHRANIČÍ Gerhard Schröder v Praze První zahraniční cesta vítěze voleb vede… „Vztahy s Čechy jsou naší prioritou,“ … Igor Hnízdo Řadu let vládla v Německu Kohlova CDU…
http://ckl.mff.cuni.cz/~zeman/10 Formát RTF (Rich Text Format) {\i\caps\f22\fs20 Ze zahrani\'e8\'ed \par }\pard\plain \qc\b\f1\fs28\lang1029\kerning28 {\f0\fs40 Gerhard Schr\'f6der v\~Praze \par }\pard\plain \qc\b\i\f1\lang1029 {\i0\f22\fs22 Prvn\'ed zahrani\'e8n… \par }\pard\plain \lang1029 {\f16 \ldblquote Vztahy s\~\'c8echy jsou… \par }\pard \qc {\b\f1\fs20\ul Igor Hn\'edzdo
http://ckl.mff.cuni.cz/~zeman/11 Formát (La)TeX {\sc\large Ze zahraničí} {\centerline\bf\Huge Gerhard Schröder v~Praze} {\centerline\bf\LARGE První zahraniční…} {\Large\uv{Vztahy s~Čechy jsou…} řekl…} {\bf\Large\underline Igor Hnízdo}
http://ckl.mff.cuni.cz/~zeman/12 Oddělit logickou strukturu od vzhledu dokumentu Vzhled kódován mezi textem: příliš mnoho příkazů, nečitelné. Vzhled závisí na software a hardware: je k dispozici ten a ten font? Umíme podtrhávat…? Každý autor může pro tentýž prvek (např. nadpis) použít jiný vzhled.
http://ckl.mff.cuni.cz/~zeman/13 Formát SGML Ze zahraničí Gerhard Schröder v Praze První zahraniční cesta vítěze… Vztahy s Čechy jsou naší prioritou, řekl… Igor Hnízdo Řadu let vládla… …
http://ckl.mff.cuni.cz/~zeman/14 Ale v RTF jsou styly a v TeXu makra! {\rtf1\ansi\ansicpg1250\uc1 {\fonttbl{\f0\froman\fcharset0\fprq2 Times New Roman;}{\f1… {\stylesheet{\s0\sb100\sa100\widctlpar\ad justright \lang1029 \snext0 Normální;} {\s1\sb240\sa60\keepn\widctlpar\adjustr ight \b\f1\fs28\lang1029\kerning28 \sbasedon0 \snext15 Nadpis 1;}… {\s1\qc Gerhard Schröder v\~Praze}
http://ckl.mff.cuni.cz/~zeman/15 Proč nestačí styly v RTF? Autoři by nejdříve museli chtít styly používat. Nikdo jim nebrání ručně přidat např. „tučné písmo“, ale dokonce ani konce řádků a mezery pro posunutí textu na požadované místo. V SGML tuto možnost nemusejí vůbec dostat.
http://ckl.mff.cuni.cz/~zeman/16 I SGML lze využít (či zneužít) ke kódování vzhledu ZE ZAHRANIÈÍ Gerhard Schröder v Praze První zahranièní cesta vítìze voleb vede k nám
http://ckl.mff.cuni.cz/~zeman/17 Kdy nemá smysl rozlišovat logickou strukturu a vzhled U dokumentů s jednorázovým použitím, s krátkou životností. U dokumentů, které nesdílí více jednotlivců či organizací. U dokumentů, které kromě vytištění nevyžadují žádné automatické zpracování.
http://ckl.mff.cuni.cz/~zeman/18 Jiný příklad použití: CALS Computer-aided Acquisition and Logistics Support. Americké ministerstvo obrany: stovky dokumentů ke každému bombardéru. Dokumentace od různých dodavatelů s různými editory. Standard CALS obsahuje SGML (+ návod).
http://ckl.mff.cuni.cz/~zeman/19 Historie SGML a spol. pozdní 60. léta: nroff 1970: vzniká Unix 1978: pracovní skupina ANSI počátek 80. let: přebírá ISO 1980: vzniká MS-DOS 1986: standard SGML (ISO 8879:1986) 1987: první verze RTF (TeX je starší) 1988: CALS (obsahuje SGML) 1990: vznikají MS Windows : zatím nejrozšířenější aplikace SGML: HTML
http://ckl.mff.cuni.cz/~zeman/20 Tři části SGML SGML deklarace. Znaková sada, oddělovače ( …). DTD (definice typu dokumentu — document type definition). Text dokumentu obohacený o SGML značky.
http://ckl.mff.cuni.cz/~zeman/21 Příklad DTD
http://ckl.mff.cuni.cz/~zeman/22 Jméno SGML prvku 1 až 8 znaků. První znak musí být písmeno A-Z, a-z (žádná diakritika). Další znaky mohou být písmena, číslice, tečka a pomlčka — tzv. jmenné znaky. Ve jménech prvků se nerozlišují velká a malá písmena.
http://ckl.mff.cuni.cz/~zeman/23 Minimalizace U některých prvků je možné vynechat koncovou, případně počáteční značku. Například pokud víme, že za nadpisem vždy následuje podtitul, který nemůže být součástí nadpisu, zastupuje i. „O“ nebo „o“ jako „omitted“ (ne 0)!
http://ckl.mff.cuni.cz/~zeman/24 Operátory v popisu složení prvku <! Odlišuje deklarace prvků od jejich výskytů. (…) Závorky ohraničují tzv. modelovou skupinu., & | Spojovací operátory. ? * + Indikátory výskytů. #PCDATA List v hierarchii, prostý text.
http://ckl.mff.cuni.cz/~zeman/25 Operace sřetězení:, (čárka) Prvek A se skládá z prvků B a C, které se musí vyskytnout za sebou v uvedeném pořadí.
http://ckl.mff.cuni.cz/~zeman/26 Operace sjednocení: & (ampersand) Prvek A se skládá z prvků B a C, které se musí vyskytnout oba, ale v libovolném pořadí.
http://ckl.mff.cuni.cz/~zeman/27 Operace disjunkce: | (svislítko) Prvek A odpovídá buď prvku B, nebo prvku C, ale ne oběma za sebou.
http://ckl.mff.cuni.cz/~zeman/28 Volitelnost: ? (otazník) Prvek A může být realizován prvkem B, nebo může být prázdný. Prvek A se skládá z B a C, kde prvně jmenovaný je nepovinný.
http://ckl.mff.cuni.cz/~zeman/29 Volitelnost a iterace: * (hvězdička) Prvek A může být prázdný, nebo obsahovat libovolný počet prvků B.
http://ckl.mff.cuni.cz/~zeman/30 Nejméně jeden výskyt: + (plus) Prvek A se skládá z libovolného počtu prvků B, nejméně však z jednoho.
http://ckl.mff.cuni.cz/~zeman/31 Priorita operátorů Indikátory výskytů mají vyšší prioritu než spojovací operátory. Srovnejte: ale Uvnitř jedněch závorek se smí vyskytnout pouze jeden druh spojovacího operátoru.
http://ckl.mff.cuni.cz/~zeman/32 #PCDATA Parsed Character Data List hierarchie, terminální symbol. Platné SGML znaky, ne obrázky apod. Data musí být „parsed“ (analyzována), aby se rozbalily entity (viz později) a aby se vědělo, co je text a co SGML značky. Implicitně obsahuje operátor *.
http://ckl.mff.cuni.cz/~zeman/33 Mimo hierarchii: zahrnutí prvku Prvek B zahrnutý do definice prvku A se může vyskytnout ve kterémkoli podprvku C prvku A, aniž by to muselo být explicitně řečeno v deklaraci C. K zahrnutí (inkluzi) se používá operátor + (tentokrát prefixový, ne postfixový).
http://ckl.mff.cuni.cz/~zeman/34 Mimo hierarchii: vyloučení prvku Ruší zahrnutí prvku v daném podstromu. Například proto, že prvek se nemůže vyskytnout uvnitř sebe sama. K vyloučení (exkluzi) se používá operátor – (prefixový).
http://ckl.mff.cuni.cz/~zeman/35 Zvláštní druhy prvků ANY = #PCDATA nebo libovolný prvek deklarovaný v tomtéž DTD (jen pro ladění) CDATA: ignorovat oddělovače kromě </ RCDATA: podobné, ale rozpoznají se odkazy na entity a znaky. EMPTY: prázdné, sama značka má význam pro zpracování (např. )
http://ckl.mff.cuni.cz/~zeman/36 Prvky s atributy Toto je pátý odstavec dopisu.
http://ckl.mff.cuni.cz/~zeman/37 Typy hodnot atributů CDATA ENTITY ENTITIES ID IDREF IDREFS NAME NAMES NMTOKEN
http://ckl.mff.cuni.cz/~zeman/38 Typy hodnot atributů (pokračování) NMTOKENS NOTATION NUMBER NUMBERS NUTOKEN NUTOKENS
http://ckl.mff.cuni.cz/~zeman/39 Pro jeden prvek nejvýše jeden seznam atributů (Volné místo mezi slovy se interpretuje jako jediná mezera, a to i v uvozovkách.)
http://ckl.mff.cuni.cz/~zeman/40 Implicitní hodnoty atributů Prázdný řetězec je povolen pro typ CDATA. #FIXED hodnota je pevná, udává se za klíčovým slovem #FIXED #REQUIRED atribut je povinný #CURRENT naposledy použitá hodnota #CONREF pro křížové odkazy #IMPLIED zpracovatel hodnotu zná
http://ckl.mff.cuni.cz/~zeman/41 Entity Zástupce znaku nebo řetězce. Zástupce externího souboru. Obsah souboru se vloží na daném místě do dokumentu. „Datový text“. Uzávorkovaný text.
http://ckl.mff.cuni.cz/~zeman/42 Parametrický literál Řetězec nebo znak, na který se v dokumentu odkazujeme, ale jeho obsah se stanoví někde jinde — podobně jako parametry u procedur. Značkou jednotky elektrického odporu je &OMEGA; (čti omega).
http://ckl.mff.cuni.cz/~zeman/43 Odkaz na nedefinovanou entitu Značkou pro ohm je &bflmpsvz;. Pokud bflmpsvz nebylo definováno, analyzátor oznámí chybu. Místo chybového hlášení je možné všechny neznámé entity rozbalit na varovný text, pokud deklarujeme „defaultní“ entitu.
http://ckl.mff.cuni.cz/~zeman/44 Externí entita Tam, kde se vyskytne odkaz na externí entitu, se do dokumentu vloží obsah jiného souboru. Dva druhy externích entit: –Lokální jsou známé pouze na našem počítači či síti. –Veřejné jsou k dispozici každému.
http://ckl.mff.cuni.cz/~zeman/45 Lokální externí entita Lokální entita umožňuje rozdělit velký dokument na více souborů, například po kapitolách.
http://ckl.mff.cuni.cz/~zeman/46 Veřejná externí entita Veřejná entita umožňuje použít DTD nebo sadu entit a prvků, definovanou jako navazující standard. Pro registraci veřejných identifikátorů zvláštní standard ISO 9070:1991. (vlastník//třída text//jazyk)
http://ckl.mff.cuni.cz/~zeman/47 Propojení dokumentu a DTD Každý dokument musí buď přímo obsahovat DTD, nebo alespoň odkaz na externí DTD.
http://ckl.mff.cuni.cz/~zeman/48 Vložení DTD do dokumentu <!DOCTYPE MAIL [ ]> …
http://ckl.mff.cuni.cz/~zeman/49 Text Encoding Initiative Aplikace SGML (řada DTD apod.) Zaměřená na výzkum v humanitních vědách — jedna z prvních takto rozsáhlých nekomerčních aplikací. Založena a sponzorována třemi vědeckými asociacemi včetně Association for Computational Linguistics. TEI guidelines zpracovány 1989–1994.
http://ckl.mff.cuni.cz/~zeman/50 TEI guidelines SGML se snaží uzákonit to, co je společné všem počítačovým zpracováním textu. TEI jde dál a snaží se pokrýt společné potřeby „počítačově-humanitních věd“ včetně počítačové lingvistiky stran SGML definic pro nejrůznější druhy textu: TEI guidelines. Spíše než o standard jde o doporučení, aby se usnadnila komunikace vědeckých pracovišť.
http://ckl.mff.cuni.cz/~zeman/51 Text Encoding Initiative Definuje množinu DTD, resp. stavebních kamenů, z nichž mohou být DTD ušita na míru problému. Umožňuje tak to, co je společné více problémům, kódovat stejně.
http://ckl.mff.cuni.cz/~zeman/52 Modularita TEI DTD Ústřední sady značek (core tag sets): předpokládá se, že je potřebuje každý dokument, jsou proto k dispozici vždy. Základní sady značek (base tag set) jsou vždy společné jedné třídě dokumentů. Jeden dokument potřebuje právě jednu základní sadu. Přídavné sady značek (additional tag sets) mohou potřebovat dokumenty libovolné třídy, ale jsou to specializované značky, potřebné obvykle ve specializované aplikaci. Pomocné sady značek (auxiliary tag sets) obsahují prvky se zvláštním posláním.
http://ckl.mff.cuni.cz/~zeman/53 Modularita TEI DTD (pokračování) Tentýž prvek může být definován různě v různých základních sadách. Kromě této výjimky nesmí být tentýž prvek definován na více místech, tj. ani ve více různých přídavných sadách, ani ve dvou sadách z různých skupin (ústřední a pomocné).
http://ckl.mff.cuni.cz/~zeman/54 Příklad: TEI kompatibilní dokument <!DOCTYPE tei.2 [ ]>
http://ckl.mff.cuni.cz/~zeman/55 TEI: otevřený standard Modulární schéma umožňuje rozšiřitelnost: lze doplňovat další sady značek. V konkrétním dokumentu si každý může dodefinovat své prvky, pokud mu TEI vidění světa nestačí. Spíše než o standard jde o doporučení.
http://ckl.mff.cuni.cz/~zeman/56 Ústřední sady značek Jsou dvě: –Definice prvků nacházejících se ve všech druzích dokumentů. Zvýrazněné fráze (rozdělené na zdůraznění, technické termíny, cizí slova, tituly děl…). Fráze v uvozovkách (rozdělené na přímou řeč, glosy, citáty…). Jména, čísla, míry, data, časy… Seznamy všeho druhu. Nástroje pro redakční korektury. Odkazy (hypertext), bibliografické citace. –Záhlaví, které musí mít každý dokument (jedna z mála povinných věcí v TEI). Popis dokumentu a zdrojů, z nichž byl odvozen, autorská práva, distribuční podmínky… (elektronické knihovny) Popis zvoleného kódování. Tématické zařazení, použité jazyky, zařazení autora… Historie změn dokumentu. „Nikdo pravděpodobně nepotřebuje každou věc, kterou umíme popsat. Ale každou věc, kterou umíme popsat, pravděpodobně někdo potřebuje.“
http://ckl.mff.cuni.cz/~zeman/57 Základní sady značek Šest sad pro dokumenty, u nichž převažuje zařazení do jedné třídy: próza, verše, drama, přepis mluveného slova, slovník, terminologická databáze. Další dvě sady pro dokumenty, které třídy kombinují: obecná a smíšená. Liší se podle zacházení s částmi dokumentu.
http://ckl.mff.cuni.cz/~zeman/58 Dělení dokumentu na části V různých dokumentech různé názvy částí: kapitoly, oddíly, díly, části… Bez ohledu na název podobné vlastnosti: –Jsou členěny hierarchicky. –Samostatná část je nekompletní. Bez ohledu na název stejný prvek v TEI: pro rekurzi, pro obyčejné členění (věty). Atribut TYPE : jiné než hierarchické vlastnosti.
http://ckl.mff.cuni.cz/~zeman/59 Třídy prvků Prvky ze sad TEI jsou řazeny do tříd. Modelové třídy: prvky se objevují na stejném místě ve struktuře dokumentu. Atributové třídy: prvky mají stejné atributy. Jeden prvek může patřit do více tříd současně. Třídy mohou mít podtřídy i nadtřídy. Třídy jsou definovány v DTD pomocí parametrických entit lze přidávat prvky do tříd.
http://ckl.mff.cuni.cz/~zeman/60 Přidávání prvků do tříd Chceme-li přidat do třídy m.divtop nový prvek (třeba ) a umožnit tak jeho použití kdekoli, kde jsou povoleny i ostatní prvky třídy, jediné, co musíme udělat, je předefinovat parametrickou entitu x.divtop :
http://ckl.mff.cuni.cz/~zeman/61 Přejmenovávání a odstraňování prvků Následující deklarace přejmenuje prvek na : Následující deklarace odstraní prvek :
http://ckl.mff.cuni.cz/~zeman/62 Globální atributová třída Atributy, které existují u všech TEI prvků: –ID je SGML identifikátor prvku (jedinečný). –N je jméno nebo číslo prvku, ne nutně jedinečné (kanonická reference TEI). –LANG udává jazyk, a tedy i písmo, použité pro obsah prvku. –REND může popsat zobrazení obsahu (např. tučně), pokud není vzhled dán jinak.
http://ckl.mff.cuni.cz/~zeman/63 Přídavné sady značek Je jich zatím deset. Specifické účely: např. přepis řeči; kontextová informace potřebná v textových korpusech; podrobnější rozbor jmen a dat; abstrakce jako sítě, grafy, stromy; matematické vzorce a tabulky… Obecnější účely: např. propojování odkazů a paralelních textů; lingvistická analýza (např. identifikace morfémů); struktury rysů; stupeň nejistoty či nejednoznačnosti zakódované informace…