ˇ ˇ VYSOKÉ UCENÍ TECHNICKÉ V BRNE BRNO UNIVERSITY OF TECHNOLOGY
ˇ FAKULTA INFORMACNÍCH TECHNOLOGIÍ ˇ ˇ ÚSTAV POCÍTACOVÉ GRAFIKY A MULTIMÉDIÍ FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF COMPUTER GRAPHICS AND MULTIMEDIA
DATABÁZE XML PRO SPRÁVU SLOVNÍKOVÝCH DAT
ˇ BAKALÁRSKÁ PRÁCE BACHELOR’S THESIS
AUTOR PRÁCE AUTHOR
BRNO 2008
MARTIN SKALICKÝ
ˇ ˇ VYSOKÉ UCENÍ TECHNICKÉ V BRNE BRNO UNIVERSITY OF TECHNOLOGY
ˇ FAKULTA INFORMACNÍCH TECHNOLOGIÍ ˇ ˇ ÚSTAV POCÍTA COVÉ GRAFIKY A MULTIMÉDIÍ FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF COMPUTER GRAPHICS AND MULTIMEDIA
DATABÁZE XML PRO SPRÁVU SLOVNÍKOVÝCH DAT XML DATABASES FOR DICTIONARY DATA MANAGEMENT
ˇ BAKALÁRSKÁ PRÁCE BACHELOR’S THESIS
AUTOR PRÁCE
MARTIN SKALICKÝ
AUTHOR
VEDOUCÍ PRÁCE SUPERVISOR
BRNO 2008
doc. RNDr. PAVEL SMRŽ, Ph.D.
Abstrakt C´ılem praktick´e ˇca´sti t´eto pr´ace je pˇrev´est nevalidn´ı pseudoXML data do validn´ıho XML a d´ale pak prov´adˇet pokroˇcilou validaci pomoc´ı Schematronu. Teoretick´a ˇca´st se t´ yk´a popisu znaˇckovac´ıho jazyka XML. D´ale se vˇenuje uk´azk´am a popisu ˇ ast, kde je pops´ana implemendat a rozd´ıl˚ u standard˚ u OLIF, ISLE/MILE a dalˇs´ıch. C´ tace, vysvˇetluje probl´emy vznikl´e pˇri pˇrevodu do standartu a postup pr´ace. V z´avˇeru pr´ace je vyhodnocen´ı statistik.
Kl´ıˇ cov´ a slova XML, slovn´ıky, OLIF, pˇrevody, Schematron, ISLE/MILE, DTD., TBX, Saxon, statistiky slovn´ıku, Python
Abstract This Bachelor’s thesis practical part’s main goal is transformation of invalid pseudoXML data into valid XML and use Schematron for advance validation. Teoretical part is about XML markup language. Next part ilustrates and describes data storing in OLIF, ISLE/MILE etc. standards and differences between them. Part, where the thesis concentrates on implementation, describes problems and work progress. Last part is about statistic evaluation.
Keywords XML, dictionary, OLIF, transformation, Schematron, ISLE/MILE, DTD., TBX, Saxon, dictionary statistics, Python
Citace Martin Skalick´ y: Datab´aze XML pro spr´avu slovn´ıkov´ ych dat, bakal´aˇrsk´a pr´ace, Brno, FIT VUT v Brnˇe, 2008
Datab´ aze XML pro spr´ avu slovn´ıkov´ ych dat Prohl´ aˇ sen´ı Prohlaˇsuji, ˇze jsem tuto bakal´aˇrskou pr´aci vypracoval samostatnˇe pod veden´ım pana doc. RNDr. Pavla Smrˇze Ph.D. Uvedl jsem vˇsechny liter´arn´ı prameny a publikace, ze kter´ ych jsem ˇcerpal. ...................... Martin Skalick´ y 13. kvˇetna 2008
Podˇ ekov´ an´ı Zde bych chtˇel podˇekovat vedouc´ımu m´e bakal´aˇrsk´e pr´ace doc. RNDr. Pavlu Smrˇzovi Ph.D. za urˇcov´an´ı smˇeru m´e bakal´aˇrsk´e pr´ace a odbornou pomoc pˇri jej´ı tvorbˇe.
c Martin Skalick´
y, 2008. Tato pr´ace vznikla jako ˇskoln´ı d´ılo na Vysok´em uˇcen´ı technick´em v Brnˇe, Fakultˇe informaˇcn´ıch technologi´ı. Pr´ace je chr´anˇena autorsk´ym z´akonem a jej´ı uˇzit´ı bez udˇelen´ı opr´avnˇen´ı autorem je nez´akonn´e, s v´yjimkou z´akonem definovan´ych pˇr´ıpad˚ u.
Obsah ´ 1 Uvod
3
2 Znaˇ ckovac´ı jazyk XML ´ 2.1 Uvod do XML . . . . . . . . . . . . . . . 2.1.1 Jazykov´a podpora . . . . . . . . . 2.1.2 Obsah dokumentu XML . . . . . 2.1.3 Transformace a zobrazen´ı form´atu 2.2 Syntaxe XML dokumentu . . . . . . . . 2.2.1 XML znaˇcky . . . . . . . . . . . 2.3 Parsov´an´ı XML . . . . . . . . . . . . . . 2.3.1 DOM . . . . . . . . . . . . . . . 2.3.2 SAX 1.0 . . . . . . . . . . . . . . 2.4 Struktura a validace dokumentu XML . 2.4.1 DTD . . . . . . . . . . . . . . . . 2.4.2 Sch´ema XML . . . . . . . . . . . 2.4.3 Relax NG . . . . . . . . . . . . . 2.4.4 Schematron . . . . . . . . . . . . 2.5 XSL transformace 1.0 . . . . . . . . . . . 2.5.1 Model zaloˇzen´ y na vzorech . . . . 2.5.2 Procedur´aln´ı model . . . . . . . 2.5.3 Deklarativn´ı model . . . . . . . . 2.6 Adresace v XML . . . . . . . . . . . . .
. . . . . . . . . . . . XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3 Slovn´ıkov´ e datab´ aze 3.1 TBX . . . . . . . . . . . . . . . . . . . . . . 3.2 OLIF . . . . . . . . . . . . . . . . . . . . . 3.2.1 Historie OLIFu . . . . . . . . . . . . 3.2.2 Metamodel standardu OLIF . . . . . 3.2.3 Dokument XML ve standardu OLIF 3.3 Dalˇs´ı standardy . . . . . . . . . . . . . . . . 3.3.1 ISLE/MILE . . . . . . . . . . . . . . 3.3.2 XLIFF . . . . . . . . . . . . . . . . .
1
. . . . . . . .
. . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . .
. . . . . . . . . . . . . . . . . . .
4 4 4 4 5 5 5 5 6 7 7 7 8 8 9 9 10 10 11 12
. . . . . . . .
13 13 17 17 17 18 22 22 25
4 Implementace 4.1 Vstupn´ı data . . . . . . . . . . . . . . . . . . . . . . 4.1.1 Statistiky ze vstupn´ıch dat . . . . . . . . . . . 4.2 Parser pro pˇrevod dat do OLIFu . . . . . . . . . . . . 4.3 Schematron pro validaci v´ ysledn´eho XML dokumentu 4.3.1 Programy pro spuˇstˇen´ı schematronu . . . . . . 4.3.2 Pˇredpis schematronu pro validaci . . . . . . . 4.4 Probl´emy pˇri implementaci a moˇznosti ˇreˇsen´ı . . . . .
. . . . . . .
26 26 27 28 29 29 30 32
5 Statistiky 5.1 Implementace skriptu pro z´ısk´an´ı statistik . . . . . . . . . . . . . . . 5.2 V´ ysledn´e statistiky . . . . . . . . . . . . . . . . . . . . . . . . . . . .
34 34 34
6 Z´ avˇ er
37
A Pˇ r´ılohy bakal´ aˇ rsk´ e pr´ ace
40
2
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
Kapitola 1 ´ Uvod Tato bakal´aˇrsk´a pr´ace se t´ yk´a datab´az´ı ve form´atu XML pro spr´avu slovn´ıkov´ ych dat a je rozdˇelena na teoretickou a prakticou ˇc´ast. Teoretick´a ˇca´st pr´ace se zamˇeˇruje na slovn´ıky, kter´e jsou nejˇcastˇeji v kniˇzn´ı podobˇe a proto je potˇreba ˇreˇsit jejich uchov´av´an´ı v univerz´aln´ım a dostupn´em form´atu. Vhodn´e podm´ınky pro ukl´ad´an´ı tˇechto informac´ı poskytuje znaˇckovac´ı jazyk XML, kter´ y je bl´ıˇze pops´an v 2. kapitole pr´ace. V tomto jazyce existuj´ı standardy pro ukl´ad´an´ı slovn´ıkov´ ych dat, jejich popisu a rozd´ıl˚ u mezi nˇemi se vˇenuji v kapitole (3). Mezi takov´eto standardy patˇr´ı napˇr´ıklad OLIF (3.2. kapitola), TBX(3.1. kapitola) a dalˇs´ı (3.3. kapitola). Praktick´a ˇc´ast pr´ace je implementace parseru v jazyce Python, jehoˇz popis se nach´az´ı ve 4. kapitole. V t´eto kapitole je vysvˇetlen postup pro pˇrevod nestandardn´ıho a nevalidn´ıho pseudoXML do standardu OLIF a probl´emy, kter´e se pˇri pˇrevodu vyskytly. Praktick´a ˇc´ast se zab´ yv´a tak´e pokroˇcil´e validace dokumentu XML ve standardu OLIF, kter´ y jsem si vybral jako reprezentaci pˇreveden´ ych dat, pomoc´ı Schematronu (viz 4.3) a javovsk´eho programu saxon. 5. kapitola obsahuje popis z´ısk´av´an´ı statistik za pomoci jazyku Python a parseru sax ze slovn´ıku ve form´atu OLIF a tak´e nˇekter´e z´ıskan´e statistiky z v´ ysledn´eho pˇreveden´eho slovn´ıku.
3
Kapitola 2 Znaˇ ckovac´ı jazyk XML XML (eXtensible Markup Language, ˇcesky rozˇsiˇriteln´ y znaˇckovac´ı jazyk)[1] je znaˇckovac´ı jazyk, kter´ y byl vyvinut a standardizov´an konsorciem W3C. I kdyˇz se o XML mluv´ı pˇredevˇs´ım v souvislosti s webov´ ymi aplikacemi (n´astupce HTML)[9], je jeho rozˇs´ıˇren´ı daleko vˇetˇs´ı. D´ıky tomu, ˇze umoˇzn ˇuje popsat strukturu dokumentu z hlediska vˇecn´eho obsahu i jednotliv´ ych ˇca´st´ı, pouˇz´ıv´a se napˇr. pro ukl´ad´an´ı dat, v´ ymˇenu informac´ı mezi aplikacemi, tvorbˇe technick´e dokumentace atd.
2.1
´ Uvod do XML
Specifikace jazyku XML je zdarma dostupn´a kaˇzd´emu, a to na str´ank´ach konzorcia W3C. V minulosti se pouˇz´ıvalo mnoho r˚ uzn´ ych form´at˚ u pro uchov´av´an´ı informac´ı (napˇr. DOC, XLS nebo PPT), kter´e potˇrebovaly pro korektn´ı zobrazen´ı obsaˇzen´ ych dat speci´aln´ı software od r˚ uzn´ ych distributor˚ u. Dnes jiˇz tento zp˚ usob nen´ı vhodn´ y, protoˇze mnoho firem a uˇzivatel˚ u pouˇz´ıv´a odliˇsn´e operaˇcn´ı a informaˇcn´ı syst´emy a nen´ı jist´e, zda kaˇzd´ y vlastn´ı pˇr´ısluˇsn´e aplikace. Vznik´a tedy potˇreba univerz´aln´ıho, jednoduch´eho a volnˇe pˇr´ıstupn´eho form´atu pro uchov´av´an´ı dat. A pˇresnˇe pro tento u ´ˇcel je vhodn´e XML.
2.1.1
Jazykov´ a podpora
V´ yhodou XML je jiˇz od poˇca´tku podpora r˚ uzn´ ych svˇetov´ ych jazyk˚ u a znakov´ ych sad (implicitnˇe je to ISO 10646). V jednom XML dokumentu m˚ uˇzeme m´ıt texty v r˚ uzn´ ych jazyc´ıch. Explicitnˇe se m˚ uˇze pouˇz´ıvat i jin´e k´odov´an´ı napˇr. utf8, windows1250, iso-8859-2 atd. Informace o zvolen´em k´odov´an´ı mus´ı b´ yt v kaˇzd´em dokumentu pˇresnˇe urˇcena.
2.1.2
Obsah dokumentu XML
V´ yznam jednotliv´ ych ˇca´st´ı dokumentu, napsan´eho pomoc´ı XML, urˇcuj´ı pouˇzit´e tagy (znaˇcky). Takto napsan´ y dokument obsahuje v´ıce informac´ı neˇz dokument, kter´ y nese 4
jeˇstˇe nav´ıc prvky vzhledu dokumentu, jako napˇr. vzhled p´ısma, odsazen´ı, rozloˇzen´ı a podobnˇe. XML nem´a ˇz´adn´e prostˇredky pro urˇcen´ı vlastn´ıho vzhledu a o definici vzhledu se star´a nˇekolik stylov´ ych jazyk˚ u. Tyto jazyky urˇcuj´ı, jak se maj´ı jednotliv´e elementy zobrazit.
2.1.3
Transformace a zobrazen´ı form´ atu XML
Jeden styl (viz kapitola 2.1.2) m˚ uˇzeme pouˇz´ıvat na dokumenty stejn´eho typu, stejnˇe tak je moˇznost pro jeden dokument urˇcit v´ıce r˚ uzn´ ych styl˚ u. Existuje nˇekolik stylov´ ych jazyk˚ u. D´ıky vyuˇzit´ı ve webov´ ych aplikac´ıch patˇr´ı mezi nejzn´amˇejˇs´ı kask´adov´e styly (CSS). Ale lze je pouˇz´ıt pouze pro jednoduch´e form´atov´an´ı dokumentu, kter´e slouˇz´ı k zobrazen´ı dokumentu na obrazovce. Moˇznost´ı pˇrevodu form´atu XML do jin´eho form´atu je rodina jazyk˚ u XSL (eXtensible Stylesheet Language) (bl´ıˇze v kapitole 2.5). Umoˇzn ˇuje dokument r˚ uznˇe upravit a transformovat. V´ ysledkem m˚ uˇze b´ yt HTML k´od, PostScriptov´ y soubor, zdrojov´ y k´od pro TEX a dalˇs´ı.
2.2 2.2.1
Syntaxe XML dokumentu XML znaˇ cky
Samotn´e XML neobsahuje pˇreddefinovan´e znaˇcky (elementy, tagy), kter´e tvoˇr´ı vˇetˇsinu obsahu XML. Proto je tˇreba vytvoˇrit vlastn´ı elementy, jeˇz budou popisovat a omezovat logick´e struktury dokumentu. Mohou obsahovat atributy, kter´e d´ale popisuj´ı element (viz pˇr´ıklad 1). Pˇ r´ıklad 1 jednoduch´ y z´apis element˚ u v XML 2.2.1
<Jmeno>Martin Skalick´ y 15.04.1986
Pro kontrolu spr´avnosti takov´eho XML dokumentu slouˇz´ı parsery (kapitola 2.3) a valid´atory (kapitola 2.4).
2.3
Parsov´ an´ı XML
Kdyˇz potˇrebujeme pracovat s XML dokumenty, tak nen´ı nutn´e ps´at vlastn´ı analyz´ator. Pro tento u ´ˇcel m˚ uˇzeme vyuˇz´ıt nˇekter´e z jiˇz existuj´ıc´ıch parser˚ u, napˇr. SAX (kapitola 2.3.2) nebo DOM (kapitola 2.3.1). Samotn´ y XML parser je program nebo program´atorsk´a knihovna, kter´a se star´a o naˇcten´ı, n´ızko´ urovˇ novou syntaktickou anal´ yzu XML dokumentu a jeho pˇrevod do infosetu. Infoset[20] popisuje informace, 5
jeˇz lze z´ıskat (o uzlu, elementu, dokumentu, atributu a dalˇs´ı). Pˇri parsov´an´ı XML dokumentu se vyuˇz´ıvaj´ı dva hlavn´ı pˇr´ıstupy. Prvn´ım je ud´alostmi ˇr´ızen´e zpracov´an´ı XML dokumentu. Tento zp˚ usob m´a dvˇe velk´e v´ yhody: • je rychl´ y • m´a mal´e pamˇet’ov´e n´aroky. Naopak nev´ yhodou z˚ ust´av´a nutnost zpracovat XML dokument bˇehem jednoho sekvenˇcn´ıho pr˚ uchodu. Druh´ y pˇr´ıstup ke zpracov´an´ı XML dokumentu pˇredstavuje pˇr´ıstup zaloˇzen´ y na stromov´e reprezentaci dokumentu. Pˇri tomto zp˚ usobu m˚ uˇze - po naˇcten´ı cel´eho XML dokumentu (zaplat´ıme za to niˇzˇs´ı rychlost´ı a velkou pamˇet’ovou n´aroˇcnost´ı) - program´ator kdykoliv pˇristupovat k libovoln´e ˇca´sti XML dokumentu. Kaˇzd´ y objekt odpov´ıd´a jednomu uzlu ve stromu XML dokumentu a nab´ız´ı metody pro zjiˇstˇen´ı sv´eho typu a hodnoty sv´ ych potomk˚ u a rodiˇc˚ u.
2.3.1
DOM
Nejzn´amˇejˇs´ım rozhran´ım zaloˇzen´ ym na stromov´e reprezentaci XML dokumentu (viz kapitola 2.3.1) je DOM (Document Object Model)[19], kter´ y definuje standard pro pˇr´ıstup a pr´aci s XML dokumenty. Tento standard vytvoˇrilo konsorcium W3C a je zcela nez´avisl´e na pouˇz´ıvan´em programovac´ım jazyku. XML dokument je reprezentov´an objekty, jeˇz zastupuj´ı jednotliv´e prvky XML dokumentu (elementy, atributy, textov´ y obsah atd.). Tyto objekty nab´ız´ı metody pro zjiˇstˇen´ı sv´ ych vlastnost´ı (typ, hodnota, rodiˇce, potomci a dalˇs´ı).
Obr´azek 2.1: Uk´azka stromov´e struktury DOM
6
Strom dokumentu lze proch´azet libovolnˇe a opakovanˇe, d´ıky ˇcemuˇz je zpracov´an´ı XML dokumentu velmi jednoduch´e.
2.3.2
SAX 1.0
Asi nejzn´amˇejˇs´ı rozhran´ı pouˇz´ıvaj´ıc´ı ud´alostmi ˇr´ızen´ y pˇr´ıstup je SAX[12] (Simple API for XML). SAX nen´ı standard W3C, ale vytvoˇrila ho skupina lid´ı kolem konference XML-DEV. P˚ uvodn´ı n´avrh SAXu je pro programovac´ı jazyk Java, ale jeho implementace se rozˇs´ıˇrila pro mnoho dalˇs´ıch jazyk˚ u napˇr´ıklad Python. Oproti pˇr´ıstupu DOM je SAX vhodnˇejˇs´ı na velk´e dokumenty, protoˇze je nemus´ı ukl´adat v pamˇeti. Jeho pomoc´ı se m˚ uˇzeme zamˇeˇrit pouze na ˇc´ast dokumentu, se kterou potˇrebujeme pracovat a vytvoˇrit si ji jako strom. Nev´ yhody SAXu spoˇc´ıvaj´ı v tom, ˇze si nem˚ uˇzeme dokument upravit a nelze se vr´atit na jiˇz zpracovan´a data.
2.4
Struktura a validace dokumentu XML
Jazyk XML dovoluje vytv´aˇren´ı vlastn´ıch znaˇcek (tag˚ u), a proto tak´e nast´av´a potˇreba popsat strukturu dokumentu XML. K tomuto u ´ˇcelu slouˇz´ı sch´emata. V takov´em sch´ematu pak bude pops´ano, jak bude vypadat struktura a omezen´ı naˇseho nov´eho znaˇckovac´ıho jazyku. V´ yhoda formalizovan´e specifikace je v tom, ˇze znemoˇzn ˇuje r˚ uzn´e interpretace v´ yznamu poloˇzek. Sch´ema jednoznaˇcnˇe definuje, jak m´a XML dokument vypadat a proto ho lze vyuˇz´ıt pro validaci (ovˇeˇren´ı spr´avnosti), coˇz je hlavn´ı pouˇzit´ı sch´emat. Validace je proces, pˇri kter´em je ovˇeˇrena spr´avnost dodrˇzen´ı popisu sch´ematu. Tato vlastnost se hod´ı, kdyˇz si potˇrebujeme ovˇeˇrit, jestli je dokument, kter´ y n´am poslal kolega, v dohodnut´em form´atu. Validace ulehˇcuje pr´aci i aplikac´ım, kter´e nemus´ı prov´adˇet kontrolu poˇzadovan´eho dokumentu. O tento u ´kol se star´a pr´avˇe validace. Nˇekter´e jazyky pro popis sch´ematu dokumentu dokonce umoˇzn ˇuj´ı urˇcit poˇzadovan´ y typ dat jednotliv´ ych element˚ u a atribut˚ u, jako ˇretˇezec, ˇc´ıslo, datum a dalˇs´ı. Bˇehem validace se pak jednotliv´ ym ˇc´astem pˇriˇrazuje jejich datov´ y typ, coˇz je v´ yhodn´e, protoˇze aplikace pak nepracuje jenom s ˇretˇezci (jak je bˇeˇzn´a praxe), ale s urˇcen´ ymi datov´ ymi typy.
2.4.1
DTD
DTD (Document Type Definition)[18] je starˇs´ı a podporov´ano mnoˇzstv´ım aplikac´ı. Pokud je specifikov´ano DTD, je moˇzn´e automaticky kontrolovat, jestli je XML podle jeho pˇredpisu. Tuto pr´aci prov´ad´ı parser (viz pˇr´ıklad 2.3). DTD nen´ı jedin´ ym definiˇcn´ım jazykem pro XML. Jeho nev´ yhodou je, ˇze nepodporuje moˇznost kontroly typu dat (ˇc´ısla, mˇenov´e u ´daje, datum a ˇcas) a m´a prakticky nulovou podporu jmenn´ ych prostor˚ u (umoˇzn ˇuje jednoznaˇcnou indentifikaci element˚ u) viz pˇr´ıklad 2.
7
Pˇ r´ıklad 2 velice jednoduch´e DTD 2.4.1 ]>
Pomoc´ı DTD byla vytvoˇrena r˚ uzn´a sch´emata, kter´a definuj´ı znaˇcky (n´azvy element˚ u) pro konkr´etn´ı typy dokument˚ u. Pˇr´ıkladem m˚ uˇze b´ yt starˇs´ı verze slovn´ıku OLIF, kter´ y definuje struktury pro ukl´ad´an´ı slov´ıkov´ ych dat. K nˇekter´ ym sch´emat˚ um jsou dod´avany i XSL soubory pro dalˇs´ı zpracov´av´an´ı dat. Dalˇs´ı vlastnost´ı XML je, ˇze v jednom dokumentu m˚ uˇzeme pouˇz´ıvat najednou nez´avisle na sobˇe nˇekolik druh˚ u znaˇckovan´ı pomoc´ı jmenn´ ych prostor˚ u (namespaces). To umoˇzn ˇuje kombinovat v jednom dokument˚ u nˇekolik r˚ uzn´ ych definic ve formˇe DTD nebo sch´emat bez konflikt˚ u v pojmenov´an´ı element˚ u.
2.4.2
Sch´ ema XML
Kvalitnˇejˇs´ı moˇznost´ı popisu sch´ema XML dokumentu je XML sch´ema (XML Schema Definition (XSD)), kter´e uˇz umoˇzn ˇuje pro jednotliv´e elementy definovat jejich datov´ y typ a je cel´e zaps´ano syntax´ı XML. Sloˇzit´e XSD soubory nen´ı vˇsak pˇr´ıliˇs dobr´e tvoˇrit jinak neˇz za pomoci specializovan´ ych editor˚ u sch´emat. XML sch´ema definuje: • M´ısta v dokumentu, na kter´ ych se mohou vyskytovat r˚ uzn´e elementy. • Kter´e elementy jsou potomky jin´ ych element˚ u. • Atributy, jejich datov´e typy a hodnoty. • Poˇrad´ı, poˇcty, datov´e typy a hodnoty element˚ u. • Zda element m˚ uˇze b´ yt pr´azdn´ y, nebo zda mus´ı obsahovat text.
2.4.3
Relax NG
Navrhnut´ y sdruˇzen´ım OASIS (The Organization for the Advancement of Structured Information Standards) je v dneˇsn´ı dobˇe ISO standardem. Je postaven´ y na z´akladech jazyk˚ u RELAX a TREX. • RELAX (Regular Language for XML, Description XML) - jednoduch´ y jazyk zaloˇzen´ y na matematick´e teorii alejov´ ych automat˚ u aplikovanou XML stromy. • TREX je jazyk pro validaci XML dokument˚ u.
8
Relax NG (REgular LAnguage for XML Next Generation) [15] je moment´alnˇe obl´ıbenˇejˇs´ı a kvalitnˇejˇs´ı [2] podporou pro psan´ı sch´emat XML dokumentu. Relax NG je zaloˇzen na vzorech a ne na datov´ ych typech jako tˇreba XSD. To znamen´a, ˇze cel´e sch´ema je vzorem dokumentu, kter´ y se skl´ad´a ze vzor˚ u pro elemety, atributy a textov´e uzly. Vlastnosti vzor˚ u: • Mohou b´ yt d´ale kombinov´any do uspoˇr´adan´ ych i neuspoˇr´adan´ ych skupin. • Mohou b´ yt voliteln´e a m˚ uˇze u nich b´ yt urˇcen poˇcet opakov´an´ı. D´ıky tˇemto vlastnostem a solidn´ımu matematick´emu z´akladu m˚ uˇzeme snadno a pˇrehlednˇe popsat i sloˇzit´e struktury dokumentu. Dalˇs´ı vlastnost´ı, jeˇz dˇel´a Relax NG jeˇstˇe o nˇeco lepˇs´ı, je z´apis sch´ematu v textov´e syntaxi, kter´a je u ´spornˇejˇs´ı neˇz z´apis zaloˇzen´ y na XML, kter´ y lze pro z´apis tak´e pouˇz´ıt. Relax NG samo o sobˇe nepodporuje datov´e typy a pro jejich doplnˇen´ı je potˇreba vyuˇz´ıt rozˇs´ıˇren´ı.
2.4.4
Schematron
V´ yˇse zm´ınˇen´a sch´emata zvl´adaj´ı validaci XML dokumentu, ale jejich hlavn´ı ˇcinnost´ı je popis struktury dokumentu XML. Jazyk Schematron je zaloˇzen na zcela odliˇsn´em principu. Jeho pomoc´ı lze zjistit pˇr´ıtomnost nebo absenci urˇcit´ ych vzor˚ u v dokumentu. K z´apisu vzor˚ u pro kontrolu dokumentu XML se vyuˇz´ıv´a jazyku XPath (viz 2.6). D´ıky spojen´ı Schematronu a XPathu, kdy z´ısk´av´ame jeho siln´e vyjadˇrovac´ı prostˇredky, n´am pro validaci staˇc´ı XSLT procesor, protoˇze schematronov´e sch´ema lze pˇrev´est na XSLT transformaci. Struktura sch´ema je velice jednoduch´a. Elementy schematronu patˇr´ı do jmenn´eho prostoru http://purl.oclc.org/dsdl/schematron. Koˇrenov´ y element schema, stejnˇe jako ostatn´ı elementy, obsahuje nˇekolik vzor˚ u pattern. Kaˇzd´ y vzor je sloˇzen z jednoho nebo v´ıce pravidel rule, kter´e maj´ı v atributu context vzor zapsan´ y v jazyce XPath, kter´ y ze vstupn´ıho dokumentu vybere uzly, jeˇz se ch´apou jako aktu´aln´ı uzly pro vyhodnocen´ı XPath v´ yraz˚ u uvnitˇr pravidla. V pravidle se pak pouˇz´ıvaj´ı elementy assert report, kter´e maj´ı pˇripojen atribut test obsahuj´ıc´ı XPath v´ yraz. • Assert - ovˇeˇruje nesplnˇen´ı zadan´ ych podm´ınek (napˇr. neexistuje urˇcit´ y z´aznam, takˇze vyp´ıˇse hl´aˇsen´ı). • Report - ovˇeˇruje splnˇen´ı zadan´e podm´ınky (napˇr. elementy obsahuj´ı souˇcet, vyˇsˇs´ı neˇz je u ´nosn´e). Uvnitˇr textu validaˇcn´ıho hl´aˇsen´ı m˚ uˇzeme pouˇz´ıvat dalˇs´ı elementy.
2.5
XSL transformace 1.0
XSL je jazyk zaloˇzen´ y na XML, kter´ y slouˇz´ı k pˇrevodu XML dokument˚ u na dokumenty jin´eho typu nebo stejn´eho typu, kdyˇz je potˇreba odstranit nekompatibilitu 9
napˇr. mezi verzemi n´avrh˚ u XML dokument˚ u. XSLT [14] nab´ız´ı tˇri odliˇsn´e modely programov´an´ı: Model zaloˇzen´ y na vzorech, procedur´aln´ı model a deklarativn´ı model.
2.5.1
Model zaloˇ zen´ y na vzorech
Tento model je nejjednoduˇsˇs´ı a umoˇzn ˇuje vz´ıt ˇsablonu XML dokumentu a naplnit ji XSLT v´ yrazy, kter´e d´ale dynamicky napln´ı pˇr´ısluˇsn´a m´ısta dokumentu odpov´ıdaj´ıc´ım obsahem. Aby byl tento model pouˇziteln´ y pro n´aˇs uˇcel tak mus´ı: 1. B´ yt dobˇre strukturovan´ y XML dokument. 2. B´ yt specifikov´ano ˇc´ıslo verze XSLT (napˇr. xslt:version=’1.0’). Tato transformace odpov´ıd´a situaci, kdy m´ame jednu ˇsablonu, kter´a obsahuje cel´ y vzorov´ y dokument jako v´ ysledn´ y element viz pˇr´ıklad 3 Pˇ r´ıklad 3 pˇrevod do HTML pomoc´ı modelu zaloˇzen´eho na vzorech 2.5.1
<xsl:value-of select="concat(/v1:zam/krestniJmeno, ’ ’, /v1:zam/prijmeni)"/>
<xsl:value-of select=’/v1:zam/pozice’/>
2.5.2
Procedur´ aln´ı model
ˇ XSLT tak´e umoˇzn ˇuje oddˇelit a zobecnit transformaˇcn´ı logiku od ˇsablony. Sablony mohou b´ yt vol´any jako funkce stejnˇe jako v procedur´aln´ıch programovac´ıch jazyc´ıch (viz pˇr´ıklad 4)
10
Pˇ r´ıklad 4 z´apis Procedur´aln´ıho modelu 2.5.2 <xsl:transform xmlns:v1=’urn:zamestnanec:v1’ xmlns:v2=’urn:zamestnanec:v2’ xmlns:xsl=’http://www.w3.org/1999/XSL/Transform’ version=’1.0’> <xsl:template name="vytvorJmeno"> <jmeno> <xsl:value-of select="concat(/v1:zam/krestni, ’ ’, /v1:zam/prijmeni)" /> <xsl:template match="/">
<xsl:call-template name="vytvorJmeno"/>
2.5.3
Deklarativn´ı model
XSLT nab´ız´ı siln´ y a pruˇzn´ y model, kter´ y je podobn´ y deklarativn´ım jazyk˚ um jako Prolog, Lisp a Scheme. Tento model je zaloˇzen na asociaci ˇsablon se vzory ˇci pravidly. Pˇri prov´adˇen´ı transformace procesor nejdˇr´ıve vyhled´a ˇsablonu se vzorem odpov´ıdaj´ıc´ım koˇreni vstupn´ıho stromu. Uvnitˇr ˇsablony si uˇz m˚ uˇzeme samy urˇcit uzly, kter´ ymi bude procesor proch´azet. XSLT definuje nˇekolik vestavˇen´ ych ˇsablon, kter´e jsou souˇca´st´ı kaˇzd´eho programu (pokud nejsou explicitnˇe pˇrekryty). Tyto ˇsablony maj´ı na programovac´ı model hlubok´ y u ´ˇcinek. Vestavˇen´a ˇsablona apply-templates ˇr´ık´a, aby zpracov´an´ı pokraˇcovalo na vˇsech dˇetsk´ ych uzlech. Deklarativn´ı model umoˇzn ˇuje rozdˇelit transformaˇcn´ı logiku do v´ıce modul˚ u. V´ yvoj´aˇr se d´ale nemus´ı zab´ yvat t´ım, kdy a jak je ˇsablona vol´ana, staˇc´ı deklarovat, ˇze dan´a ˇsablona se vol´a pro konkr´etn´ı uzel. S t´ımto pˇr´ıstupem se d´a snadno vytvoˇrit program pro transformaci extr´emnˇe sloˇzit´ ych dokument˚ u (pˇr´ıklad jednoduch´eho dokumentu viz 5).
11
Pˇ r´ıklad 5 z´apis Deklarativn´ıho modelu 2.5.3 <xsl:transform xmlns:v1=’urn:zamestnanec:v1’ xmlns:v2=’urn:zamestnanec:v2’ xmlns:xsl=’http://www.w3.org/1999/XSL/Transform’ version=’1.0’> <xsl:template match="text()|@*" /> <xsl:template match="pozice">
<xsl:value-of select="." /> <xsl:template match="krestni"> <jmeno> <xsl:value-of select="concat(., ’ ’, following-sibling::prijmeni)" /> <xsl:template match="v1:zam">
<xsl:apply-templates select="*"/>
Pˇrestoˇze transformace zaloˇzen´e na vzorech dovoluj´ı v´ ystup pouze ve form´atu XML (pˇr´ıpadnˇe spr´avnˇe strukturovan´em HTML), zbyl´e dva pˇr´ıstupy umoˇzn ˇuj´ı v´ ystup v XML, HTML nebo prost´em textu.
2.6
Adresace v XML
XML stejnˇe jako HTML umoˇzn ˇuje vytv´aˇren´ı odkaz˚ u v r´amci jednoho dokumentu i mezi dokumenty, m´a vˇsak v´ıce moˇznost´ı. Je moˇzn´e vytv´aˇret i v´ıcesmˇern´e odkazy, kter´e spojuj´ı v´ıce dokument˚ u dohromady. Tvorba odkaz˚ u je pops´ana ve tˇrech standardech – XLink, XPointer a XPath. • XPath (XML Path Language) je jazyk, kter´ y vyhodnot´ı v´ yrazy podle stromu XML dokumentu a vr´at´ı odpov´ıdaj´ıc´ı uzly (elementy, atributy atd.). • XPointer (XML Pointer Language), je rozˇs´ıˇren´ım XPath. Nen´ı nutn´e ˇc´asti dokumentu, na kter´e chceme odkazovat, explicitnˇe oznaˇcovat pomoc´ı n´avˇest´ı jako v HTML. • XLink (XML Linking Language) je samotn´ y jazyk pro tvorbu odkaz˚ u. Jednotliv´e dokumenty se urˇcuj´ı pomoc´ı jejich URL adresy, za kterou lze uv´est jeˇstˇe XPointer pro pˇresnˇejˇs´ı urˇcen´ı ˇc´asti dokumentu.
12
Kapitola 3 Slovn´ıkov´ e datab´ aze Slovn´ık [21] je nejv´ yznamnˇejˇs´ım, vˇetˇsinou abecednˇe ˇrazen´ ym zdrojem informac´ı o slovn´ı z´asobˇe jazyka. Slovn´ıky vysvˇetluj´ı slova z v´ıce hledisek. Lexikografie je lingvistick´a discipl´ına zab´ yvaj´ıc´ı se sestavov´an´ım slovn´ık˚ u. Slovn´ıky se vyskytuj´ı tradiˇcnˇe v kniˇzn´ı podobˇe, z ˇcehoˇz vypl´ yv´a, ˇze data v nich uloˇzen´a nejsou pˇr´ımo urˇcena pro poˇc´ıtaˇcov´e aplikace. S v´ yvojem informatiky se vˇsak objevuj´ı i digit´aln´ı slovn´ıky, dostupn´e na CD nebo na internetu. Podle typu dˇel´ıme slovn´ıky na: • V´ ykladov´e (jednojazyˇcn´e) - jsou naps´any cel´e v jednom jazyce, u kaˇzd´eho slova lze nal´ezt informace ve stejn´em jazyku. • Souˇcasn´eho jazyka (v´ yznamov´e, pravopisn´e, frazeologick´e, slovn´ıky synonym, slovn´ıky ciz´ıch slov atd.). • Jednotliv´ ych historick´ ych obdob´ı a slovn´ıky etymologick´e. • Popisuj´ıc´ı slovn´ı z´asobu profesn´ıch skupin (napˇr. Filosofick´ y slovn´ık, Defektologick´ y slovn´ık, Biblick´ y slovn´ık apod.). • Speci´aln´ı (retrogr´adn´ı, frekvenˇcn´ı, valenˇcn´ı atd.). • Pˇrekladov´e (v´ıcejazyˇcn´e). Poˇcet slov ve slovn´ıc´ıch se pohybuje mezi 10 000 - 60 000 hesel. A kaˇzd´ y v´ı jak zdlouhav´e m˚ uˇze b´ yt nal´ezt poˇzadovanou informaci ve velk´em kniˇzn´ım slovn´ıku. Proto je v´ yhodnˇejˇs´ı pouˇz´ıvat aplikace, kter´e pracuj´ı se slovn´ıkov´ ymi datab´azemi, vyhled´avaj´ıc´ı automaticky poˇzadovan´e informace. Pro takovou datab´azi m˚ uˇze b´ yt velice dobˇre pouˇziteln´ y pr´avˇe dokument XML. N´ıˇze budou pops´any nˇekter´e osvˇedˇcen´e standardy pro uchov´av´an´ı slovn´ıkov´ ych dat.
3.1
TBX
TBX(Term Base eXchange) [5] je jeden z prvn´ıch standard˚ u pro ukl´ad´an´ı slovn´ıkov´ ych dat ve form´atu XML a proto si zaslouˇz´ı alespoˇ n kr´atk´ y popis. TBX popisuje terminologick´a slovn´ıkov´a hesla, kter´a jsou zaloˇzen´a na rozd´ılech mezi pojmy (v´ yznamov´e 13
jednotky) a term´ıny (urˇcuj´ı vstupy v r˚ uzn´ ych jazyc´ıch) [16]. Rozd´ıl mezi pojmy a term´ıny je z´akladn´ım prvkem architektury TBX. Terminologick´a hesla jsou uspoˇr´ad´ana v pojmy, kter´e jsou z´akladn´ımi v´ yznamov´ ymi jednotkami a m˚ uˇzou obsahovat glob´aln´ı atributy jako oblast znalost´ı, pˇr´ıbuzn´e pojmy, definice, pˇr´ıklady, vzorov´e vˇety atd. Pot´e m˚ uˇzou b´ yt pops´any jazykovˇe pˇr´ıbuzn´ ym pojmenov´an´ım skupin informac´ı o term´ınu ohraniˇcuj´ıc´ım jednotliv´e term´ıny. Z´apis v´ yrazov´eho pojmu je uk´az´an na obr´azku 3.1.
Obr´azek 3.1: Uk´azka v´ yrazov´eho vstupu TBX V´ yrazov´e pojmy tvoˇr´ı j´adro TBX dokumentu, kter´ y je z´aroveˇ n XML dokumentem, obsahuj´ıc´ıho n´asleduj´ıc´ı sloˇzky: • Hlaviˇcku - popisuje dokument poskytnut´ım nˇekter´ ych obecn´ ych a administrativn´ıch informac´ı (obsah, status validace, kontakt, k´odov´an´ı, revize a dalˇs´ı). • Tˇelo - obsahuje sadu vstup˚ u, jeden vstup na pojem z datab´aze. Tˇelo m˚ uˇze m´ıt u ´vodn´ı a z´avˇereˇcn´e elementy. Popis element˚ u a jejich atribut˚ u v pˇr´ıkladu jednoduch´eho dokumentu TBX: 6. pˇr´ıklad: •
14
• <martifHeader: Obsahuje obecn´e informace o kolekci: Popis souboru (fileDesc element), kter´ y ˇr´ık´a, ˇze pˇr´ıklad je odvozen´ y ze z´aznamu v Oraclu. TBX XCS viz v´ yˇse. •
: V´ yznam elementu text, do kter´eho n´aleˇz´ı element body, je kompatibilita s Text Encoding Initiative guidelines [7]. Element body obsahuje kolekce pojmovˇe orientovan´ ych ”Terminologick´ ych z´aznam˚ u” . • : Urˇcuje do jak´eho jazyku n´aleˇz´ı n´asleduj´ıc´ı terminologick´ y z´aznam. • : Obashuje term´ın ve v´ yˇse uˇcen´em jazyce. Atribut id urˇcuje: [indentifik´ ator z´ aznamu] + jm´eno datab´aze [Oracle] + s´eriov´e ˇc´ıslo z´aznamu (67) + jazykov´ y k´od. • : Uzavˇren´ı elementu tig. • : Uzavˇren´ı anglick´e sekce langSet. • : Tady zaˇc´ın´a mad’arsk´a sekce pˇrekladu slova. • : Obashuje mad’arsk´ y term´ın pro v´ yˇse uveden´ y anglick´ y term´ın. Protoˇze nˇekter´e mad’arsk´e znaky nejsou podle standardu ISO 646, tak je z´aznam reprezentov´an nˇekolika Unik´odov´ ymi hexa znaky. Spr´avn´ y mad’arsk´ y v´ yraz je pak: ”Alfa sim´ıt´asi t´enyez˜o”. • : Konec mad’arsk´e jazykov´e sekce. • : Konec v´ yrazov´e sekce. • : Ukonˇcuj´ıc´ı tag pro terminologick´e z´aznamy, kter´e v naˇsem pˇr´ıpadˇe obsahovalo pouze jeden vstup. • : Konec TBX dokumentu.
15
Pˇ r´ıklad 6 z´apis jednoduch´eho XML dokumentu podle standardu TBX 3.1 <martif type=’TBX’ xml:lang=’en’> <martifHeader>
<sourceDesc> ’from an Oracle corporation termBase
’ <encodingDesc>
TBXmasterXCSV01.XML
<descrip type=’subjectField’>manufacturing <descrip type=’definition’>A value between 0 and 1 used in ... alpha smoothing factor fullForm Alfa simítási tényezõ
V dobˇe, kdy se zaˇcalo pracovat na v´ ymˇenn´em form´atu pro strojov´e pˇrekladov´e slovn´ıky, bylo zˇrejm´e, ˇze TBX form´at nebude schopen uspokojit poˇzadavky pro t´akov´e slovn´ıky. Pˇri v´ ymˇenˇe informac´ı strojov´ ych pˇreklad˚ u hled´ame odpovˇedi na tˇri z´akladn´ı ot´azky: 1. Jak´e z´aznamy vymˇen ˇujeme? 2. Jak m˚ uˇze b´ yt popis jednotliv´eho z´aznamu vysvˇetlen? 3. Jak jsou mezi z´aznamy pops´any vztahy? Proˇc tedy nen´ı TBX vhodn´e? 16
• Nen´ı uspokojen poˇzadavek na jazykovou v´ ymˇenu, protoˇze jsou vysvˇetleny jenom nˇekter´e popisy slov jako slovn´ı druh, rod, ˇc´ıslo. Ve standardu TBX tak´e nen´ı ˇz´adn´a pˇredstava o skloˇ nov´an´ı, syntaktick´ ych typech, v´ yznamov´ ych rysech atd., kter´e jsou z´akladn´ı vlastnost´ı vymˇeny strojov´ ych pˇreklad˚ u. • Nen´ı jasn´e uspoˇr´ad´an´ı jazykov´ ych popis˚ u. Nˇekter´e jsou spojeny s pojmovou u ´rovn´ı (jako definice, pˇr´ıklady, vzahy) a dalˇs´ı jsou souˇca´st´ı slovn´ıho druhu spojen´eho s term´ınovou u ´rovn´ı. Z toho vypl´ yv´a nezbytn´a potˇreba definov´an´ı z´akladn´ıch popis˚ u (atributy a jejich platn´e hodnoty) pro lingvistick´e informace.
3.2 3.2.1
OLIF Historie OLIFu
N´asledn´ıkem standardu TBX se stal OLIF[3] (Open Lexicon Interchange Format), kter´ y odstraˇ nuje nedostatky a doplˇ nuje pravidla, se kter´ ymi se ve standardu TBX nepoˇc´ıtalo. OLIF je otevˇren´ y slovn´ıkov´ y v´ ymˇenn´ y form´at a nejdˇr´ıve byl definov´an v EC projektu OTELO. P˚ uvodnˇe bylo zam´ yˇsleno zpˇr´ıstupnit v´ ymˇenu sad strojov´ ych pˇrekladov´ ych (d´ale jen SP) z´aznam˚ u mezi SP automaty a uˇzivateli. Jedn´ım z d˚ uvod˚ u bylo poskytnout v´ yrazov´a data pro SP syst´emy jako Logos nebo METAL, coˇz zahrnovalo samotn´ y v´ ymˇenn´ y form´at a pˇrevodn´ıky z/do OLIFu poskytovan´e SP automaty. Pozdˇejˇs´ı verze v´ ymˇenn´ ych form´at˚ u byly vyvinuty konzorciem OLIF za u ´ˇcasti hlavn´ıch SP poskytovatel˚ u (Systran, Logos, SailLabs, linguatec), terminologick´ ych poskytovatel˚ u a uˇzivatel˚ u (Trados, Microsoft, IBM, European Commission a dalˇs´ı). Hlavn´ı podnˇet byl(a st´ale je) veden od SAP(Systems - Applications - Products in data processing). Souˇcasn´e verze pˇridaly hlaviˇckovou strukturu, jako je tomu u TBX, a poskytuj´ı v´ıcejazyˇcn´e ontologie (v´ yslovn´ y popis urˇcit´e problematiky), lepˇs´ı strukturov´an´ı XML, nˇekolik n´astroj˚ u a podp˚ urn´ ych komponent [16].
3.2.2
Metamodel standardu OLIF
Z´akladn´ı rozhodovac´ı architektura OLIFu je zaloˇzen´a na pojmench (z´akladn´ı jednotka je s´emantick´a entita). Pojmy v OLIFu, narozd´ıl od TBX koncept˚ u, jsou definov´any pro dan´ y jazyk. Mezi pojmy jsou odkazy, z jednoho bodu urˇcit´eho pojmu do druh´eho, tyto odkazy m˚ uˇzou b´ yt monolingu´aln´ı (na z´akladˇe slovn´ıkov´ ych vztah˚ u) nebo multilingu´aln´ı (na z´akladˇe pˇreklad˚ u). Ve v´ ysledku m˚ uˇze b´ yt metamodel OLIFu chrakterizov´an: • Jako zaloˇzen´ y na pojmech, kter´e jsou monolingu´aln´ı a maj´ı jazykov´e vysvˇetlivky. • Jako multilingu´aln´ı (m˚ uˇzou zde b´ yt odkazy z pojmu na v´ıce c´ılov´ ych uzl˚ u), ale pˇr´ım´ y (odkazy maj´ı zdroj a c´ıl a nejsou snadno zpˇetnˇe pˇrevedeny).
17
3.2.3
Dokument XML ve standardu OLIF
Charakteristika kl´ıˇ c˚ u (Key) Prvn´ı vˇec´ı je charakteristika z´aznam˚ u ve v´ ymˇenn´em form´atu. Vstupy ve form´atu OLIF jsou chrakterizov´any ˇctyˇrmi typy informac´ı: 1. Kanonick´a forma (popis rozd´ıl˚ u mezi slovy napˇr. Bank a Bank (anglicky banka nebo tˇreba bˇreh ˇreky)). 2. Jazyk (jazyk ve kter´em je definice z´aznam˚ u). 3. V´ yslovnost. 4. S´emantick´e popisy (poskytuje popis rozd´ıl˚ u v praktick´ ych situac´ıch). Uk´ azka a popis dokumentu XML podle OLIF Koˇrenov´ ym elementem u form´atu OLIF je element olif. Stejnˇe jako u standardu TBX je dokument OLIFu rozdˇelen na dvˇe sekce. 1. Header - hlaviˇcka obsahuj´ıc´ı obecn´e informace o slovn´ıku. 2. Body - tˇelo dokumentu, kter´e obsahuje slovn´ıkov´a data. Jak´a data bsahuje se pokus´ım vysvˇetlit pr´avˇe v t´eto kapitole. Tˇelo dokumentu ˇcili tag body mus´ı obsahovat 1-N element˚ u typu entry. D´ale pak obsahuje: • Jednojazyˇcn´e informace (Monolingual Information) - skupina jednojazyˇcn´ ych informac´ı zahrnuje vˇsechny datov´e kategorie, kter´e jsou p˚ uvodnˇe jednojazyˇcn´e: – Kategorie kl´ıˇc˚ u viz 3.2.3. – Administrativn´ı datov´e kategorie. – Morfologick´e datov´e kategorie - jako struktura, skloˇ nov´an´ı, p´ad, ˇc´ıslo, osoba a ˇcas. – S´emantick´e datov´e kategorie - definice, s´emantika, typ a pohlav´ı. – Obecn´e datov´e kategorie -pˇr´ıklad, pozn´amka. • Odkazovan´e informace (CrossReference informations) - jsou skupiny informac´ı o pˇr´ıbuzn´ ych z´aznamech ve stejn´em jazyce jako je pˇrekl´adan´e slovo a obsahuj´ı tyto kategorie: – Kategorie kl´ıˇc˚ u viz 3.2.3. – Druh vztahu - podle doporuˇcen´ı z EuroWorldNetu to m˚ uˇzou b´ yt asociativn´ı v´ yraz, hypernym (obecn´e slovo pro v´ıce specifick´ ych slov jako dopravn´ı prostˇredek je obecn´e slovo pro automobil, autobus nebo tˇreba letadlo), meronym (oznaˇcuje z´akladn´ı ˇc´ast nebo ˇclena nˇeˇceho napˇr. prst je meronym ruky, kolo je meronym automobilu). 18
• Informace o pˇrekladu (Transfer informations) - jsou skupiny informac´ı o z´aznamech v jazyce, kter´ y je odliˇsn´ y od vstupn´ıho jazyku. OLIF podporuje pˇr´ım´e v´ıcejazyˇcn´e pˇreklady (dvojjazyˇcn´e pˇreklady jsou speci´aln´ı pˇr´ıpad). Obsahuje kategorie pro: – Kategorie kl´ıˇc˚ u viz 3.2.3. – Typ rovnosti (napˇr. pln´a (full)). – Omezen´ı, kter´e urˇcuj´ı podm´ınky, za kter´ ych je pˇreklad platn´ y. – Datov´e skupiny, kter´e vysvˇetluj´ı struktur´aln´ı zmˇeny pro dan´ y pˇreklad. (zhasnout -> switch off). Pˇ r´ıklad z´ aznamu jednoho slova ve form´ atu OLIF Uk´azka pˇrekladu jednoho slova za pouˇzit´ı OLIFu v pˇr´ıkladu 7, kdy: • element mono obsahuje informace o pˇrekl´adan´em slovˇe v elementech: – canForm obsahuje kanonick´ y tvar pˇrekl´adan´eho slova – language jazyk, do kter´eho slovo n´aleˇz´ı – subjField oblast v´ yskytu slova – pronunciation v´ yslovnost slova • element transfer obsahuje informace o pˇrekladu slova v elementech: – canForm obsahuje kanonick´ y tvar slova – language jazyk, do kter´eho slovo n´aleˇz´ı – subjField oblast v´ yskytu slova
19
Pˇ r´ıklad 7 Pˇreklad jednoho slova ve slovn´ıku OLIF 3.2.3 <entry> <mono>
abbatial en <subjField>general <pronunciation>{beiˇ sl opatsk´ y cs <subjField>general abatyˇ ssk´ y cs <subjField>general
Pˇ r´ıklad z´ aznamu slova ve slovn´ıku OLIF s odkazem na dalˇ s´ı slovo V pˇr´ıkladu 8 bude uk´az´ano jak vypad´a pˇreklad slova s odkazem na dalˇs´ı slovo ve stejn´em jazyce a s pomocn´ ymi informacemi. Vysvˇetlen´ı element˚ u, kter´e neobsahuje pˇr´ıklad 7: • Element generalDC obsahuje informace o tom, jak slovo pouˇz´ıt nebo pozn´amku pˇrekladatele. • Element crossRefer nese informace o odkazu na varianty pˇrekl´adan´eho slova: – Element crLinkType urˇcuje, o jak´ y typ odkazu jde. V naˇsem pˇr´ıpadˇe headword (hlavn´ı slovo kanonick´e formy). • Element monoMorph - uv´ad´ıme informace o morfologii slova. V morphStruct je uvedena stavba slova, inflexn´ı vzor, rod, ˇc´ıslo, vid a dalˇs´ı. – Element number - informace o ˇc´ısle. • Element crLinkType - obsahuje roli, kterou slovo hraje v kontextu, napˇr. orthvariant ˇze jde o jinou variantu slova nebo headword, ˇze jde o slovo, ze kter´eho vych´az´ı napˇr. fr´aze. 20
Pˇ r´ıklad 8 Pˇreklad slova s odkazem na dalˇs´ı slovo v OLIFu 3.2.3 <entry> <mono>
A en noun <subjField>general <pronunciation>ei <monoDC> <monoMorph>
pl <usage>p´ ısmeno a en noun <subjField>general orth-variant A cs noun <subjField>general
Pˇ r´ıklad fr´ aze ve slovn´ıku OLIF V posledn´ım, (9). pˇr´ıkladu, kter´ y se t´ yk´a slovn´ıku OLIF uvedu, jak vypad´a fr´aze a jej´ı pˇreklad. Nav´ıc oproti minul´ ym pˇr´ıklad˚ um se objevuje element monoAdmin, kter´ y obsahuje vlastn´ıka slova, lokalitu pouˇz´ıv´an´ı slova a podobnˇe. Napˇr´ıklad v elementu entryFormation uveden´ y typ z´aznamu (napˇr. fr´aze).
21
Pˇ r´ıklad 9 Fr´aze ve slovn´ıku OLIF 3.2.3 <entry> <mono>
an A1 population en other <subjField>general <monoDC> <monoAdmin> <entryFormation>phr
A en noun <subjField>general <usage>hovor. headword obyvatelstvo v dokonal´ em zdravotn´ ım stavu cs other <subjField>general
3.3 3.3.1
Dalˇ s´ı standardy ISLE/MILE
ISLE (Internation Standards for Language Engineering)[22] je n´azev projektu a cel´a sada organizovan´ ych aktivit t´ ykaj´ıc´ıch se oblasti terminologie lidsk´eho jazyka (HLT Human Language Technology). ISLE spad´a pod iniciativu EAGLES (Expert Advisory 22
Group for Language Engineering Standards), kter´a vykazuje u ´spˇeˇsn´ y v´ yvoj a znaˇcn´e mnoˇzstv´ı doporuˇcen´ı a standard˚ u. ISLE je zamˇeˇreno na 3 hlavn´ı oblasti: • mnohojazyˇcn´e slovn´ıky • pˇrirozen´a interakce a multimodalita • vyhodnocen´ı HLT syst´em˚ u Standard MILE (Multilingual ISLE Lexical Entry)[6] je v´ ysledkem v´ yzkumu zaloˇzen´eho pr´avˇe na EAGLES/PAROLE. Pˇredstavuje reprezentaci multilingu´aln´ıch informac´ı v konstrukci vrstven´ ych lexik´aln´ıch reprezentaˇcn´ıch standard˚ u. Morfologick´a skladba je definov´ana podle projektu PAROLE, s´emantika podle projektu SIMPLE a v´ıcejazyˇcnost podle projektu ISLE. Rozd´ıl mezi MILE a OLIF Narozd´ıl od standardu OLIF, MILE pokr´ yv´a nejen informaˇcn´ı poloˇzky, kter´e jsou dostupn´e ve dneˇsn´ıch SP slovn´ıc´ıch, ale hodl´a pˇredstavovat kompletn´ı lexik´aln´ı popis vˇcetnˇe s´emantick´e reprezentace v´ıcejazyˇcnosti. MILE nen´ı v´ ymˇenn´ y standard, ale je reprezentaˇcn´ı standard a m˚ uˇze b´ yt pˇreveden do mnoha r˚ uzn´ ych v´ ymˇenn´ ych form´at˚ u (dokud budou m´ıt potˇrebnou vyjadˇrovac´ı s´ılu podporovat MILE). Z´aznamy v MILE m˚ uˇzou definovat poˇrad´ı popisovac´ıch podm´ınek k vyj´adˇren´ı specifick´eho omezen´ı sady v pˇrekladov´em kontextu bez vlivu na monolingu´aln´ı vyj´adˇren´ı z´aznamu. Pˇ r´ıklad z´ aznamu v MILE Lexik´aln´ı z´aznam v MILE je ide´aln´ı strukturou pro pˇrevody RDF(Resource Definition Framework)/OWL(Ontology Web Language). To spoˇc´ıv´a v hierarchii lexik´aln´ıch objekt˚ u, kter´e jsou postaven´e na vrstven´em zp˚ usobu kombinov´an´ım z´akladn´ıch datov´ ych kategori´ı pomoc´ı jasnˇe dan´ ych vztah˚ u. Uvnitˇr kaˇzd´e vrstvy slovn´ıku MILE jsou dva typy objekt˚ u: 1. Lexik´aln´ı tˇr´ıda MILE(LTM). • Hlavn´ı stavebn´ı blok lexik´aln´ıch z´aznam˚ u. • Formalizuje z´akladn´ı lexik´aln´ı pojmy podle projektu ISLE. • Lexik´aln´ı model MILE(LMM) Definuje kaˇzdou tˇr´ıdu specifikov´an´ım jej´ıch atribut˚ u a vztah˚ u mezi nimy. • Popisuje pojmy jako syntaktick´a vlastnost, synset atd. 2. Lexik´aln´ı operace - speci´aln´ı lexik´aln´ı z´aznamy, kter´e dovoluj´ı uˇzivatel˚ um popsat podm´ınky a vykon´avat komplexn´ı operace nad lexik´aln´ımi vstupy.
23
Pˇr´ıklad pln´eho z´aznamu ve slovn´ıku MILE (10). Vyuˇz´ıv´a vyˇc´ıslovac´ı tˇr´ıdy v LDCR pro SynFeatureName a SynFeatureValue. V tomto pˇr´ıpadˇe LDCR pouze poskytuje uzavˇren´ y seznam moˇzn´ ych hodnot, ze kter´ ych mus´ı b´ yt urˇcen´a hodnota vybr´ana. Pˇ r´ıklad 10 Pˇr´ıklad pln´eho z´aznamu ve slovn´ıku MILE 3.3.1
<Entry rdf:ID="eat1"> <SynU rdf:ID="eat1-SynU"> <example>John ate the cake <SyntacticFrame rdf:ID="eat1SynFrame"> <Self rdf:ID="eat1Self"> <SynFeature> <slot> <SlotRealization rdf:ID="NPsubj"> <slot> <SlotRealization rdf:ID="NPobj">
24
3.3.2
XLIFF
XLIFF [4] je dalˇs´ım XML form´atem pro slovn´ıkov´a data, kter´ y umoˇzn ˇuje zamˇeˇren´ı se na pˇrekl´adan´ y text. D´ıky XLIFFu je lokalizaˇcn´ı technika snaˇzˇs´ı: jak jednou pˇrevedete data ze sv´ ych zdroj˚ u, tak uˇz m˚ uˇzete jednoduˇse napsat nov´e n´astroje pro pr´aci s XLIFFem a nestarat se o p˚ uvodn´ı form´at. XLIFF tak´e podporuje pln´ y lokalizaˇcn´ı proces, t´ım ˇze poskytuje tagy a atributy pro shrnut´ı, status pˇrekladu jednotliv´ ych ˇretˇezc˚ u atd. Form´at XLIFF se vyv´ıjel ve spolupr´aci v´ıce spoleˇcnost´ı, ale nakonec se dostal pod kˇr´ıdla spoleˇcnosti OASIS. XLIFF se zamˇeˇruje na: • Oddˇelen´ı textu k lokalizaci od form´atov´an´ı. • Zpˇr´ıstupnˇen´ı ˇrady n´astroj˚ u k pr´aci se zdrojov´ ymi ˇretˇezci a pˇrid´av´an´ım dat o ˇretˇezci. • Ukl´ad´an´ı unformac´ı, kter´e jsou uˇziteˇcn´e k podpoˇre lokalizaˇcn´ıho procesu. V nejjednoduˇsˇs´ı formˇe sest´av´a XLIFF z jednoho nebo v´ıce souborov´ ych element˚ u. Kaˇzd´ y z nich obsahuje sekce header (hlaviˇcka) a body (tˇelo). Header obsahuje stejnˇe jako u pˇredeˇsl´ ych form´at˚ u informace o projektu, autorovi atd. Body pak obsahuje elementy trans-unit, coˇz jsou hlavn´ı elementy dokumentu XLIFF, v nichˇz je uloˇzen lokalizovateln´ y text a jeho pˇreklady. Tyto elementy reprezentuj´ı segmenty (obvykle vˇety ze zdrojov´eho souboru, kter´e mohou b´ yt nez´avisle pˇreloˇzeny). Elementy transunit obsahuj´ı zdroj, c´ıl, alt-trans a dalˇs´ı uˇziteˇcn´e elementy.
25
Kapitola 4 Implementace V t´eto kapitole jsou pops´any praktick´e ˇc´asti bakal´aˇrsk´e pr´ace. Vysvˇetl´ım, s jak´ ymi daty jsem pracoval a jak jsem je pˇrev´adˇel do slovn´ıkov´eho standardu OLIF. N´asleduje postup pokroˇcil´e validace dokumentu OLIF a na z´avˇer shrnu s jak´ ymi probl´emy jsem se setkal.
4.1
Vstupn´ı data
Vstupn´ı data, se kter´ ymi jsem pracoval by se dala charakterizovat jako pseudo XML data. Jedn´a se o anglicko-ˇcesk´ y slovn´ık pro p´ısmena a-v rozdˇelen´ y do 127 textov´ ych soubor˚ u, kter´e jsem spojil do jednoho pro dalˇs´ı jednoduˇsˇs´ı pr´aci. Uk´azka vzorku dat z p˚ uvodn´ıho textov´eho souboru a1_xml.txt (viz 1).
abbreviation <pronun1>[??bri:vi?eiˇ s?n] <sectn1>1
z|kr´ acen´ ı <sectn1>2
zkratka @@@@@
Uk´azka 1: popis vstupn´ıch dat(4.1) Jak m˚ uˇzeme vidˇet v uk´azce, anglick´e slovo urˇcen´e k pˇrekladu je logicky obsaˇzeno v elementu hewn1 (v naˇsem pˇr´ıpadˇe se jedn´a o slovo abbreviation). Za t´ımto elementem n´asleduje znaˇcka pronun1 s v´ yslovnost´ı, kter´a nen´ı podle pravidel SAMPA [11], takˇze ji v programu pˇrev´ad´ım do tohoto form´atu. Tag sectn1 oddˇeluje moˇznosti pˇrekladu anglick´eho slova, v tomto pˇr´ıpadˇe se objevuje dvakr´at, a to pro ˇcesk´a slova v elementu hwecs1. Vstupn´ı data obsahuj´ı mnohem v´ıce tag˚ u, takˇze zde uv´ad´ım popis kaˇzd´eho z nich: • hwen1 - anglick´e slovo urˇcen´e k pˇrekladu • vwen1 - dalˇs´ı tvar anglick´e slova 26
• pronun1 - v´ yslovnost anglick´eho slova • hwecs1 - ˇcesk´ y pˇreklad anglick´eho slova • phrwen1 - fr´aze v angliˇctinˇe • phrven1 - fr´aze v angliˇctinˇe • phrecs1 - ˇcesk´a fr´aze pro anglickou fr´azi uvedenou v phrwen1 nebo phrven1 • examen1 - anglick´ y pˇr´ıklad uˇzit´ı slova za pomoci fr´aze • examcs1 - ˇcesk´ y pˇreklad pro examen1 • compen1 - obsahuje usage pro anglick´e slovo • undef1 - dalˇs´ı role anglick´e fr´aze nebo slova • hypodkaz - odkaz na slova stejn´eho v´ yznamu • sectn1 - v´ yznamov´e sekce pro anglick´a slova • habbren1 - v´ yznam anglick´e zkratky • undefi1 - nach´az´ı se pˇred undef1 a ˇr´ık´a, ˇze undef1 je dalˇs´ı tvar pro anglick´e slovo nebo fr´azi • indcs1 - pˇr´ıklad uˇzit´ı pro ˇcesk´e slova nebo oblasti uˇzit´ı slova • regcs1 - region´aln´ı uˇzit´ı slova • gram1 - slovn´ı druh • partp1 - oddˇeluje pˇr´ıklady • partc1 - tak´e oddˇeluje pˇr´ıklady • hwsen - oddˇeluje v´ yznamy anglick´eho slova
4.1.1
Statistiky ze vstupn´ıch dat
Statistiky ze vstupn´ıch dat jsem z´ısk´aval za pomoci jazyku Python. Tyto statistiky jsem vyuˇz´ıval k urˇcen´ı hodnot, kter´ ych nab´ yvaj´ı elementy slovn´ıku OLIF pro fixn´ı hodnoty. Napˇr. v elementu gram1 je hodnota adj:, kter´a ˇr´ık´a, ˇze se jedn´a o pˇr´ıdavn´e jm´eno. Tak´e jsem potˇreboval zjistit nejdelˇs´ı vzd´alenost v´ yznamu slov pro funkci urˇcov´an´ı v´ yznamu slov v parseru, kdy v´ım ˇze v´ yznam slova je pˇred slovem, takˇze hled´am regul´arn´ım v´ yrazem nejbliˇzˇs´ı v´ yznam pˇred slovem a to od pozice: vzd´alenost = pozice slova - nejvˇetˇs´ı vzd´alenost. Jen pro zaj´ımavost je v p˚ uvodn´ıch datech: • Nejdelˇs´ı z´aznam pro slovo go a m´a 102716 znak˚ u (i se znaˇckami).
27
• Je po rozdˇelen´ı vˇsech z´aznam˚ u nesouc´ıch informace o anglick´ ych slovech - 90177 r˚ uzn´ ych slov. • Nejˇcastˇejˇs´ım slovem z tˇechto z´aznam˚ u pak je slovo: ”the”, kter´e je pˇr´ıtomno ve vˇsech z´aznamech 37889 kr´at. • Je po rozdˇelen´ı vˇsech z´aznam˚ u nesouc´ıch informace o ˇcesk´ ych slovech - 112355 r˚ uzn´ ych slov. • Nejˇcastˇejˇs´ım slovem z tˇechto z´aznam˚ u pak je slovo: ”se”, kter´e je pˇr´ıtomno ve vˇsech z´aznamech 21946 kr´at.
4.2
Parser pro pˇ revod dat do OLIFu
Pro pˇrevod dat z pseudo XML jsem vyuˇzil jiˇz existuj´ıc´ıho pythonovsk´eho parseru, kter´ y jsem upravil pro moje specifick´e vstupy. D´ale jsem pˇridal funkce pro doplnˇen´ı kˇr´ıˇzov´ ych odkaz˚ u, kter´e tam chybˇely, coˇz jsou zkratky slov napˇr. AAA znamen´a Agricultural Adjustment Act, funkci pro pˇridˇelen´ı spr´avn´e hodnoty usage a subjField k ˇcesk´ ym pˇreklad˚ um slov a funkci pro vyhled´an´ı a urˇcen´ı dalˇs´ı role fr´aze nebo slova uloˇzen´e v tagu undefi1. Tak´e jsem program doplnil pro kontrolu existence anglick´ ych slov ve slovn´ıku ispell.words. Prvn´ım (nejjednoduˇsˇs´ım) zp˚ usobem bylo vol´an´ı extern´ıch program˚ u cat a grep pomoc´ı pythonovsk´eho modulu Popen: cat ispell.words| grep -E ’^slovo’$, coˇz provede v´ ypis vˇseho, co je v souboru ispell.words a n´aslednou kontrolu existence slova pomoc´ı regul´arn´ıho v´ yrazu. Toto ˇreˇsen´ı je velice neefektivn´ı a pomal´e, takˇze jsem se rozhodl tento soubor na zaˇc´atku naˇc´ıst do pole a vyhled´avat v nˇem slovo pomoc´ı funkce pythonovsk´e struktury slovn´ıku: dict.has_key(). Pokud slovo nebylo ve slovn´ıku nalezeno tak ho zap´ıˇsu do souboru notFoundEN.txt. Ostatn´ı chyby a hl´aˇsen´ı se zapisuj´ı do souboru errors.txt, m˚ uˇzou tam b´ yt napˇr´ıklad geografick´e uˇzit´ı slov bez ekvivalentu v poli geografick´ ych uˇzit´ı, nerozpoznan´ y slovn´ı druh a dalˇs´ı. Vzhledem k tomu, ˇze v m´ ych datech se nal´ez´a v´ıce geografick´ ych uˇzit´ı neˇz v p˚ uvodn´ım skriptu, tak byla chybˇej´ıc´ı data doplnˇena. Jak jiˇz je naps´ano v´ yˇse, element
obsahuje jak data pro usage tzn. uˇzit´ı slova, kde se m˚ uˇze nach´azet jak´ ykoliv ˇretˇezec, tak nˇekter´e zkratky jako pr´av. coˇz se d´a pouˇz´ıt v elementu <subjField>, kter´ y m´a omezen´ y v´ ybˇer hodnot napˇr. pro pr´av. law. Probl´em je v tom, ˇze tyto zkratky jsou zaps´any v delˇs´ım ˇretˇezci a oddˇeleny ,;:, takˇze pomoc´ı regul´arn´ıho v´ yrazu tyto slova oddˇeluji a vyb´ır´am z pole, kde jsem ruˇcnˇe zapsal moˇzn´e zkratky pro z´apis do <subjField>. Dalˇs´ı v´ yznamn´ y element, kter´ y nese informaci o slovn´ım druhu, je a pole pro jeho hodnoty byla tak´e doplnˇena. Pole s hodnotami pro je tak´e doplnˇen´a pro hodnoty z m´ ych vstupn´ıch dat a to ve form´atu mezin´arodn´ıch poˇstovn´ıch zkratek [13]. Pokud je slovo uˇz´ıv´ano ve v´ıce zem´ıch tak pˇrid´av´am mezi jednotliv´a slova slovo and (napˇr. USA and AUS and NZL coˇz znamen´a, ˇze je slovo typick´e pro Spojen´e st´aty americk´e, Austr´alii a Nov´ y Z´eland.)
28
4.3
Schematron pro validaci v´ ysledn´ eho XML dokumentu
Obecn´ y popis n´astroje schematronu je v kapitole 2.4.4. J´a schematron pouˇz´ıv´am na kontrolu hodnot v elementech OLIFu. A to konkr´etnˇe pouze v elementech, kter´e obsahuj´ı fixn´ı hodnoty [17]. V m´em dokumentu OLIF to jsou: • - obsahuje slovn´ı druh (noun, verb, adj a dalˇs´ı) • <subjField> - v jak´e oblasti se slovo vyuˇz´ıv´a (economics, botany/zoology, law a dalˇs´ı) • - ˇc´ıslo slova (sg(jednotn´e), pl, sgt, plt, du, invar a un) • - vid slova (simp, perf, imperf a dalˇs´ı) • - vztah jednoho slova k druh´emu ve stejn´em jazyce (headword, orthvariant, abbreviation a dalˇs´ı)
4.3.1
Programy pro spuˇ stˇ en´ı schematronu
Pro zpracov´an´ı schematronu se daj´ı pouˇz´ıt r˚ uzn´e programy. Napˇr´ıklad pouˇz´ıv´am program XT [10], coˇz je program napsan´ y v jazyce Java, kter´ y um´ı XSL transformace. Je volnˇe ke staˇzen´ı. Pro spr´avn´ y chod staˇc´ı m´ıt staˇzen´e n´astroje pro Java Virtual Machine, nastavit si v souboru build.bat (pro Windows) nebo build.sh (pro Linux) cestu k adres´aˇri, kde je um´ıstˇen Java Virtual Machine a pak uˇz jenom spustit vybran´ y soubor, kter´ y vytvoˇr´ı spustiteln´ y program XT pro pr´aci s pˇredpisy ve schematronu. V dalˇs´ı uk´azce je pˇr´ıklad spuˇstˇen´ı transformace pomoc´ı programu XT, kdy rozd´ıl oproti pˇr´ıkladu saxonu (4.3.1) je ten, ˇze pouˇz´ıv´am styly pro transformaci v´ ypisu chyb do souboru shcematron-errors.html, kde jsou odkazy na urˇcit´e ˇr´adky, obsahuj´ıc´ı hl´aˇsku ze sch´ematu, ve schematron-out.html. Dalˇs´ı zaj´ımavou moˇznost´ı je wysiwyg editor Oxygen XML, kter´ y v sobˇe obsahuje i v´ yˇse zm´ınˇen´ y saxon a dalˇs´ı n´astroje pro prov´adˇen´ı XSL transformac´ı. M˚ uˇzou se v nˇem vytv´aˇret dokumenty XML, XSL, SCM atd, obsahuje debuger a valid´ator dokumentu. xt.exe schematron-predpis.xml schematron-report.xsl xt.exe example.xml xxx.xsl schematron-errors.html xt.exe example.xml verbid.xsl schematron-out.html
xxx.xsl
Uk´azka 2: spuˇstˇen´ı transformace pomoc´ı XT J´a pro vyhodnocen´ı pˇredpisu schematronu pouˇz´ıv´am saxon [8], coˇz je XSLT procesor, kter´ y ze schematronov´eho sch´ematu vygeneruje dalˇs´ı XSLT styl. T´ımto stylem pak m˚ uˇzeme transformovat dokument, kter´ y chceme validovat. V´ ysledkem 29
transformace je pak seznam chyb. Uk´azka spuˇstˇen´ı programu pomoc´ı saxonu (4.3.1), kdy pˇrep´ınaˇc -o validuj.xsl v prvn´ım ˇr´adku znamen´a, ˇze v´ ystupn´ı XSL soubor, kter´ y se pouˇzije pro transformaci na v´ ypis chyb, se bude jmenovat validuj.xsl. Dalˇs´ı parametry na prvn´ım ˇr´adku jsou pˇredpis pomoc´ı schematronu a styl schematronu, kter´ y jenom vygeneruje v´ yˇse zm´ınˇen´ y styl. V´ ypis se provede do souboru schematron_report.txt. java -jar ./Schematron/saxon/saxon9.jar -o ./Schematron/validuj.xsl \ ./Schematron/schematron-predpis.sch \ ./Schematron/iso_schematron_skeleton.xsl java -Xms5m -Xmx2548m -jar ./Schematron/saxon/saxon9.jar -o schematron_report.txt out.xml ./Schematron/validuj.xsl
Uk´azka 3: spuˇstˇen´ı transformace pomoc´ı saxonu
4.3.2
Pˇ redpis schematronu pro validaci
Kaˇzd´ y dokument schematronu by mˇel zaˇc´ınat dekalrac´ı XML: D´ale by mˇel v koˇrenov´em elementu obsahovat jmenn´ y prostor v m´em pˇr´ıpadˇe: <schema xmlns="http://www.ascc.net/xml/schematron"> Pro spr´avn´e hled´an´ı vzor˚ u je potˇreba doplnit namespace dokumentu OLIF. <ns prefix="o" uri="http://www.w3.org/2001/XMLSchema-instance" /> Schematron vyuˇz´ıv´a pro z´apis vzor˚ u jazyku XPath, element˚ u assert a report. Pro uschov´an´ı dat se nastavuje v elementu let n´azev promˇenn´e a jej´ı hodnota. • assert - vyp´ıˇse urˇcenou hl´aˇsku pokud nen´ı podm´ınka v atributu test splnˇena • report - vyp´ıˇse urˇcenou hl´aˇsku pokud je podm´ınka v atributu test splnˇena • let - promˇenn´a pojmenovan´a v atributu name a s hodnotou v atributu value Tyto patˇr´ı do elementu rule, kter´ y m´a v atributu context v´ yraz urˇcuj´ıc´ı, ke kter´emu prvku v dokumentu se vztahuje napˇr. "/", jeˇz se vztahuje na vˇsechny podelementy koˇrenov´eho elementu. Vˇsechny v´ yˇse zm´ınˇen´e znaˇcky patˇr´ı do elementu pattern. Ve sv´em pˇredpisu schematronu vyuˇz´ıv´am vˇsechny v´ yˇse zm´ınˇen´e znaˇcky pro z´ısk´an´ı dat ze slovn´ıku OLIF. Zjiˇstˇen´ı fr´az´ı v dokumentu OLIFu, kter´e nemaj´ı crLink je v pˇr´ıkladu 4.3.2, kdy hled´am v elementech entry. Pokud tyto elementy obsahuj´ı entryFormation a z´aroveˇ n neobsahuj´ı element crLink nebo hodnoty phr a headword, tak zahl´as´ı report o fr´azi, kter´a nem´a headword.
30
Pˇ r´ıklad 11 zjiˇstˇen´ı poˇctu fr´az´ı v dokumentu OLIF <pattern> Fr´ aze, kter´ e nemaj´ ı headword Fr´ aze, kter´ a nem´ a headword:
Validace fixn´ıch hodnot OLIFu za pomoci schematronu V dalˇs´ım pˇr´ıkladu (viz 4.3.2) bude uk´az´ano, jak ovˇeˇruji fixn´ı hodnoty, kter´e maj´ı obsahovat nˇekter´e elementy. V tomto pˇr´ıkladu prohled´av´am hodnoty elementu subjField a pro dohled´av´an´ı chyb si vˇzdy kaˇzd´ y z´aznam, ke kter´emu se dan´ y subjField vztahuje ukl´ad´am do promˇenn´e name. D´ale v pˇr´ıkladu pouˇz´ıv´am element report na zjiˇstˇen´ı toho zda hodnota neobsahuje ani jednu z fixn´ıch hodnot slovn´ıku OLIF. Pokud tuto hodnotu neobsahuje, tak vyp´ıˇsu hl´aˇsku z´aznam obsahuj´ıc´ı tuto nepovolenou hodnotu. Podobn´ ym zp˚ usobem je zpracovan´e ovˇeˇrov´an´ı dalˇs´ıch fixn´ıch hodnot.
31
Pˇ r´ıklad 12 validace spr´avnosti fixn´ıch hodnot elementu subjField z 4.3.2.kapitoly <pattern name="Element subjField obsahuje nepovolen´ e hodnoty"> subjField obsahuje nepovolenou hodnotu pro z´ aznam:
4.4
Probl´ emy pˇ ri implementaci a moˇ znosti ˇ reˇ sen´ı
Z´ısk´av´an´ı informac´ı o existenci slov (jak anglick´ ych tak ˇcesk´ ych) ve slovn´ıc´ıch jsem chtˇel zahrnout do implementace parseru, ale vzhledem k ˇcasov´e n´aroˇcnosti vykon´av´an´ı ˇcesk´ ych slov vol´an´ım extern´ıho programu pro zjiˇst’ov´an´ı existence ˇcesk´ ych slov v jin´em slovn´ıku jsem tuto ˇca´st zahrnul do jin´eho Pythonovsk´eho skriptu. V implementaci parseru tak zbylo pouze ovˇeˇren´ı existence slov v anglick´em slovn´ıku (viz kapitola 4.2). Probl´em ˇcasov´e n´aroˇcnosti vol´an´ı extern´ıho programu napsan´eho jazykem C++ vˇsak pˇretrv´av´a i v nov´em skriptu. V budoucnosti by bylo moˇznou cestou k vyˇreˇsen´ı probl´emu vytvoˇrit pomoc´ı programu SWIG modul pro python (verze SWIGu, se kter´ ymi jsem pracoval mi nevytvoˇril ˇz´adn´ y modul schopn´ y obstarat spr´avnou funkˇcnost). Dalˇs´ım probl´emem bylo zjiˇst’en´ı nejˇcastˇejˇs´ıho slova z v´ ysledn´eho dokumentu na coˇz mi
32
nestaˇcila vyjadˇrovac´ı s´ıla jazyku XPath a Schematronu. Proto jsem opˇet pouˇzil skript v jazyce Python, kde vˇse probˇehne rychle a bez probl´em˚ u.
33
Kapitola 5 Statistiky Statistiky z´ıskan´e ze slovn´ıku ve form´atu OLIF slouˇz´ı k vyhodnocen´ı z´akladn´ıch informac´ı o slovn´ıku. Napˇr´ıklad poˇcet z´aznam˚ u ve slovn´ıku, nejˇcastˇejˇs´ı slova v r˚ uzn´ ych jazyc´ıch, slovo s nejvˇetˇs´ım poˇctem pˇreklad˚ u, poˇcet zkratek, poˇcet fr´az´ı a dalˇs´ı. Ze statistik se daj´ı odvodit chyby, kter´e mohly nastat pˇri implementaci parseru, napˇr. kdyˇz bych mˇel 200 000 slov v angliˇctinˇe a vedˇel, ˇze vstupn´ı data maj´ı informace o v´ yslovnosti nˇekter´ ych z nich a ve v´ ysledn´ ych statistik´ach bych nemˇel ani jeden z´aznam s v´ yslovnost´ı.
5.1
Implementace skriptu pro z´ısk´ an´ı statistik
Pro z´ısk´an´ı statistik ze slovn´ıku OLIF jsem pouˇzil skriptovac´ı jazyk Python. Vzhledem k tomu, ˇze v´ ysledn´ y slovn´ık obsahuje velk´e mnoˇzstv´ı dat a jazyk python podporuje parsovan´ı pomoc´ı sax, tak jsem pro pr´aci s dokumentem XML zvolil pr´avˇe sax (viz kapitola 2.3.2), protoˇze mi pro statistiky staˇc´ı data zpracovat jenom jednou a hledan´e hodnoty si uloˇzit do promˇenn´ ych a struktur pythonu. Pro hodnoty, kdy si ukl´ad´am slova a ˇcetnost jejich pouˇzit´ı, pouˇz´ıv´am pythonovskou strukturu Dictionary, coˇz je asociativn´ı pole z´aznam˚ u. Po zpracov´an´ı vˇsech dat pole seˇrad´ım podle ˇcetnosti v´ yskytu slov a vyp´ıˇsu si tˇri prvn´ı z´aznamy.
5.2
V´ ysledn´ e statistiky
V´ ysledn´e statistiky pak zapisuji do dokumentu XML viz 5.2. Vysvˇetlen´ı jednotliv´ ych element˚ u a jejich atribut˚ u: • entries - poˇcet vstup˚ u • english - obsahuje anglick´a slova a jejich poˇcet atribut count ˇr´ık´a kolikr´at je nalezeno – first - prvn´ı slovo podle poˇctu v´ yskyt˚ u v elementu canForm – second - druh´e slovo podle poˇctu v´ yskyt˚ u v elementu canForm – third - tˇret´ı slovo podle poˇctu v´ yskyt˚ u v elementu canForm 34
• czech - obsahuje ˇcesk´a slova a jejich poˇcet – first - prvn´ı slovo podle poˇctu v´ yskyt˚ u v elementu canForm atribut count ˇr´ık´a kolikr´at je nalezeno – second - druh´e slovo podle poˇctu v´ yskyt˚ u v elementu canForm atribut count ˇr´ık´a kolikr´at je nalezeno – third - tˇret´ı slovo podle poˇctu v´ yskyt˚ u v elementu canForm atribut count ˇr´ık´a kolikr´at je nalezeno • overal - obsahuje vˇsechna slova a jejich poˇcet – first - prvn´ı slovo podle poˇctu v´ yskyt˚ u v elementu canForm atribut count ˇr´ık´a kolikr´at je nalezeno – second - druh´e slovo podle poˇctu v´ yskyt˚ u v elementu canForm atribut count ˇr´ık´a kolikr´at je nalezeno – third - tˇret´ı slovo podle poˇctu v´ yskyt˚ u v elementu canForm atribut count ˇr´ık´a kolikr´at je nalezeno • trans - vztahuje se k pˇreklad˚ um anglick´ ych slov do ˇceˇstiny – words - obsahuje anglick´a slova a poˇcet jejich pˇreklad˚ u do ˇceˇstiny atribut count ˇr´ık´a kolikr´at je nalezeno ∗ first - prvn´ı slovo podle poˇctu pˇreklad˚ u ∗ second - druh´e slovo podle poˇctu pˇreklad˚ u ∗ third - tˇret´ı slovo podle poˇctu pˇreklad˚ u – moretrans - obsahuje ˇc´ıslo, kter´e ˇr´ık´a kolik slov m´a v´ıce pˇreklad˚ u – onetrans - kolik slov m´a pr´avˇe jeden pˇreklad – notrans - kolik slov nem´a ˇz´adn´ y pˇreklad (napˇr. zkratky, fr´aze bez pˇrekladu) – avgtrans - jak´ y je pr˚ umˇeˇr pˇreklad˚ u k anglick´ ym slov˚ um • pronunciation - kolik anglick´ ych slov m´a v´ yslovnost • usages - kolik anglick´ ych a ˇcesk´ ych slov m´a pˇr´ıklad uˇzit´ı slova • abbrevations - kolik je ve slovn´ıku zkratek • oth-variation - kolik je ve slovn´ıku ortografick´ ych variant slova • headwords - kolik slov m´a headword tzn. kolik je ve slovn´ıku fr´az´ı Z v´ ysledn´ ych statistik mˇe pˇrekvapil poˇcet pˇreklad˚ u slova run, kter´e je pˇreloˇzeno 851 kr´at.
35
<stats> <entries>220940 <words> <english> go <second count="624">take get d´ at <second count="147">v´ est j´ ıt go <second count="624">take get <words> run <second count="848">set go <moretrans>67123 81863 <notrans>60832 2.09365891192 <pronunciation>83293 <usages>279687 14739 1820 126463
Uk´azka 4: V´ ysledn´e statistiky ze slovn´ıku OLIF
36
Kapitola 6 Z´ avˇ er Bakal´aˇrsk´a pr´ace se t´ yk´a popisu, vyuˇzit´ı, n´astroj˚ u a v´ yhod jazyku XML pro ukl´ad´an´ı slovn´ıkov´ ych dat do standard˚ u k tomu urˇcen´ ych. Popisuje r˚ uzn´e XML standarty pro ukl´ad´an´ı slovn´ıkov´ ych dat a ˇcerp´an´ı informac´ı r˚ uzn´ ych zdroj˚ u, popisuje jejich odliˇsnosti a v´ yhody. Jedn´ım z c´ıl˚ u pr´ace byla transformace p˚ uvodn´ıch pseudo XML dat do jednoho ze standard˚ u pro ukl´ad´an´ı slovn´ıkov´ ych dat. Za tento standard jsem si zvolil OLIF. Za u ´ˇcelem pˇrevodu jsem rozˇs´ıˇril implementaci jiˇz existuj´ıc´ıho pythonovsk´eho parseru pro specifick´e datov´e vstupy. Zpracov´an´ı vˇsech vstupn´ıch dat bylo dle oˇcek´av´an´ı ˇcasovˇe n´aroˇcn´e. D´ale jsem se v pr´aci zamˇeˇril na pokroˇcilou validaci XML dokumentu podle standardu OLIF a to pomoc´ı schematronu. Konkr´etnˇe pak na validaci spr´avnosti fixn´ıch hodnot, kter´e m´a dokument OLIF obsahovat. Pro tento u ´ˇcel jsem si vytvoˇril pˇredpis schematronu a aplikoval ho za pomoci jiˇz existuj´ıc´ıho programu pro zpracov´an´ı XSL transformac´ı, saxonu. I tato ˇca´st byla ˇcasovˇe i pamˇet’ovˇe n´aroˇcn´a. Posledn´ı ˇc´ast´ı pr´ace bylo zvolen´ı vhodn´eho postupu a z´ısk´an´ı statistik ze slovn´ıku. K tomuto u ´ˇcelu jsem opˇet vyuˇzil jazyku python a ke zpracov´an´ı XML dokumentu parseru sax. I tato ˇca´st je ˇcasovˇe n´aroˇcn´a avˇsak pamˇet’ovˇe, d´ıky saxu, ne. Kaˇzd´a ˇca´st pr´ace poˇzadovala specifick´e znalosti z oblasti zpracov´an´ı XML dokument˚ u. Vyuˇz´ıv´an´ı ˇci rozˇsiˇrov´an´ı r˚ uzn´ ych jiˇz implementovan´ ych n´astroj˚ u i vytv´aˇren´ı vlastn´ıch bylo pro m´e znalosti znateln´ ym pˇr´ınosem.
37
Literatura [1] Bray, T.; et al.: Extensible Markup Language (XML) 1.0 (Second Edition). [online], [cit. 1.4.2008]. URL [2] Cimprich, P.: Akta X: Relax NG se prosazuje. [online], [cit. 19.4.2008]. URL [3] Consortium, O.: OLIF. [online], [cit. 19.4.2008]. URL [4] Corrigan, J.; Foster, T.: XLIFF: An Aid To Localization. [online], [cit. 2.5.2008]. URL [5] Group, L. T. S. I.: TBX Specification. [online], [cit. 19.4.2008]. URL [6] Ide, N.; Lenci, A.; Calzolari, N.: RDF Instantiation of ISLE/MILE Lexical Entries. 2003. URL [7] Initiaitve), T. T. E.: The Test Encoding Initiative Guidelines. [online], [cit. 19.4.2008]. URL [8] Kay, M. H.: SAXON. [online], [cit. 5.5.2008]. URL [9] Kosek, J.: XML pro kaˇzd´eho. [online], [cit. 5.5.2008]. URL [10] Lindsey, B.: XT. [online], [cit. 5.5.2008]. URL [11] LINGUISTICS, U. D. O. P. .: SAMPA computer readable phonetic alphabet. [online], [cit. 2.5.2008]. URL 38
[12] Megginson, D.: SAX. [online], [cit. 11.4.2008]. URL [13] RootsWeb.com: Abbreviations and Character Codes For RootsWeb.com Users. [online], [cit. 5.5.2008]. URL [14] Skonnard, A.; Gudgin, M.: XML - pohotov´a referenˇcn´ı pˇr´ıruˇcka. Grada Publishing, a.s., 2006. [15] for the Advancement of Structured Information Standards, T. O.: RELAX NG Specification. [online], [cit. 19.4.2008]. URL [16] Thurmair, G.: Exchange Formats: TBX, OLIF, and Beyond. [online], [cit. 19.4.2008]. URL [17] W3C: Fixed Values for OLIF Data Categories. [online], [cit. 5.5.2008]. URL [18] w3schools: DTD Tutorial. [online], [cit. 10.4.2008]. URL [19] w3schools: XML DOM(Document Object Model) Tutorial. [online], [cit. 10.4.2008]. URL [20] w3schools: XML Information Set (Second Edition). [online], [cit. 10.4.2008]. URL [21] Wikipedia: Slovn´ık. [online], [cit. 19.4.2008]. URL [22] Zampolli, A.; Baroni, P.: International Standards for Language Engineering. [online], [cit. 2.5.2008]. URL
39
Dodatek A Pˇ r´ılohy bakal´ aˇ rsk´ e pr´ ace Jako pˇr´ıloha bakal´aˇrsk´e pr´ace je jedno DVD s pouˇzit´ ymi n´astroji.
40