630 likes | 733 Views
Počítačové zpracování přirozeného jazyka. Standardy pro anotaci jazykových dat. Daniel Zeman http://ckl.mff.cuni.cz/~zeman/. XML. eXtensible Markup Language http://www.xml.org/xml/resources_focus_beginnerguide.shtml. Značkování.
E N D
Počítačové zpracování přirozeného jazyka Standardy pro anotaci jazykových dat Daniel Zeman http://ckl.mff.cuni.cz/~zeman/
XML • eXtensible Markup Language • http://www.xml.org/xml/resources_focus_beginnerguide.shtml http://ckl.mff.cuni.cz/~zeman/
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/
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. <f>Skákal<f>pes<f>přes<f>oves<d>. <f>Skákal<l>skákat<f>pes<l>pes<f>… <f>Skákal<l>skákat<r>1<f>pes<l>pes<g>1… http://ckl.mff.cuni.cz/~zeman/
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/
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/
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/
Příklad dokumentu:novinový článek http://ckl.mff.cuni.cz/~zeman/
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/
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/
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/
Oddělit logickou strukturuod 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/
Formát SGML <RUBRIKA>Ze zahraničí</RUBRIKA> <NADPIS>Gerhard Schröder v Praze</NADPIS> <PODTITUL>První zahraniční cesta vítěze… <UVOD><Q>Vztahy s Čechy jsou naší prioritou,</Q> řekl…</UVOD> <AUTOR>Igor Hnízdo</AUTOR> <ODSTAVEC>Řadu let vládla… <ODSTAVEC>… http://ckl.mff.cuni.cz/~zeman/
Ale v RTF jsou stylya v TeXu makra! {\rtf1\ansi\ansicpg1250\uc1 {\fonttbl{\f0\froman\fcharset0\fprq2 Times New Roman;}{\f1… {\stylesheet{\s0\sb100\sa100\widctlpar\adjustright \lang1029 \snext0Normální;} {\s1\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\lang1029\kerning28 \sbasedon0 \snext15 Nadpis 1;}… {\s1\qc Gerhard Schröder v\~Praze} http://ckl.mff.cuni.cz/~zeman/
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/
I SGML lze využít (či zneužít) ke kódování vzhledu <HTML><BODY> <I><FONT FACE="Arial" SIZE=2><P>ZE ZAHRANIÈÍ</P> </I></FONT><B><FONT SIZE=6><P ALIGN="CENTER">Gerhard Schröder v Praze</P> </FONT><FONT FACE="Arial" SIZE=3><P ALIGN="CENTER">První zahranièní cesta vítìze voleb vede k nám</P></FONT></BODY></HTML> http://ckl.mff.cuni.cz/~zeman/
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/
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/
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 3.1 • 1993: zatím nejrozšířenější aplikace SGML: HTML http://ckl.mff.cuni.cz/~zeman/
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/
Příklad DTD <!ELEMENT CLANEK - - (RUBRIKA?, NADPIS, PODTITUL?, UVOD?, AUTOR, TELO)> <!ELEMENT RUBRIKA - O (#PCDATA)> <!ELEMENT NADPIS - O (#PCDATA)> <!ELEMENT PODTITUL - O (#PCDATA)> <!ELEMENT UVOD - O ((#PCDATA | Q)+)> <!ELEMENT TELO - O (ODSTAVEC+)> <!ELEMENT ODSTAVEC - O ((#PCDATA | Q)+)> <!ELEMENT Q - - (#PCDATA)> http://ckl.mff.cuni.cz/~zeman/
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/
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, <PODTITUL> zastupuje i </NADPIS>. • <!ELEMENT NADPIS - O (#PCDATA)> • „O“ nebo „o“ jako „omitted“ (ne 0)! http://ckl.mff.cuni.cz/~zeman/
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/
Operace sřetězení: , (čárka) • <!ELEMENT A - - (B, C)> • 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/
Operace sjednocení: & (ampersand) • <!ELEMENT A - - (B & C)> • 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/
Operace disjunkce: | (svislítko) • <!ELEMENT A - - (B | C)> • Prvek A odpovídá buď prvku B, nebo prvku C, ale ne oběma za sebou. http://ckl.mff.cuni.cz/~zeman/
Volitelnost: ? (otazník) • <!ELEMENT A - - (B?)> • Prvek A může být realizován prvkem B, nebo může být prázdný. • <!ELEMENT A - - (B?, C)> • Prvek A se skládá z B a C, kde prvně jmenovaný je nepovinný. http://ckl.mff.cuni.cz/~zeman/
Volitelnost a iterace: * (hvězdička) • <!ELEMENT A - - (B*)> • Prvek A může být prázdný, nebo obsahovat libovolný počet prvků B. http://ckl.mff.cuni.cz/~zeman/
Nejméně jeden výskyt: + (plus) • <!ELEMENT A - - (B+)> • Prvek A se skládá z libovolného počtu prvků B, nejméně však z jednoho. http://ckl.mff.cuni.cz/~zeman/
Priorita operátorů • Indikátory výskytů mají vyšší prioritu než spojovací operátory. Srovnejte: <!ELEMENT P - - (#PCDATA|Q)*> ale <!ELEMENT P - - (#PCDATA|Q*)> • Uvnitř jedněch závorek se smí vyskytnout pouze jeden druh spojovacího operátoru. http://ckl.mff.cuni.cz/~zeman/
#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/
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ý). <!ELEMENT A - - ((C1&C2),C3) +(B)> http://ckl.mff.cuni.cz/~zeman/
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ý). <!ELEMENT C1 - - (#PCDATA) -(B)> http://ckl.mff.cuni.cz/~zeman/
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ř. <TODAY>) http://ckl.mff.cuni.cz/~zeman/
Prvky s atributy <DOPIS DRUH=FIREMNI> <ODSTAVEC CISLO=5>Toto je pátý odstavec dopisu.</ODSTAVEC> </DOPIS> <!ELEMENT DOPIS - - (ODSTAVEC*)> <!ATTLIST DOPIS DRUH (FIREMNI|SOUKROMY) FIREMNI> <!ATTLIST element atribut hodnoty implicitní_hodnota> http://ckl.mff.cuni.cz/~zeman/
Typy hodnot atributů CDATA <TABLE ARRANGE="1 2/3 4"> ENTITY <ARTWORK NAME="PIC"> ENTITIES <ARTWORK NAME="PIC1 PIC2"> ID <BIB ID="Capek"> IDREF <BIBREF REFID="Capek"> IDREFS <BIBREF REFID="Capek Polacek"> NAME <MAIL FROM="Karel"> NAMES <MAIL FROM="Karel Honza"> NMTOKEN <BUILDING NO="R-021"> http://ckl.mff.cuni.cz/~zeman/
Typy hodnot atributů (pokračování) NMTOKENS <BUILDING NO="R-021 R-023"> NOTATION <FORMULA NOTATION="EQN"> NUMBER <C N="7"> NUMBERS <TABLE NO="5 0 8 7"> NUTOKEN <PHONE NO="2191-4288"> NUTOKENS <PHONE NO="2191 - 4288"> http://ckl.mff.cuni.cz/~zeman/
Pro jeden prvek nejvýše jeden seznam atributů <!ATTLIST f case (lower|cap|upper) lower cphr NMTOKEN #IMPLIED id NMTOKEN #IMPLIED> (Volné místo mezi slovy se interpretuje jako jediná mezera, a to i v uvozovkách.) <!ATTLIST SEZNAM DRUH (odrazky,cislovany) odrazky ZNAK (odrazky,hvezdicky,cisla) cislo> http://ckl.mff.cuni.cz/~zeman/
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/
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/
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. <!ENTITY UFAL "Ústav formální a aplikované lingvistiky"> <!ENTITY OMEGA "Ω"> <P>Značkou jednotky elektrického odporu je &OMEGA; (čti omega).</P> http://ckl.mff.cuni.cz/~zeman/
Odkaz na nedefinovanou entitu <P>Značkou pro ohm je &bflmpsvz;.</P> • 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. <!ENTITY #DEFAULT "Varování: Odkaz na nedefinovanou entitu."> http://ckl.mff.cuni.cz/~zeman/
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/
Lokální externí entita • Lokální entita umožňuje rozdělit velký dokument na více souborů, například po kapitolách. <!ENTITY KAPITOL1 SYSTEM "C:\Kapitola 1.sgml"> http://ckl.mff.cuni.cz/~zeman/
Veřejná externí entita • Veřejná entita umožňuje použít DTD nebo sadu entit a prvků, definovanou jako navazující standard. <!ENTITY PUBLISH PUBLIC "ISO 8879:1986//ENTITIES Publishing//EN" "c:\a.ent"> • 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/
Propojení dokumentu a DTD • Každý dokument musí buď přímo obsahovat DTD, nebo alespoň odkaz na externí DTD. <!DOCTYPE DOPIS SYSTEM "dopis.dtd"> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> http://ckl.mff.cuni.cz/~zeman/
Vložení DTD do dokumentu <!DOCTYPE MAIL [ <!ELEMENT MAIL - - ((FROM & TO), BODY, CLOSE?)> <!ELEMENT (TO|FROM|CLOSE) - O #PCDATA> <!ELEMENT BODY - O (P)*> <!ELEMENT P - O (#PCDATA|Q)*> <!ELEMENT Q - - (#PCDATA)> <!ATTLIST MAIL STATUS (PUBLIC|CONFIDEN) PUBLIC>]> <MAIL>… http://ckl.mff.cuni.cz/~zeman/
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/
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. • 1300 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/