Nástroje pro vývoj gramatik přirozeného jazyka

Rozměr: px
Začít zobrazení ze stránky:

Download "Nástroje pro vývoj gramatik přirozeného jazyka"

Transkript

1 MASARYKOVA UNIVERZITA V BRNĚ FAKULTA INFORMATIKY Nástroje pro vývoj gramatik přirozeného jazyka DIPLOMOVÁ PRÁCE Radek Vykydal Brno, 2005

2 Prohlašuji, že tato práce je mým původním autorským dílem, které jsem vypracoval samostatně. Všechny zdroje, prameny a literaturu, které jsem při vypracování používal nebo z nich čerpal, v práci řádně cituji s uvedením úplného odkazu na příslušný zdroj. Děkuji Mgr. Aleši Horákovi, Ph.D. za odborné vedení diplomové práce a za rady a pomoc, které mi poskytoval v průběhu její realizace. Stejně tak děkuji i všem ostatním, kteří ke vzniku této práce přispěli. i

3 Shrnutí Práce se zabývá prostředími pro vývoj gramatik přirozeného. jazyka. Zkoumá existující ve světě používané systémy, jejich funkce, strukturu a architekturu a také možnosti použití pro vlastní systém orientovaný na češtinu. Na základě získaných poznatků je navržen a implementován vlastní systém nástrojů GDW, který je založen na systému synt vytvořeném na FI MU v Brně. Systém vytváří prostředí usnadňující ruční vytváření gramatiky češtiny v rámci fromalismu systému synt. Poskytuje nástroje pro systematickou práci se vstupy a výstupy systému synt větami, gramatikou, limity, syntaktickými stromy a chartem analýzy. Klíčová slova gramatika, vývojové prostředí, chart, syntaktický strom, hrana chartu, syntaktická analýza ii

4 Obsah Úvod 1 1 Prostředí pro vývoj gramatik Přehled vybraných GDE ANLT a vývojové prostředí GDE ANLT Alvey Natural Language Tools GDE Parallel Grammar Project (ParGram), prostředí XLE a formalismus LFG Projekt ParGram Vývojové prostředí XLE Projekt LS-GRAM a systém ALEP Projekt LS-GRAM ALEP - Advanced Linguistic Engineering Platform Systém LiLFeS a grafické rozhraní will Projekt XTAG Laboratoř CSLI LinGO Lab a prostředí LKB LinGO Linguistic Grammars Online LKB Systém ConTroll a grafické rozhraní Xtroll ConTroll Grafické uživatelské rozhraní Xtroll GATE - General Architecture for Text Engineering (verze 2) PAGE Platform for Advanced Grammar Engineering HDRUG Aplikace Uživatelské rozhraní Nástroje pro vizualizaci datových struktur Santyktické analyzátory a generátory Knihovny Pleuk ALE - Attribute Logic Engine Další systémy a dokumentace Shrnutí Gramatický formalismus a implementované datové struktury iii

5 1.2.2 Překlad metagramatiky Zobrazení datových struktur Ovládání systému Modulární zpracování gramatiky Závěry Vývoj gramatik v laboratoři NLP Gramatika Analyzátor synt Zavedení některých pomocných pojmů Chart analýzy Generované stromy a limity Systém GDW Celkový přehled systému GDW Architektura systému Vývoj systému Implementace systému Příklady použití systému Modul Gsynt Funkce modulu Gsynt Seznamy vět Příznaky vět Výběr vět Zobrazování informací o analýze věty Práce s formáty vět Práce s limity Vstupní gramatika analýzy Analýza vět Poznámky k implementaci Modul GrammarView Generování gramatik Prohlížení gramatik Modul TreeView Funkce modulu TreeView Zobrazování stromů analýzy Výběr stromů Podobnost stromů a průnik stromů Metriky pro stromy Použitá definice vzdálenosti a průniku Funkce modulu pro výpočet vzdálenosti a průniku Výběr stromů na základě částečných analýz Limity jako strukturní omezení Volba limitů Práce s limity v okně Neterminály a pravidla gramatiky iv

6 3.4.7 Vybrané použité algoritmy Algoritmus pro testování limitů Algoritmus pro průnik syntaktických stromů věty Poznámky k implementaci Modul ChartView Funkce a objekty modulu ChartView Funkce modulu Objekty s nimiž se v modulu pracuje Grafické zobrazování objektů modulu Celkový pohled na chart Grafické zobrazování hran Zobrazení otevřené hrany Zobrazení uzavřené hrany Výběr a hledání hran Seznam hran Způsoby a kritéria výběru Výběr na základě rozsahu hrany Výběr na základě pravidla hrany Výběr vrcholových hran Hledání hran Procházení chartu hranový prohledávač Zobrazování částečných výsledků analýzy Konstrukce ukončeného řetězu uzlů pro zvolený rozsah Zobrazování větších částí stromů analýzy a jejich kompatibilita Rozvíjení stromu částečné analýzy směrem dolů Rozvíjení stromu částečné analýzy směrem nahoru Práce s limity Práce s pravidly gramatiky Poznámky k implementaci Možnosti rozšíření funkcionality Závěr 74 Rejstřík 75 Literatura 76 Obsah přiloženého CD 78 v

7 Úvod Tématem této práce jsou prostředí pro vývoj formálních gramatik přirozeného jazyka (GDE Grammar Development Environment). Formální gramatiky umožňují reprezentaci znalostí o syntaktické struktuře jazyka pomocí teoreticky zakotvených formálních systémů, v notaci vhodné pro zpracování a využití pomocí počítače. Jako nejpoužívanější formální systémy jmenujme např. DCG, HPSG, LFG, TAG, LTAG. Gramatické formalismy bývají nejčastěji zapisovány pomocí frázových produkčních pravidel generujících řetězce reprezentující věty a omezení kladených na použití těchto pravidel. Přirozeným jazykem, na který se soustředíme v naši práci, je čeština. Budeme zkoumat také výsledky dosažené v dané oblasti pro různé další přirozené jazyky, je však třeba mít na paměti, že některé typické charakteristiky češtiny (příkladem je např. otázka pořádku slov ve větě nebo flektivnosti jazyka), mohou mít vliv použitelnost zkoumaných nástrojů a metod. Vytváření formálních gramatik úzce souvisí s automatickou (úplnou) syntaktickou analýzou přirozeného jayzyka. Jde o úroveň analýzy jazyka využívající nižší úrovně analýzy (lexikální, morfologická analýza) a používanou při dalších úrovních analýzy (sémantická analýza, pragmatická analýza) nebo ve spolupráci s nimi. Tvorbu formální gramatiky můžeme považovat jak za prostředek, tak za cíl použití syntaktické analýzy. Základním cílem syntaktické analýzy je rozhodovat gramatickou správnost utvoření dané věty (příslušnost věty do jazyka), resp. generovat správně utvořené věty na základě zadané gramatiky. Jako užitečný výsledek nás také zajímá syntaktická struktura věty reprezentovaná pomocí syntaktických stromů. Prostředky k tomu poskytují počítačové systémy nazývané syntaktické analyzátory. Syntaktický analyzátor je podstatnou částí GDE, umožňující při vývoji gramatiky pomocí vybraných souborů vět testovat, zda formální gramatika odpovídá zkoumanému jazyku v tom smyslu, že nepřegenerovává (nelze z ní generovat věty nepatřící do jazyka) a nepodgenerovává (umožňuje generovat všechny věty daného jazyka). K testování lze použít korpusy daného jazyka, zejména tzv. banky stromů, které obsahují syntaktické stromy jednotlivých vět. Počítačové gramatiky lze vytvářet ručně nebo získávat automaticky (popř. využít kombinace obou přístupů). GDE, kterými se zabýváme, slouží k usnadnění ručního vytváření gramatik mají umožnit pohodlněji navrhovat a testovat změny v gramatice v rámci jednotného uživatelského prostředí. 1 1 a to i uživatelům, kteří nemají přesnou představu o fungování a struktuře použitého počítačového systému 1

8 Na otázky, jaké prvky tvoří GDE, jaké jsou jejich funkce a propojení, jaká je architektura GDE, má odpovědět první kapitola, zabývající se zkoumáním existujících systémů. Kromě toho je zde našim cílem zjistit možnosti použití prozkoumaných systémů při tvorbě vlastního systému. Ve druhé kapitole je podán popis nástrojů používaných v laboratoři NLP na Fakultě informatiky MU (zejména systému pro syntaktickou analýzu synt a jeho gramatiky), které budou použity jako základ námi vytvořeného systému pro vývoj gramatiky češtiny, který jsme nazvali GDW Grammar Development Workbench. Náš systém (zejména požadavky na jeho funkcionalitu) byl navržen na základě výsledků popsaných v prvních dvou kapitolách. Výsledek jeho implementace je popsán v kapitole třetí. Soustředíme se na popis nástrojů poskytovaných jednotlivými moduly systému, postupů a funkcí použitých k jejich implementaci, vybraných použitých algoritmů a implementačních detailů a také příkladů praktického použití vytvořených nástrojů a spolupráce jednotlivých modulů. Elektronické dokumenty přiožené na CD obsahují uživatelský manuál systému GDW a doplňující informace k první kapitole (obsáhlý přehled zdrojů a dokumentaci k jednotlivým GDE). 2

9 Kapitola 1 Prostředí pro vývoj gramatik V této kapitole se budeme zabývat existujícími systémy pro vývoj počítačově zpracovatelných gramatik přirozeného jazyka (budeme používat zkratku GDE Grammar Development Environment). 1 Kapitola obsahuje výsledky pátrání po existujících systémech a zkoumání jejich vlastností, které tvořilo výchozí bod pro návrh vlastního nástroje pracujícího s gramatikou a syntaktickým analyzátorem synt, vyvíjenými v laboratoři NLP na FI MU v Brně. Sledovali jsme dva hlavní cíle: zjistit jaké jsou funkce a nástroje poskytované zkoumanými GDE, případně jejich architektura a způsoby implementace prozkoumat možnosti použití existujících systémů nebo jejich částí pro vývoj vlastního systému 2 Při zkoumání jednotlivých GDE jsme se soustředili především na tyto jejich charakteristiky: gramatický formalismus (závislost/univerzalita) metagramatika, syntaktický cukr makra, šablony, zkratky překlad gramatiky do formy čitelné pro analyzátor nástroje pro práci s morfologií syntaktický analyzátor nástroje pro vizualizaci použitých datových struktur a výsledků analýzy nástroje pro trasování, vizualizaci průběhu analýzy nástroje pro testování gramatik na souborech testovacích dat prostředky pro modulární zpracování gramatiky a týmovou práci na vývoji případné prostředky pro práci se sémantikou cyklus vývoje gramatiky 1 Pojem GDE můžeme ideálně chápat ve dvou významech. V širším smyslu hovoříme o celém systému pro vývoj gramatik včetně např. syntaktického analyzátoru v tomto významu budeme výraz GDE dále používat. V užším smyslu máme na mysli prostředí propojující jednotlivé prvky systému, zpravidla grafické uživatelské prostředí. 2 při dodržení požadavků zachování gramatického formalismu a použití analyzátoru synt 3

10 Cyklem vývoje gramatiky rozumíme typickou posloupnost navazujících činností prováděných autorem gramatiky pomocí GDE při vývoji gramatiky, mezi těmito činnostmi mohou být: úprava gramatiky překlad gramatiky analýza testovacích vět zkoumání výsledků analýzy návrh na změnu gramatiky Pro autora gramatiky je zajímavá zejména časová náročnost jednotlivých kroků a možnost jejich urychlení a usnadnění pomocí funkcí GDE. 1.1 Přehled vybraných GDE Zkoumali jsme systémy různé velikosti, vyvinuté pro různé účely, od malých systémů určených k experimentování v rámci určitého formalismu, po široce navržené systémy pro praktické nasazení. Následuje přehled vybraných prozkoumaných systémů ANLT a vývojové prostředí GDE ANLT Alvey Natural Language Tools ANLT je soubor nástrojů pro výzkum v oblasti zpracování přirozeného jazyka. Zahrnuje morfologický analyzátor, syntaktické analyzátory, rozsáhlou gramatiku a slovník s položkami. Nástroje jsou použitelné samostatně nebo společně v integrovaném prostředí pro vývoj gramatik nazvaném GDE. GDE zpřístupňuje všechny komponenty nástrojů a umožňuje zadávat, editovat, prohlížet a překládat gramatiku. Spolu tvoří nástroje systém pro morfologickou, syntaktickou a sémantickou analýzu podmnožiny anglického jazyka. GDE GDE je vývojové prostředí pro rozsáhlé gramatiky přirozených jayzků, vytvořené na přelomu 80. a 90. let minulého století jako součást projektu ANLT v Edinburghu a Cambridgi. Jako svou součást zahrnuje syntaktický analyzátor (modifikovaný bottom-up chart parser), generátor a morfologický analyzátor. Poskytuje nástroje pro definování a editování syntaktických pravidel vyjádřených pomocí metagramatického formalismu, nástroje pro zachycení sémantiky odpovídající syntaktickým pravidlům a pro budování lexikonu kompatibilního s gramatikou. Syntaktický analyzátor, generátor a nástroje pro inspekci gramatiky umožnují její testování a ladění. Prostředí je implementováno v jazyce Common Lisp. Gramatický formalismus. Gramatika je v GDE definována pomocí metagramatického formalismu, který je obdobou GPSG a jehož pravidla jsou automaticky překládána do bezkontextové unifikační (unifikace termů) gramatiky, tzv. objektové gramatiky (object grammar). Člověk pracuje s metagramatikou, objektová gramatika slouží jako vstup 4

11 pro syntaktický analyzátor a generátor. Výhodami použití metagramatiky jsou její menší rozsah, vetší přehlednost, srozumitelnost a snadnejší vyjadřování syntaktických zobecnení. S ohledem na rychlost překladu metagramatiky uchovává systém některé datové struktury obsahující částečné výsledky překladu, aby při drobných změnách gramatiky nemusel začínat překlad znovu. Výsledek překladu je k dispozici ve formě pro syntaktický analyzátor nebo v čitelné formě ve formátu založeném na seznamech jazyka Lisp. Metagramatika obsahuje pravidla několika typů, která jsou pojmenována. Konzistence definic různých pravidel různých typů se automaticky testuje při překladu do objektové gramatiky. Základními prvky, jejichž deklarace tvoří metagramatiku, jsou příznaky (features), kategorie (category), pravidla přímé nadřazenosti (immediate dominance (ID) rules), frázová pravidla (phrase structure (PS) rules), propagační pravidla (propagation rules), pravidla pořadí (linear precedence rules) a metapravidla (metarules). Jako součást metagramatiky mohou být definovány i prvky lexikonu (jako alternativa k použití morfologického analyzátoru), především pro účely vývoje a testování gramatiky. Příznaky slouží k definování gramatických rysů (např. osoba, plurál, pád), kategorie jsou množiny rysů definující gramatické kategorie (např. sloveso, jmenná fráze, člen, pomocné sloveso). V definicích těchto prvků lze používat množiny a zkratky, což vede opět ke stručnějšímu a přehlednějšímu zápisu pravidel. Pravidla přímé nadřazenosti (ID pravidla), frázová pravidla (PS pravidla) a pravidla pořadí určují přípustné vztahy nadřazenosti a pořadí jednotek ve frázi a umožnují také zahrnout sémantickou informaci kódovanou pomocí lambda kalkulu vyššího řádu. Propagační pravidla určují propagaci rysů skrz PS a ID pravidla (umožnující např. kontrolu gramatické shody). Pomocí metapravidel lze pro PS a ID pravidla metagramatiky, která odpovídají vzoru metapravidla, automaticky, za použití mechanismu obdobného unifikaci, generovat další pravidla do objektové gramatiky. Interakce s uživatelem probíhá textově, prostřednictvím řádkového příkazového interpretu. V příkazech je na příslušná pravidla odkazováno pomocí jejich jmen při možném použití vzorů a logického operátoru konjunkce pro výběr více pravidel. Chování GDE lze kontrolovat také nastavením dvanácti příznaků, které ovlivňují zejména proces překladu metagramatiky, spolupráci s morfologickým analyzátorem a nastavení syntaktického analyzátoru. Příkazy pro vkládání a editaci pravidel gramatiky v sobě zahrnují některé kontroly konzistence (např. nedovolí smazání rysů použitých v existujících pravidlech nebo vyžadují definici rysu před jeho použitím v pravidle). Pravidla lze zobrazovat v několika různých stádiích převodu do objektové gramatiky (uplatnění metapravidel, normalizace, linearizace). Správa souborů s definicemi gramatik zahrnuje kromě načítání a zápisu také možnost přesunu pravidel mezi soubory. Dále jsou k dispozici příkazy pro změny pořadí deklarací rysů a pravidel v gramatice, ovlivňující efektivitu parsování a generování. Pro ladění gramatiky lze využít příkaz umožňující odstranit z pracovní gramatiky všechna pravidla obsažená v nějakém souboru (spolu s kontrolou konzistence). Syntaktický analyzátor, generátor a ladění gramatiky. Ladění gramatiky probíhá ve spolupráci se syntaktickým analyzátorem a generátorem. Analyzátor (modifikovaný bottom-up chart parser) umožňuje zvolit mezi různými formami textové prezentace výsledků parsingu věty. Lze volit formát výsledků (závorková struktura, strom,...), zobrazit vybrané kategorie, sémantiku, společné podstromy různých výsledků parsingu a lze také zobrazit hrany v chartu. Generátor může pracovat v manuálním nebo automatickém módu. 5

12 V manuálním módu uživatel postupně interaktivně buduje strom expandováním jeho jednotlivých listů (systém mu nabízí pravidla aplikovatelná v daném uzlu). Automatický mód generuje všechny řetězce slov odpovídající gramatice, jejichž množina je omezena jednak tím, že generátor nepoužije žádné PS pravidlo v jedné větvi dvakrát, a jednak omezením celkového počtu slov v generovené frázi Parallel Grammar Project (ParGram), prostředí XLE a formalismus LFG Projekt ParGram Projekt ParGram používá syntaktický analyzátor a platformu pro vývoj gramatik XLE (Xerox Language Environment). Projekt zahrnuje tvorbu gramatik pro 6 jazyků: angličtinu, němčinu, francouzštinu, japonštinu, norštinu a jazyk urdu. Gramatiky jsou zapsány ve formalismu LFG (Lexical-Functional Grammar). Výstupem syntaktické analýzy jsou povrchové c-struktury (constituent structures) reprezentované stromy a hloubkové f-struktury (functional structures), reprezentované pomocí AVM matic (atribut-value matrix). Cílem projektu je vyzkoušet univerzalitu formalismu LFG, jeho omezení týkající se pokrytí jazyka a zjistit, do jaké míry může být udržováno paralelní zpracování napříč jazyky. Paralelismus při zpracování typologicky značně odlišných jazyků má být možný díky univerzalitě f-struktur, které mají kódovat právě jazykově univerzální úroveň analýzy. Na úrovni c-struktur jsou potom kódovány rozdíly jednotlivých jazyků týkající se lineárního pořádku slov, užití povrchových morfologických nebo syntaktických struktur a konstituentů. Cíle tvorby gramatik pro jednotlivé jazyky zapojené do projektu jsou různé. Anglické, německé a japonské projekty míří k vytvoření průmyslových gramatik s širokým pokrytím. Norská gramatika a gramatika jazyka urdu jsou malé gramatiky pro experimentální začleňování různých druhů informací do gramatiky (např. sémantická informace). Vývojové prostředí XLE XLE je systém pro vývoj gramatik umožňující definovat gramatiky ve formátu obdobném formalismu LFG. Skládá se ze syntaktického analyzátoru pužívajícího tzv. algoritmy ořezávání hran (cutting-edge algorithm) a grafického uživatelského rozhraní pro psaní a ladění gramatik. Autor gramatiky zapisuje pravidla a lexikální položky v textovím editoru (Emacs). Výsledkem syntaktické analýzy jsou reprezentace c-struktur a f-struktur ve formě stromů a AVM matic. Analyzátor vrací reprezentace všech možných řešení ve zkomprimované formě pro další zpracování. Systém umožňuje autorovi označit některé konstrukce jako nežádoucí. V případě neúspěchu analýzy na celém vstupu může být jako výsledek analýzy vrácen jen dobře utvořený fragment vstupu. XLE umožňuje začlenění vnějších modulů zajišťujících předzpracování vstupu před samotnou syntaktickou analýzou, jako jsou tokenizer, morfologický analyzátor a slovník. Poskytuje také prostředky pro reprezentaci ligvistickch abstrakcí a generalizací, jako jsou makra a šablony, které jsou nezbytné pro vývoj rozsáhlých gramatik. XLE je napsán v jazyce C a uživatelské rozhraní využívá Tcl/Tk. Podporované platformy jsou Solaris Unix, Linux a Mac OS X. 6

13 Systém XLE není volně dostupný. Jeho použití předpokládá překlad gramatiky do formalismu LFG. Ke zvážení je možnost spolupráce v rámci projektu ParGram, která by předpokládala využití LFG gramatik již existujících v rámci projektu a konstrukci gramatiky češtiny od začátku konzistentně (paralelně) s existujícími gramatikami Projekt LS-GRAM a systém ALEP Projekt LS-GRAM Cílem projektu bylo vytvořit gramatické zdroje pro devět jazyků (angličtina, němčina a španělština tvoří jádro projektu, další jazyky jsou francouzština, dánština, holandština, řečtina, italština, portugalština) příslušnou dokumentaci a malý systém pro ukázku strojového překladu (od tohoto cíle bylo upuštěno). K vývoji gramatiky bylo použito prostředí ALEP. V průběhu projektu se ukázalo jako nedostačující nástroj a bylo vylepšováno. Projekt byl ukončen v roce ALEP - Advanced Linguistic Engineering Platform je rozsáhlý systém pro vývojáře lingvistického softwaru. Poskytuje distribuované, multitaskingové prostředí obsahující nástroje pro vytváření gramatik a slovníků, založené na prostředích Motif a Emacs. Má usnadňovat integraci nástrojů uživatele prostředí do širší aplikace a slouží jako soubor základních nástrojů a zdrojů pro uživatele nově vstupující do oboru zpracování jazyka. Architektura vývojového prostředí ALEP je založena na čtyřech vrstvách: Prezentační vrstva (Presentation layer) je tvořena rozhraními k jednotlivým nástrojům, používá buď okna prostředí Motif nebo textově orientované rozhraní, Řídící vrstva (Control layer) směřuje a vykonává požadavky a dotazy z prezentační vrstvy a vrací ji výsledky a zprávy pro uživatele, Konfigurační vrstva (Configurable layer) úlohy a objekty (Tasks and Objects) akce jsou vykonávány Task Executory které spouští úlohy, popsané speciálním jazykem (User Language), Vrstva zdrojů (Resource layer) tvoří ji data uložená v databázích a aplikace, kterými mohou být spustitelné aplikace nebo serverové aplikace. První tři vrstvy tvoří vlastní prostředí ALEP, které je distribuováno spolu se standardními aplikacemi a základními zdroji. Třetí, konfigurovatelná vrstva je nejdůležitější pro podporu strukturování práce a konfigurace a včleňování nových nástrojů uživatelem. Přestože systém je navržen jako otevřená platforma umožňující přizpůsobení a začlenění vlastních nástrojů a komponent, použivá vlastní gramatický formalismus. Je založen na frázových pravidlech, která jsou tvořena bezkontextovou frázovou páteří s asociovanými typy. Typová hierarchie je použita pouze během překladu, pak jsou struktury v databázi plně expandovány. Systém poskytuje prostředky pro práci s makry a lexikálními položkami. ALEP je implementován v Prologu. Obsahuje dva algoritmy pro analýzu (nedeterministický bottom-up head-out parser a algoritmus sdílení struktur) a jeden algoritmus pro 7

14 generování. Zpracování jazyka je rozděleno do několika následných fází, z nichž každá má vlastní pravidla. Systém obsahuje nástroje pro ladění post-mortem. ALEP má konfigurovatelné grafické rozhranní založené na platformách Motif a Emacs. Umožňuje čitelný tisk vytvořených složitých struktur a manipulaci s nimi Systém LiLFeS a grafické rozhraní will LilFeS je japonský programovací systém založený na unifikaci, určený pro jazykové formalismy založené na typovaných příznakových strukturách, jako je např. HPSG. Hlavním cílem jeho návrhu byla efektivita dostatečná pro praktické nasazení. Jádrem systému je abstraktní počítač vyvinutý pro efektivní práci s typovanými příznakovými strukturami. LiLFeS pracuje s proměnnými, typy, restrikcemi na hodnoty příznaků a rovnostmi na úrovni termů. Jeho syntaxe umožňuje disjunkci, negaci a řez po vzoru původní syntaxe Prologu. Systém poskytuje vestavěné predikáty, jako kopírování příznakových struktur, asertování, líné vyhodnocování, vícerozměrná pole a predikát findall. Programy jsou tvořeny DC klauzulemi zahrnujícími specifikaci typovaných příznakových struktur a jsou překládány do instrukcí abstraktního počítače, které jsou potom interpretovány emulátorem napsaným v jazyce C++. Pro systém existuje grafické uživatelské rozhraní will. Jedná se o Java2 aplikaci. Umožňuje procházení a zobrazování struktur, typových hierarchií a stromů analýzy a provádění unifikace příznakových struktur a spouštění programů systému LiLFeS. Vstup pro analýzu je zadán přímo v okně nebo jako prostý textový soubor s větami k analýze. Po proběhnutí analýzy je zobrazen čas analýzy. Výsledky syntaktické analýzy mohou být zobrazeny jako seznam uzlů vytvořených v průběhu analýzy, jako chart výsledku a dále mohou být zobrazeny příznakové struktury a syntaktické stromy asociované s příslušnými uzly. Pomocí rozhraní will lze prohlížet, srovnávat a editovat příznakové struktury a struktury syntaktických stromů analýzy v grafické formě. Graficky zobrazovat lze také typové hierarchie. Okno konzole slouží k pohodlné komunikaci se samotným systémem LiLFeS, ke spouštění programů, zobrazování výsledků. Umožňuje prohlížení a zadávání příznakových struktur v oknech v grafické formě. K dispozici je japonská HPSG gramatika SLUNG a anglická HPSG gramatika XHPSG, která vznikla konverzí z LTAG gramatiky XTAG. Systém je implementován v jazyce C++, je volně dostupný a podporována je platforma Unix Projekt XTAG Cílem projektu XTAG je vývoj rozsáhlé gramatiky angličtiny za použití lexikalizovaného gramatického formalismu TAG (Tree Adjoining Grammar). XTAG je zároveň jméno systému pro vývoj gramatik ve formalismu TAG, obsahujícího syntaktický analyzátor, morfologický analyzátor a rozhraní pro vývoj gramatik pro systém X-Windows. Součástmi systému jsou syntaktický analyzátor, nástroj pro značkování vět takzvanými SuperTagy (elementárními stromy), morfologická databáze, nástroj pro editaci souborů se syntaxí synedit a prohlížeč stromů a rodin stromů bungee. O nějaké platformě propojující všechny prvky systému a usnadňující tvorbu a ladění gramatik se nám nepodařilo získat žádné informace. 8

15 Systém je volně dostupný. Podporované platformy jsou Linux a Solaris. Kromě samotné anglické gramatiky lze na domovských stránkách nalézt odkaz na projekt vývoje korejské gramatiky. Gramatika byla také přeložena do HPSG formalismu na gramatiku XHPSG používanou v systému LiLFeS Laboratoř CSLI LinGO Lab a prostředí LKB LinGO Linguistic Grammars Online Laboratoř LinGO, působící na univerzitě ve Stanfordu, se zabývá vývojem přesných gramatik v rámci formalismu HPSG a víceúčelových nástrojů pro vytváření gramatik, syntaktickou analýzu a generování. V laboratoři byla vytvořena víceúčelová gramatika angličtiny ERG (English Resource Grammar) a systém pro vývoj gramatik (grammar engineering system) LKB. Na základě zkušeností s vytvářením gramatik pro angličtinu (ERG), němčinu (gramatika institutu DFKI), japonštinu (gramatika JACY) a španělštinu byl ze součástí gramatik, které jsou společné, vytvořen základ, který může být užitečný pro tvorbu gramatik v dalších jazycích. Tento základ byl nazván grammar matrix. LKB Systém určený pro zpracování rozsáhlých gramatik LKB je vyvíjen na univerzitě ve Stanfordu jako součást projektu LinGO. Jeho součástí je generátor, analyzátor a grafické uživatelské rozhraní. LKB pracuje s gramatikami zapsanými ve formalismu typovaných příznakových struktur (typed-feature structures) používá logiku typovaných příznakových struktur vycházející z prací B. Carpentera. Nepodporuje negované příznakové struktury, příznakové struktury spojené disjunkcí, ani množinové operace. Primárně je orientován na implementaci HPSG gramatik, mezi něž patří i gramatika angličtiny English Resource Grammar, vyvíjená v rámci projektu LinGO, ale byl užit i k vytvoření několika poměrně rozsáhlých kategoriálních gramatik. Použití jiného formalismu než HPSG je teoreticky možné, ale vyžaduje znalost jazyka Lisp a velké úsilí. Značně omezené jsou možnosti použití systému pro jazyky s relativně volným pořádkem slov. Systém je vhodný pro zpracování gramatik s malým počtem pravidel a důraz je kladen na efektivní zpracování typových hierarchií (dědičnost a omezení). Pomocí přidruženého modulu podporuje LKB reprezentaci sémantiky (formalismus MRS Minimal Recursion Semantics). Systém lze ovládat textově pomocí příkazového interpretu jazyka Lisp nebo pomocí nabídek grafického uživatelského rozhraní. Doporučené a podporované je volání interpretu Lispu v rámci prostředí Emacs, které usnadňuje následné zpracování rozsáhlých textových výstupů vzniklých např. při analýze. Kód gramatiky je rozdělen do několika souborů, jejichž správné načtení je zajištěno úvodním skriptem, který umožňuje i nastavení globálních proměnných, ovlivňujících chování systému, např. omezení syntaktického analyzátoru na maximální počet hran apod. Spolupráce více tvůrců gramatiky je podporována na úrovni rozdělení do více souborů spolu s využitím systému pro správu verzí CVS. Při návrhu systému byl kladen důraz na minimalizaci času potřebného k rekompilaci rozsáhlé gramatiky po provedení úprav tak, aby délka cyklu úprava překlad testování při vývoji gramatiky byla co nejmenší. Základním prostředkem pro testování gramatiky 9

16 je možnost dávkového zpracování vstupů analyzátorem s výstupy analýzy ukládanými do souboru určeném pro jejich další zpracování. Mnohem širší možnosti pak skýtá spolupráce s testovacím nástrojem [incr tsdb()] test-suite machinery, se kterým je LKB kompatibilní. GUI umožňuje grafické zobrazení datových struktur, např. typových hierarchií nebo příznakových struktur s volitelnou úrovní expanze jejich částí. Pomocí vizualizace v interaktivních oknech lze dosáhnout zpřehlednění, uspořádání a propojení výsledků analýzy, usnadňující ladění gramatiky. Výsledky syntaktické analýzy mohou být buď předány na výstup v textové podobě nebo zobrazeny v grafické podobě v jednotlivých oknech jako stromy analýzy. Stromy analýzy reprezentují příznakové struktury fráze a jejich dcer. Výsledné stromy jako různé možnosti výsledku analýzy lze porovnávat a třídit s ohledem na uplatnění určitého pravidla gramatiky. Úroveň informace, která bude obsažena v označení uzlu stromu lze konfigurovat. Je možné vybírat různé uzly stromů a testovat jim odpovídající příznakové struktury na unifikaci. K ladění lze také využít zobrazení chartu syntaktické analýzy umožňující vybírat ty uzly stromu analýzy, hrany chartu, pravidla aplikovaná při analýze a příznakové struktury, které si navzájem přísluší v dané anlýze. Chart anlýzy lze také předat textově na výstup. Další nástroje pro ladění umožňují testování lexikonu nebo hledání maximálního typu příslušného seznamu příznaků. Systém je volně dostupný, včetně zdrojového kódu, pro vědecké i komerční účely. Je implementován v jazyce Common Lisp a jako samostatná aplikace dostupný pro platformy Linux, Windows a Solaris Systém ConTroll a grafické rozhraní Xtroll ConTroll Systém pro vývoj gramatik ConTroll byl vytvořen v roce 1997 na univerzitě v Tübingenu. Je určen pro implementaci gramatických formalismů založených na omezeních (constraints), jako je HPSG. Jeho součástí je grafické uživatelské rozhraní Xtroll, umožňující grafické zobrazení struktur. Dalšími prostředky podporujícími vytváření gramatik jsou grafický debugger, modulární organizace souborů usnadňující spolupráci více spolutvůrců gramatiky, automatická detekce a generování maker usnadňující a zpřehledňující zápis gramatiky a techniky překladu slovníku a gramatiky na DC klauzule podporující používanou teorii. Gramatický formalismus. Gramatiku tvoří dvě hlavní části uložené odděleně ve dvou souborech. První z nich, základní, je definice objektů se kterými teorie pracuje. Tyto objekty silně typované příznakové struktury (strongly typed feature structures) jsou uspořádány do typové hierarchie. Takové uspořádání umožňuje inferenci nad, do různé míry specifikovanými, popisy (deskripcemi) objektů. Druhou částí gramatiky je teorie nad těmito objekty, tvořená gramatickými omezeními. Formalismus neobsahuje žádnou páteř tvořenou frázovými pravidly. Omezení lze vyjádřit pomocí univerzálních omezení (nejpřímější cesta ke kódování principů HPSG gramatiky), DC klauzulí s příznakovými termy jako argumenty, a lexikálních pravidel. Univerzální omezení jsou zadávána ve formě implikací se složenými antecedenty a jsou systémem překládána na DC klauzule. 10

17 Překlad gramatiky na DC klauzule. U DC klauzulí překladač detekuje místa, ve kterých se může vyskytnout typ na nějž se vztahuje univerzální omezení, a integruje toto omezení do kódu přidáním volání univerzálních omezení zakódovaných ve formě DC klauzulí. Univerzální omezení jsou integrována líně, tj. jen v případě dostatečné specifikovanosti argumentů relací. Systém obsahuje mechanismy umožňující autorovi gramatiky specifikovat jakým způsobem má být prokládáno zpracování univerzálních omezení a DC klauzulí a pomocí direktiv pro překladač určovat, jakým způsobem mají být splňovány cíle tak, aby bylo zpracování co nejefektivnější. Do DC klauzulí jsou přeložena i lexikální pravidla. Výsledkem je optimalizovaný Prologovský logický program ve formě DC klauzulí, odpovídající na dotazy obsahující deskripce objektů gramatiky. Modulární vývoj gramatiky. Tvorba rozsáhlých gramatik více autory je podporována modulární organizací souborů s gramatikou a jejich správou pomocí nástroje podobného nástroji makefile. Dalším prostředkem ulehčujícím tvorbu rozsáhlých gramatik je použití maker jako zkratek za často používané složité příznakové termy a automatické generování maker. Grafické uživatelské rozhraní Xtroll Grafické uživatelské rozhranní Xtroll slouží k přehledné prezentaci složitých datových struktur s velkým množstvím specifikací. K reprezentaci objektů teorie HPSG jsou použity AVM zanořené matice atributů a hodnot (attribute-value matrix). Xtroll umožňuje vyhledávání atributů nebo hodnot v AVM, porovnávání různých AVM (získaných jako více odpovědí na dotaz) s vyznačováním odlišností, uživatelskou konfiguraci barev a fontů a výstup zobrazených struktur do Postscriptu (Latexu). Umožňuje také uživatelem plně konfigurovatelné zobrazování AVM struktur na stromové struktury. Grafický ladící nástroj. Slouží ke krokování a ovlivňování procesu rezoluce omezení. Nástroj graficky zobrazí strukturu testovanou na gramatickou správnost, vyznačí uzly, které se ještě mají testovat na omezení, a zjistí vlastnosti jednotlivých uzlů (podcílů). Uzel může být označen jako deterministický, neúspěšný nebo odložený, což znamená, že testování uzlu (podcíle) je odloženo z důvodu nedostatečné specifikace atributů (instanciace příslušných proměnných). Kromě možností krokování, které nabízí standardní ladící prostředky Prologu, nabízí možnost přednostního splnění všech deterministických podcílů nebo pro nedeterministické cíle možnost volby vybrané klauzule. Systém ConTroll je implementován v jazyce Prolog a je volně dostupný včetně zdrojového kódu GATE - General Architecture for Text Engineering (verze 2) GATE je infrastruktura pro vývoj softwarových komponent zpracovávajících přirozený jazyk. Pomáhá vědcům a vývojářům třemi způsoby: specifikuje architekturu, organizační strukturu pro lingvistický software, poskytuje rámec knihovnu tříd, která implementuje architekturu a může být použitá k zahrnutí nástrojů pro zpracování jazyka do různých aplikací, 11

18 poskytuje vývojové prostředí vybudované nad tímto rámcem z grafických nástrojů pro vývoj komponent. GATE jako architektura navrhuje rozdělení prvků systémů pro zpracování přirozeného jazyka na určité typy komponent, tzv. zdroje (resources). Komponenty jsou znovupoužitelné kusy softwaru s dobře definovanými rozhraními. Jedná se o specializované typy Java Beans a lze je rozdělit do tří skupin: jazykové zdroje (LanguageResources) reprezentují entity, jako jsou slovníky, korpusy nebo ontologie, procesní zdroje (ProcessingResources) reprezentují entity, které jsou primárně algoritmické, jako jsou syntaktické analyzátory nebo generátory, vizuální zdroje (VisualResources) reprezentují komponenty pro vizualizaci a editování, které jsou součástí grafických uživatelských rozhraní. Soubor zdrojů včleněných do systému GATE je pojmenován CREOLE (a Collection of REusable Objects for Language Engineering). Všechny zdroje jsou sbaleny jako soubory JAR (Java Archive) spolu s některými konfiguračními XML daty. Při vytváření aplikace pro zpracování přirozeného jazyka pomocí GATE používá vývojář vývojové prostředí a pracovní rámec (GATE framework) pro konstrukci zdrojů tří výše uvedených typů. Může jít o programování nebo tvorbu jazykových zdrojů jako jsou gramatiky které jsou používány existujícími procesními zdroji. Vývojové prostředí se používá k vizualizaci datových struktur vytvářených a zadávaných při zpracování a k ladění, měření výkonu a podobně. Poté co jsou vytvořeny příslušné zdroje, mohou být pomocí pracovního rámce GATE včleněny do cílové klientské aplikace. Systém je vyvíjen na univerzitě v Sheffieldu PAGE Platform for Advanced Grammar Engineering PAGE je systém vyvinutý v německém institutu DFKI. Usnadňuje vývoj gramatických zdrojů založených na logice typovaných příznakových struktur (například gramatický formalismus HPSG). Skládá se z několika konfigurovatelných (často nezávislých) modulů a lingvistických zdrojů, mezi něž patří: řešič omezení příznakových struktur (unifikátor) poskytující plnou booleovskou logiku na příznacích zahrnující plnou a distribuovanou disjunkci, negaci a nerovnost cest, obecný typový systém s plnou booleovskou logikou včetně disjunktivních a rekurzivních typů, open and closed world reasoning, a vysoce parametrizovatelnou expanzí typů, obousměrný chart parser umožňující inkrementální zpracování a různé parametrizované režimy zpracování, interaktivní grafický prohlížeč a editor příznakových struktur usnadňující pohyb ve složitých příznakových strukturách (zoom, imploze nebo skrytí částí struktury, expanze, koreference a vyhledávací nástroje), 12

19 zobrazovač chartu, umožňující trasování syntaktického analyzátoru a prohlížení mezivýsledků, ovládaný myší, příkazový shell. Systém může být integrován s testovacím souborem vět vytvořeným v rámci projektu TSNLP. Systém byl použit k vývoji gramatik a tvorbě aplikací. Byly pomocí něj vytvořeny rozsáhlé gramatiky němčiny, japonštiny a angličtiny. Je implementován v jazycích Common Lisp, ANSI C a Tcl/Tk a pomocí standardizovaných grafických toolkitů (systém X Window a Motif). Může být zprovozněn na většině Un*xových systémů pro které jsou dostupné vhodné implementace jazyka Common Lisp, překladač jazyka C a prostředí X a Motif. Systém je dostupný volně na požádání HDRUG HDRUG je prostředí pro vývoj gramatik, syntaktických analyzátorů a generátorů přirozených jazyků. Jeho autorem je Gertjan van Noord z univerzity v holandském Groeningenu. Je implementován v SICStus Prologu verze 3 s využitím vestavěné Tcl/Tk knihovny. Při jeho návrhu byl hlavní důraz kladen na rozšiřitelnost a flexiblitu. Systém tvoří malé jádro a rozsáhlá knihovna pomocných relací. Hdrug rozšiřuje daný systém pro zpracování přirozeného jazyka o příkazový interpret, grafické uživatelské rozhraní a nástroje pro vizualizaci datových struktur. Aplikace, které používají Hdrug typicky přidávají nové rysy nad funkcionalitu poskytovanou systémem. Snadnou rozšiřitelnost umožňuje použití skriptovacího jazyka Tcl/Tk a dostupnost knihoven. Prostřednictvím globálních nastavení a záchytných predikátů (hook predicates) lze pružně měnit různé aspekty systému a přizpůsobit systém potřebám určité aplikace. Systém byl používán k vývoji gramatik a syntaktických analyzátorů pro praktické použití, ale také jako nástroj pro experimentování s novými teoretickými pojmy a alternativními strategiemi zpracování jazyka a jako nástroj pro dávkové zpracování rozsáhlých textových korpusů. Aplikace Distribuce obsahuje několik aplikací různých gramatických formalismů: formalismus ALE, DCG verzi gramatiky která je součástí nástrojů Alvey NL, CFG malou bezkontextovou gramatiku, kategoriální gramatiku založenou na omezeních, malou TAG gramatiku, HPSG gramatiku a další. Uživatelské rozhraní Komunikace se systémem pomocí příkazové řádky probíhá buď prostřednictvím rozšiřitelného interpretu příkazů (pracuje s historií a mechanismem zkratek) nebo přímo zadáváním prologovských dotazů v interpretu Prologu. Současně s jednou z těchto možností lze používat grafické uživatelské rozhraní. Všechna tato rozhraní jsou rozšiřitelná. Do příkazového interpretu lze přidávat nové příkazy a s nimi asociované akce pomocí přímočaré DCG syntaxe. Grafické rozhraní lze rozšiřovat přidáváním Tcl/Tk skriptů a Prologovského kódu. 13

20 Nástroje pro vizualizaci datových struktur Systém umožňuje graficky zobrazit používané datové struktury s výstupem do ASCII grafiky, grafického okna (Tk Canvas), Latexu, a formátů CLiG a DOT. Mezi podporované datové struktury patří stromy syntaktické stromy, derivační stromy, stromy reprezentující typové a lexikální hierarchie. Jednoduchými deklaracemi je možné do systému doplňovat nové definice stromů. Definovat lze akce, které mají být provedeny po kliknutí na uzel stromu. Důležitou podporovanou datovou strukturou jsou příznakové struktury (feature structures). Struktury lze expandovat do různých úrovní kliknutím na příslušné atributy struktur a lze je asociovat s gramatickými pravidly, lexikálními položkami, definicemi maker a výsledky syntaktické analýzy. Kombinací obou výše uvedených prvků jsou stromy s příznakovými strukturami jako uzly. Dále je podporováno zobrazení grafů pro reprezentaci výsledků analýzy, tabulek, klauzulí Prologu a DC klauzulí s příznakovými strukturami jako argumenty, které mohou být použity k vizualizaci definic maker, lexikálních položek a gramatických pravidel s možnými omezeními. Santyktické analyzátory a generátory Hdrug obsahuje rozhraní pro definici syntaktických analyzátorů a generátorů, přičemž současně může být definováno více analyzátorů. Jejich výsledky lze srovnávat s ohledem na rychlost a spotřebu paměti při analýze určité věty nebo předdefinovaných množin testovacích vět. Systém umožňuje také definovat akce, které mají být automaticky provedeny před zahájením analýzy, po vytvoření každého výsledku analýzy nebo po ukončení analýzy (generování). Knihovny Prostřednictvím knihoven je dostupná většina nástrojů pro vizualizaci, obsahují mechanismy pro překlad mezi prologovskými termy a příznakovými strukturami. K dispozici je knihovna pro vytváření prologovských termů umožňujících implementaci omezené formy disjunkce a negace pomocí unifikace u hodnot příznakových struktur Pleuk Systém Pleuk lze chápat jako prostředí pro vývoj gramatik na dvou úrovních. Jednak zahrnuje nástroje pro vytváření gramatik, ale současně je i systémem pro implementaci různých gramatických formalismů. Je implementován v jazyku Prolog. Tvorba gramatiky v tomto systému tedy předpokládá nejdříve definici a začlenění příslušného gramatického formalismu (založeného na unifikaci a příznakových strukturách) pomocí kódu v jazyce Prolog. V současnosti jsou v rámci distribuce systému k dispozici implementace asi desítky formalismů včetně ALE, DCG, CUF a HPSG. Systém tvoří tři části funkcionální páteř, specializace a uživatelské rozhraní. Funkcionální páteř je svého druhu operační systém pro gramatické formalismy, jejichž syntaxe a sémantika je definována příslušnou specializací. Specializace gramatického formalismu je kolekce prologovských procedur definujících dobře utvořené formule formalismu a jejich interpretaci. Specifikuje formát definic daného formalismu (musí být ve formátu čitelném pro Prolog), způsob transformace z jejich reprezentace v souboru do příslušné vnitřní 14

21 reprezentace systému, způsob transformace z vnitřní reprezentace do formy vhodné pro zobrazení uživateli a také způsoby manipulace s těmito reprezentacemi pro účely analýzy. Specializace také určuje moduly a soubory, do kterých bude gramatika rozdělena. Prostředky pro analýzu, generování a ladění gramatiky jsou vytvářeny vždy zároveň s příslušnou specializací. Je možné definovat predikáty které mají zpracovat výsledky analýzy. Pleuk podporuje také základní testování gramatik na testovacích korpusech frází. Pro sofistikovanější testy je nutné nadefinovat příslušné predikáty. Systém obsahuje grafické uživatelské rozhraní založené na konfigurovatelných nabídkách a oknech, jehož účelem je usnadnit uživateli práci se složitým systémem (např. zobrazení a úpravy různých objektů gramatiky), rozdělit prezentované informace do logických celků a poskytnout vhodný typografický formát výstupů. Grafický výstup ve formátu Postscript lze zobrazit v oknech nebo uložit do souboru. Grafickou prezentaci struktur využívá také ladící prostředek derivation checker, který umožňuje grafickou konstrukci odvození lokálních struktur složených ze základních prvků dané gramatiky a jejich validaci podle příslušné specializace. Jeho chování lze modifikovat pro potřeby určité specializace. Chování systému lze do značné míry ovlivňovat pomocí nastavení globálních proměnných. Pleuk byl vytvořen skupinou LTG (Language Technology Group) v Edinburghu na počátku devadesátých let minulého století ALE - Attribute Logic Engine ALE je systém vytvořený pro implementaci HPSG gramatik (ale umí pracovat i s gramatickým formalismem PATR-II, DCG gramatikami, programy v jazycích Prolog, Prolog-II a LOGIN), napsaný v jayzce Prolog na Carnegie Mellon University. Integruje frázovou syntaktickou analýzu a logické programování s omezeními s typovanými příznakovými strukturami jako termy. Typy jsou uspořádány do hierarchie dědičnosti. Definice typů mohou obsahovat některá omezení aplikovaná na příznakové struktury daného typu. Deskripce příznakových struktur pracují s konjunkcemi a disjunkcemi ale obecná negace deskripcí není podporována. S určitými omezeními lze vytvářet zkratky deskripcí pomocí maker. ALE podporuje lexikální pravidla jako speciální formu unárních pravidel pro příznakové struktury, doplněných o mechanismus pracující s morfologií. Gramatická pravidla reprezentují frázovou strukturu věty (složková gramatika). Gramatiky mohou být prokládány unifikačními kroky s voláním (procedurálních) cílů logického programu (jako u DCG), což umožňuje prokládat syntaktickou analýzu s dalšími součástmi systému. Pro zvýšení efektivity používá systém inkrementální překlad, který umožňuje překládat odděleně hierarchii typů, typová omezení, logiku atributů a hodnot a DC klauzule. DCG programy a gramatiky jsou překládány do prologovských abstraktních strojových instrukcí a ty jsou následně interpretovány emulátorem, který vznikl překladem typových specifikací. Pro analýzu ALE překládá specifikaci gramatiky na bottom-up dynamický chart parser. DC klauzule jsou také přeloženy do Prologu. Za účelem ladění lze provádět různé druhy testů výsledků překladu, prohlížet si úplné specifikace typů, lexikální položky a DC klauzule ve formátu příznakových struktur, hledat nejobecnější struktury splňující dané deskripce. Systém obsahuje i interpret umožňující 15

22 procházet a upravovat strom analýzy. ALE nemá vlastní uživatelské rozhraní, ale existují aplikace ALE pro systémy HDRUG a Pleuk, které jej nabízí Další systémy a dokumentace Ve výše uvedeném popisu systémů jsme vycházeli zejména z následujících zdrojů: ANLT, GDE: [21], [22] ParGram, XLE: [6], [7], [8] LS-GRAM, ALEP: [9], [10], [5] LiLFeS, will: [11] XTAG: [12] LinGO, LKB: [13], [14] ConTroll, XTroll: [15], [5] GATE: [16], [17] PAGE: [18], [5] HDRUG: [19] Pleuk: [20] ALE: [23], [5] Další systémy, se kterými jsme se seznámili jsou: TRALE, TFS, CUF, FTAG, ProFIT, CL-ONE, YAP, KPML, GTU, FGW, Malaga a MCGTOOLS. Informace o nich se nachází v elektronické příloze práce. Jde o dokumenty ve formátu HTML, obsahující také odkazy na domovské WWW stránky systémů, odkazy na online dokumentaci na Internetu a na elektronickou dokumentaci shromážděnou na přiloženém CD. 1.2 Shrnutí Gramatický formalismus a implementované datové struktury Naprostá většina zkoumaných systémů používá pro modelování jazykových objektů příznakové struktury (feature structures), které se staly standartní strukturou pro kódování gramatických kategorií základních i vyšších syntaktických jednotek prostřednitvím dvojic atribut-hodnota, uložených v příznakové struktuře. Tyto struktury jsou typované (typed feature structures), jsou uspořádané do typových systémů, což umožňuje využít mechanismu dědičnosti (např. dědičnosti omezení) a inference na jejím základě. Definice typového systému je součástí definice gramatiky. Pro práci s typy a deskripcemi příznakových struktur jsou v systémech implementovány operace výrokové logiky (disjunkce, konjunkce, negace). Přiřazení hodnot atributům příznakových struktur, jejich sdílení a kompatibilita jsou řešeny pomocí mechanismu unifikace. Systémy využívají implementace unifikace v programovacích jazycích Prolog, resp. Lisp a jsou napsány jako jejich rozšíření. Systémy jsou založeny na dvou základních procedurálních modelech, které v různé míře kombinují: frázových pravidlech (phrase structure rules) a omezeních (constraints). 16

23 Frázová pravidla (bezkontextová) jsou výpočetně efektivnější, zatímco omezení, jejichž řešení je výpočetně náročné, umožňují přímočařejší implementaci gramatik založených na omezeních, mezi něž patří například nejvyužívanější HPSG. Způsob překladu gramatiky z gramatického formalismu do podoby vstupu pro syntaktický analyzátor pořadí řešení frázových pravidel a omezení mohou výrazně ovlivnit výkonnost systému. Systémy také umožňují zvýšit přehlednost, konzistenci a systematičnost zápisu gramatiky pomocí maker a šablon. Makra mohou sloužit buď jen jako zkratky za složitější syntaktické konstrukce nebo mohou sloužit k automatickému generování množiny syntaktických konstrukcí (např. pravidel) na základě svých parametrů. Makra a šablony jsou zpracovány již během překladu gramatiky. Speciální syntaktické konstrukce mohou být poskytovány také pro definici lexikálních položek a lexikálních pravidel. Gramatické formalismy používané ve zkoumaných systémech se liší možností implementace různých gramatických teorií. U některých je co nejpřímější zápis gramatiky určitého teoretického formalismu jedním z cílů, jde například o systémy Malaga, Grok, MCG- TOOLS, XLE, FGW, XTAG a GDE, implementující formalismy Left-Associative Grammar (LAG), Combinatory Categorial Grammar (CCG), Lambek Grammar (druh CCG), Lexical Functional Grammar (LFG), Functional Grammar (FG), Tree Adjoining Grammar (TAG) a GPSG. Největší počet systémů je orientován na implementaci formalismu Head-Driven Phrase Structure Grammar (HPSG), patří mezi ně ALE, ConTroll, LKB, LiLFeS. Notace gramatiky dalších systémů TFS, ProFIT, CUF, PAGE, YAP a ALEP není primárně orientovaná na formalismus nějaké teorie. Co se vázanosti na určitý gramatický formalismus týká, zásadně odlišné jsou systémy Pleuk a HDRUG, které byly vytvořeny jako univerzální, schopné začlenit pomocí kódu v Prologu určitý gramatický formalismus a poskytnout pro něj vlastní uživatelské rozhraní, příkazový interpret a nástroje pro zobrazování struktur Překlad metagramatiky Při tvorbě rozsáhlých gramatik je žádoucí, aby lokální změny v definici gramatiky nevynucovaly při překladu gramatiky (metagramatiky) z lingvistického formalismu do vnitřní reprezentace systému, resp. do formy zpracovatelné syntaktickým analytátorem (např. DC klauzule) znovupřeložení celé gramatiky. Toho cíle je dosahováno pomocí inkrementálního překladu postupného, odděleného překladu různých typů definic gramatiky. Některé systémy umožňují ovlivňovat pořadí vyhodnocování cílů nebo omezení nebo expanzi typů. Jde například o přednostní vyhodnocení deterministických cílů nebo odložení vyhodnocení cíle až do doby kdy jsou dostatečně specifikovány jeho argumenty. Takto lze významně ovlivnit efektivitu zpracování gramatiky. Děje se tak buď prostřednictvím speciálních deklarací cílů, které tvoří procedurální část definice gramatiky, nebo je někdy možné ovlivňovat výběr cílů ke splnění v rámci ladění gramatiky (systém ConTroll) Zobrazení datových struktur Přehledná prezentace datových struktur používaných v systémech pro vývoj gramatik může výrazně usnadnit práci. Jednak se jedná o struktury často složité či rozsáhlé, a jednak množství těchto struktur bývá velké. 17

24 Mezi zobrazované datové struktury patří příznakové struktury (AVM matice, atributvalue matrix), derivační stromy, výsledky analýzy a výsledky testů a statistik. Výstupem je buď soubor nejčastěji ve formátu Latex nebo Postscript, nebo výstup na obrazovku, kdy lze interaktivně expandovat a skrývat části struktur, prohledávat je, a použít grafické zobrazení pro výběr určitých struktur nebo jejich částí pro další práci s nimi. Grafické zobrazení struktur je také využíváno ve spolupráci s nástroji pro ladění a trasování. Trasování s možností volby směru analýzy je umožněno v systémach založených na interpretovaných programovacích systémech, zejména Prologu. Pokud systém neobsahuje přímo grafické rozhraní, nabízí často alespoň prostředky (např. predikáty) pro tisk struktur v čitelné textové formě. Některé systémy obsahují mód umožňující začlenit je do prostředí Emacs. Další možností je použít grafické rozhraní některého z univerzálních prostředí jako je HDRUG nebo Pleuk a prostřednictvím kódu v Prologu do něj systém začlenit (např. k začlenění systému ALE do prostředí HDRUG bylo potřeba 450 řádek kódu v Prologu a 250 řádek v Tcl/Tk) Ovládání systému Systémy mohou být ovládány pomocí grafického uživatelského rozhraní, příkazového interpretu nebo interpretu systému (např. Prolog), jehož jsou nadstavbou, přičemž někdy je možné využívat více možností současně. Opět lze využít po začlenění systému do univerzálních prostředí HDRUG a Pleuk grafická rozhraní těchto prostředí Modulární zpracování gramatiky Definice gramatiky může být rozdělena do několika souborů a to jednak za účelem systémového oddělení významově souvisejících součástí definice gramatiky a jednak za účelem prostého rozdělení gramatiky na menší části. K udržení konzistence a integrity jsou používány konfigurační soubory nebo je využíváno existujících nástrojů jako je make nebo CVS. 1.3 Závěry Důsledky pro návrh našeho systému vyplývající ze získaných poznatků popsaných v této kapitole a z charakteristik nástrojů pro vývoj gramatik používaných v laboratoři NLP popsaných v následující kapitole uvedeme v části 3.1 Celkový přehled Systému GDW na straně

25 Kapitola 2 Vývoj gramatik v laboratoři NLP V této části popíšeme systém pro syntaktickou analýzu synt vyvíjený v laboratoři NLP, který tvoří základ námi vytvářeného systému GDW. Omezíme se pouze na popis rysů, které byly podstatné pro návrh a vývoj systému GDW. Zavedeme a objasníme také některé pojmy, se kterými budeme pracovat v následující části při vlastním popisu vytvořeného systému. Nejdříve bude popsán použitý gramatický formalismus a poté syntaktický analyzátor synt. 2.1 Gramatika V systému synt se pracuje se třemi formami vstupní gramatiky. Tvůrce gramatiky pracuje s metagramatikou G1, z metagramatiky je automaticky generována garamatika ve formě G2, a z té může být generována gramatika ve formě G3. Analyzátor synt používá jako vstup formu G2 nebo G3. Forma G2 je bezkontextová gramatika, doplněná o možnost navázat na pravidla kontextové akce, mezi které patří např. testy zajišťující gramatickou shodu větných jednotek. Tyto testy jsou jako kontextové akce aplikovány na chart analýzy, vytvořený na základě bezkontextových pravidel. Forma G3 je generovaná z formy G2 a jejím účelem je začlenění některých kontextových omezení (testů na gramatickou shodu) do gramatiky prostřednictvím pravidel, namísto pomocí výše zmíněných kontextových akcí (expanze omezení do pravidel). Metagramatika používá kromě bezkontextových pravidel a kontextových akcí další konstrukty vyšší úrovně, které umožňují vyjádřit a stručně zadat některé obecné jazykové jevy, jako například omezení na pořádek slov ve větě. Tyto konstrukty jsou potom v generované gramatice G2 vyjádřeny pomocí pravidel. Detailnější informace o použitém gramatickém formalismu lze najít v [1]. Metagramatika češtiny vytvářená v laboratoři NLP obsahuje v současné podobě kolem 350 pravidel a konstruktů. Z nich generované formy G2 a G3 potom obsahují 3102, resp pravidel. Generování forem G2 a G3 je v systému synt prováděno pomocí skriptů meta.pl a rozgen.pl. Pro možný cyklus ladění gramatiky je třeba vzít v úvahu, že jde o časově poměrně náročný proces. 1 1 u výše uvedené gramatiky jde přibližně o 20 sekund 19

26 Pravidla, resp. některé konstrukty metagramatiky, mohou mít v gramatice přiřazenu úroveň, která může nabývat hodnot celých čísel od 0 do 99. Pro každou analýzu lze potom pomocí parametrů analyzátoru nastavit nejvyšší úrověň, kterou mohou mít pravidla použitá pro analýzu. 2.2 Analyzátor synt Synt je syntaktický analyzátor typu head-driven chart parser analyzuje věty zdola nahoru a výsledky analýzy ukládá do datové struktury chart. Více informací o principu fungování chart parseru lze nalézt v [2] Zavedení některých pomocných pojmů Nejdříve zavedeme několik pomocných pojmů, které jednak poslouží ke srozumitelnější prezentaci použitých myšlenek a postupů, a mimo to budou také používány při samotné práci uživatele s vytvářeným systémem. Základními jednotkami analyzované věty, identifikovanými analyzátorem, jsou tokeny. Odpovídají terminálním symbolům, které se nacházejí v listech generovaných stromů analýzy. Kromě nich se v listech mohou nacházet také ɛ-terminály, protože gramatika pro analyzátor může obsahovat ɛ-pravidla. Pro každý token věty nejdříve definujeme jeho levou a pravou pozici, které budou vyjadřovat pozici tokenu ve větě. Pravá pozice tokenu je číslo udávající pořadí tokenu ve větě. Levá pozice tokenu je číslo o jedna menší než pravá pozice tokenu. Dále zavedeme pojem rozsah, jímž budeme vyjadřovat vztah k nějaké části analyzované věty. Rozsah definujeme jako dvojici levé pozice l a pravé pozice r, pro které platí l r. Rozsah věty l r definujeme jako souvislou část věty začínající tokenem s levou pozicí l a ukončenou tokenem s pravou pozicí r, pokud l < r, část věty ležící mezi tokenem s pravou pozicí r a tokenem s levou pozicí r (tedy bezprostředně následujícím tokenem), pokud l = r. V tomto případě se tedy jedná o prázdné slovo (ɛ-terminál) na určité pozici ve větě. Mějme dán nějaký strom T analýzy rozsahu věty l r. Potom l r nazveme rozsahem stromu analýzy T. Mějme dán nějaký strom T analýzy rozsahu věty l r a nějaký jeho uzel u. Rozsahem uzlu u nazveme rozsah úplného podstromu stromu T, jehož kořenem je uzel u. Uvedeme příklad. Na obrázku 2.1 na straně?? je syntaktický strom věty Řekl, že letadlo spadlo na pole za lesem., získaný jako výsledek analýzy systémem GDW. Pod listy stromu jsou čísla udávající pozice tokenů (listů stromu) vlevo od tokenu je jeho levá pozice, vpravo od tokenu je pravá pozice. Například token spadlo má levou pozici 4 a pravou pozici 5. Rozsah věty 3 9 je vedlejší věta letadlo spadlo na pole za lesem. Rozsah toho z uzlů s neterminálem clause, který má menší hloubku, stejně jako podstromu, jehož je kořenem, je také 3 9. Rozsah 0 1 mají čtyři uzly, obsahující postupně neterminály 20

27 ##start## start ss clause intr inter_list inter_list intr inter_list inter_listnl inter interbez nnp nnpnl inter_listnl inter interbez pp ppnl pn nnp nnpnl inter_listnl inter interbez pp ppnl pn nnp nnpnl ss conj np prep np prep np ends clause conjg conjc npnl prepnl npnl prepnl npnl ends intr VL intr ',' PROTOZE N VL PREP N PREP N '.' Řekl, že letadlo spadlo na pole za lesem Obrázek 2.1: Syntaktický strom. ss a clause, preterminál VL, a terminál Řekl, stejně jako podstromy, jichž jsou tyto uzly kořeny Chart analýzy Chart analýzy je datová struktura, ve které je uložen výsledek analýzy věty. Oproti reprezentaci výsledků analýzy jednotlivými výslednými syntaktickými stromy, která je čitelná pro uživatele, ale s rostoucí nejednoznačností analýzy roste její velikost exponenciálně, umožňuje uložení výsledků analýzy (tedy i výsledných syntaktických stromů), které je na nejednoznačnosti analýzy závislé pouze lineárně. Kompaktnost a úspornost je však zaplacena nečitelností pro uživatele. Umožnit uživateli číst chart jako výsledek analýzy bylo jedním z cílů modulu ChartView vytvářeného systému. Podrobnější informace o vytváření chartu v průběhu analýzy lze nalézt v [2], my se zaměříme především na popis vztahu mezi chartem a generovanými syntaktickými stromy, který je základem pro návrh a implementaci funkcí modulu ChartView. Chart je množina hran propojených vazbami. Každá hrana je charakterizována následující atributy: 2 rozsah hrany 2 tyto informace dává na výstup pro každou hranu chartu analyzátor synt 21

28 pravidlo hrany uzavřená část pravé strany pravidla hrany jedna nebo více dvojic rodičovských hran Hrany, které mají uzavřenou celou pravou stranu pravidla budeme nazývat uzavřené hrany, ostatní hrany budeme nazývat otevřené hrany. Uzavřená hrana h s rozsahem l r odpovídá úspěšné analýze části věty odpovídající rozsahu l r. To znamená, že z chartu lze vygenerovat pro tuto část věty alespoň jeden syntaktický strom analýzy. Strom má v kořeni neterminál z levé strany pravidla hrany a přímými následníky kořene jsou uzly obsahující neterminály z pravé strany pravidla. Možné zbývající části stromu jsou určeny všemi hranami, do kterých se lze dostat z hrany h přes rodičovské hrany. Rodičovské hrany jsou hrany, z nichž byla při analýze odvozena hrana h. Každá hrana v chartu je při analýze vytvořena na základě jedné nebo dvou rodičovských hran. Budeme je nazývat dvojice rodičovských hran a to i v případě, že hrana byla vytvořena pouze pomocí jedné hrany. 3 Některé hrany mohou být vytvořeny alternativně na základě více různých dvojic takové hrany budeme nazývat víceznačné hrany, hrany s pouze jedinou dvojicí rodičovských hran budeme nazývat jednoznačné hrany Na chart je možné se dívat jako na graf, jehož uzly reprezentují hrany chartu a jehož hrany odpovídají rodičovským vazbám v chartu. Tento graf budeme nazývat graf chartu. 4 Graf chartu je orientovaný acyklický graf. Hrany v jeho listech odpovídají analýzám jednotlivých tokenů věty nebo ɛ-terminálů ležících mezi tokeny. Když se nyní vrátíme k výše zmíněné hraně h, můžeme říct, že všechny syntaktické stromy analýzy rozsahu věty l r, které mají v kořeni neterminál z levé strany pravidla hrany h, přičemž přímými následníky tohoto kořene jsou uzly obsahující právě neterminály z pravé strany pravidla hrany h, jsou dány hranami chartu odpovídajícími podgrafu grafu chartu tvořenému všemi následníky hrany h v grafu chartu. V takto definovaném grafu chartu je třeba dívat se na větvení v grafu strukturovaně. Přímými následníky hrany h v grafu chartu jsou její rodičovské hrany. Zatímco jednotlivé dvojice rodičovských hran reprezentují alternativy mezi různými analýzami (mezi různými syntaktickými stromy), daná dvojice rodičovských hran reprezentuje větvení v syntaktickém stromu. Větvení v syntaktickém stromu je totiž v grafu chartu reprezentováno několika souvislými binárními větveními. Při generování nějakého stromu analýzy z hrany h 5 postupujeme v grafu chartu z hrany h směrem k listům, přičemž v každé nejednoznačné hraně zvolíme právě jednu dvojici rodičovských hran. Takto je postupně v grafu chartu vybrán binární strom reprezentující jeden strom analýzy. Otevřené hrany v chartu reprezentují buď hypotézy, které se nepodařilo uzavřít a nejsou tedy součástí žádné částečné analýzy v tom případě nemají v grafu chartu předchůdce reprezentujícího uzavřenou hranu, nebo mohou reprezentovat větvení stromu v tom případě mají v grafu chartu předchůdce reprezentujícího uzavřenou hranu. Rozsah otevřené 3 motivace je čistě praktická, důvodem je pouze usnadnění vyjadřování, slovo dvojice je použito na základě formátu chartu na výstupu analyzátoru synt 4 pokud to nebude na újmu srozumitelnosti, budeme někdy o uzlu grafu chartu reprezentujícím hranu chartu h mluvit pouze jako o hraně chartu h 5 jde o strom částečné analýzy odpovídající hraně h 22

29 hrany reprezentuje část věty, pro kterou byla analýzou nalezena redukce na uzavřenou část pravidla této hrany. Někdy budeme v souvislosti s grafem chartu mluvit o vyšších nebo nižších hranách, případně o směru pohybu v chartu nahoru nebo dolů. Význam těchto výrazů bude odpovídat topologickému uspořádání grafu chartu, ve kterém předchůdci jsou umístěni nad svými následníky Generované stromy a limity Způsob uložení výsledných stromů (částečné) analýzy v chartu byl popsán v předchozí části. Analyzátor synt umožňuje generovat z chartu na výstup stromy úplné analýzy věty. Na generované stromy lze klást dva druhy omezení. Prvním z nich jsou kontextová omezení definovaná v gramatice. Druhý typ představují omezení zadávaná spolu s větou jako vstup analýzy, která se nazývají limity. Limity mohou být obecné nebo s rozsahem, pozitivní nebo negativní. Obecný limit se vztahuje na celý strom analýzy. Je zadán pomocí neterminálu. Pozitivní obecný limit je splněn, pokud se v libovolném uzlu generovaného stromu vyskytuje zadaný neterminál. Negativní obecný limit je splněn, pokud se naopak zadaný neterminál nevyskytuje v žádném uzlu generovaného stromu. Limit s rozsahem umožňuje klást omezení na částečné analýzy. Je zadán nějakým rozsahem l r a neterminálem. Pozitivní limit s rozsahem je splněn, pokud se zadaný neterminál vyskytuje v nějakém podstromu generovaného stromu s rozsahem l r. Negativní limit s rozsahem je splněn, pokud se zadaný neterminál nevyskytuje v žádném podstromu generovaného stromu s rozsahem l r. Například syntaktický strom na obrázku 2.1 na straně 21 splňuje pozitivní limity s rozsahem 0-1:clause, 0-1:VL, negativní limit s rozsahem -6-9:np, a naopak nesplňuje pozitivní limit s rozsahem 6-9:np, negativní limit s rozsahem -5-7:pp. Pro věty z korpusu PDTB 1.0 lze automaticky generovat limity pomocí programu treesget, který je součástí systému synt. Korpus PDTB Prague Dependency Tree- Bank je korpus obsahující závislostní stromy pro přibližně českých vět. Generované stromy lze dále upravovat pomocí skriptu beautifier.pl. Jde zejména o vypouštění některých uzlů obsahujících neterminály, které jsou spíše technické povahy a jejichž primárním cílem není nést lingvistickou informaci o části věty odpovídající rozsahu uzlu (podrobněji viz [1, strana 29]). 6 takové zobrazení chartu přirozeně odpovídá zobrazení generovaných stromů 23

30 Kapitola 3 Systém GDW V jednotlivých částech této kapitoly popíšeme vytvořený systém GDW Grammar Development Workbench a jeho moduly. Budeme se soustředit na popis nástrojů poskytovaných jednotlivými moduly, postupů a funkcí použitých k jejich implementaci, vybraných použitých algoritmů a implementačních detailů a také příkladů praktického použití vytvořených nástrojů a spolupráce jednotlivých modulů. Na základě prozkoumání dvacítky existujících systémů jsme dospěli k závěru, že implementujeme zcela vlastní systém. Nepoužitelnost existujících systémů je pro nás dána především jejich svázaností s určitým gramatickým formalismem. Univerzálnější systémy jako HDRUG a Pleuk by umožňovaly začlenění existujících komponent laboratoře NLP, ale za příliš vysokou cenu (pracnost implementace) ve srovnání s tím, co mohou samy o sobě poskytnout. Systémy jako GATE jsou pro naše účely až příliš široce navržené. Zkoumání zmíněných GDE a nástrojů laboratoře NLP (systému synt metagramatika, gramatický formalismus, analyzátor, generátor gramatiky, generátor limitů, postprocesor generovaných stromů) vyústilo ve formulování funkčních požadavků na systém: (1) grafické uživatelské rozhraní pro systém synt (analyzátor a další jeho komponenty) (2) nástroje pro práci se vstupy analyzátoru: (2a) gramatikou (překlad metagramatiky, zobrazování), (2b) větami (práce se soubory vět, úpravy, různé formáty vět), (2c) limity (generování, zadávání, testování), (3) nástroje pro práci (vizualizace, prohledávání) s výstupy analyzátoru: (3a) výsledky analýzy, (3b) chartem analýzy, (3c) syntaktickými stromy, (4) prostředí propojující výše uvedené nástroje, umožňující provádění celého cyklu vývoje gramatiky 24

31 3.1 Celkový přehled systému GDW Architektura systému Systém GDW je tvořen čtyřmi moduly. V jejich výčtu, který následuje, uvádíme odkazy na funkce ze seznamu funkčních požedavků uvedených v předchozím odstavci, které jednotlivé moduly plní. Gsynt (4), (1), (2b), (2c), (3a) TreeView (2c), (3c) ChartView (2c), (3b) GrammarView (2a) Podrobnější specifikaci cílů a funkcí jednotlivých modulů uvádíme dále na začátcích částí věnovaných jednotlivým modulům. Jednotné prostředí pro jednotlivé moduly vytváří modul Gsynt, ale moduly mohou být použity také samostatně, např. TreeView při práci se syntaktickými stromy uloženými v souborech. Na obrázku 3.1 je model systému GDW. editor phrases source ChartView Gsynt metagrammar Grammar View TreeView editor meta.pl beautifier.pl G2 phrases dumps limits synt trees grozgen.pl treesget charts G3 corpus Obrázek 3.1: Model systému GDW Šedou barvou jsou zobrazeny vlastní komponenty systému GDW, tečkovaným obrysem externí textový editor a ostatní komponenty jsou součástí systému synt. 25

32 3.1.2 Vývoj systému Některé návrhy řešení a implementace jednotlivých funkcí modulů byly vytvářeny v průběhu vývoje samotného systému. Nejdříve jsme vytvořili základní nástroje pro práci se strukturami jako jsou syntaktické stromy a zejména chart a teprve s jejich využitím jsme mohli tyto struktury důkladněji zkoumat a navrhovat další funkce pro efektivnější práci s nimi. V průběhu vývoje se při získávání zkušeností s prací se systémem postupně vynořovaly nové možnosti využití implementovaných funkcí a požadavky na nové funkce Implementace systému Systém je implementován v jazycích Tcl/Tk a C. 1 Jayzk Tcl byl zvolen z několika důvodů: umožňuje pohodlný a rychlý vývoj grafických uživatelských rozhraní, je vhodný pro propojování různých částí systému a využívání existujících programů (systém synt), práci s jejich vstupy a výstupy, návaznost na předchozí vývoj výstup stromů z analyzátoru synt odpovídá seznamové notaci jazyka Tcl, snadné vytváření rozšíření jazyka v jazyce C použitého pro implementaci časově kritických částí systému, způsob vývoje systému jazyk je vhodný pro rychlou implementaci a testování změn, zejména v grafickém prostředí, pomocí komunikace s interpretem, značná nezávislost na platformě užitečná pro případné použití částí systému nezávislých na systému synt Pomocí jazyka Tcl byly implementovány zejména činnosti systému probíhající prostřednictvím GUI interaktivně ve spolupráci s uživatelem, tedy části u nichž nedochází ke zpracování velkých objemů dat a tedy nejsou časově kritické (např. zobrazování, konstrukce stromů). Části systému zodpovědné za zpracování velkých množství dat, např. porovnávání a selekci velkých množství syntaktických stromů, byly implementovány, s ohledem na maximální rychlost zpracování, v jazyce C jako rozšíření jazyka Tcl (Tcl extensions). Funkce byly zabaleny do dynamické sdílené knihovny. Blíže je ímplementace popsána v částech věnovaných jednotlivým modulům. Systém GDW pracuje, stejně jako systém synt nad operačním systémem Unix. Zmíníme se zde proto o možnostech současné práce více uživatelů se systémem. Jednotlivé procesy systému GDW pracují se svými daty ve vlastních dočasných (existujících pro dobu trvání procesu) podadresářích hlavního adresáře sytému společného pro všechny procesy (resp. uživatele) Příklady použití systému V průběhu vývoje systému GDW jsme se setkali následujícími možnými typickými příklady použití. 1 některé části vznikly úpravou existujících prvků systému synt v jayzce Perl 2 k tomu bylo nutné provést drobné úpravy způsobu práce systému synt se vstupy a výstupy 26

33 V případě neúspěšné analýzy, kdy nebyla v chartu nalezena žádná úspěšná hrana pro celou větu, je možné k zobrazení částečných výsledků analýzy prostřednictvím chartu použít modul ChartView. V něm lze hledat místo selhání analýzy, případně nadějné neuzavřené hrany a chybějící pravidla gramatiky (ve spolupráci s modulem GrammarView) za účelem modifikací gramatiky. Pokud byla nalezena úspěšná hrana, ale selhaly kontektové akce, lze si nechat v modulu Gsynt přehedně zobrazit záznam o aplikaci kontextových akcí na chart, získaný z výstupu analyzátoru (dump), a jednotlivé hrany chartu z tohoto záznamu nechat zobrazovat v modulu ChartView a dále s nimi pracovat. Pokud omezením zadanými vstupními limity nevyhovuje žádný strom generovatelný z chartu analýzy, lze tyto limity testovat v modulu ChartView a zkoumat, které z limitů znemožňují generování stromů, případně jaké stromy by bylo možné z chartu generovat bez omezení limity. Modul TreeView umožňuje efektivní práci se syntaktickými stromy analýzy v množství řádu desetitisíců. V případě příliš velkého množství generovatelných stromů lze pracovat s chartem v modulu ChartView, kde je možné buď hledaný strom přímo zkonstruovat pomocí hran, nebo jen navrhnout vhodné limity, které umnožní po reanalýze generovat pouze přijatelné množství stromů pro práci v modulu TreeView. V modulu TreeView lze potom např. vyhledat správné stromy analýzy věty pro banku stromů. Částečné analýzy lze zkoumat v modulu TreeView zkoumáním vybraných částí stromů nebo v modulu ChartView zkoumáním hran chartu ležících uvnitř rozsahu odpovídajícím částečné analýze. Další možností je zadat vybraný úsek věty jako vstup pro novou analýzu, a pomocí výše popsaných postupů zkoumat získané výsledky (stromy, resp. chart). Detaily a některé další postupy jsou uvedeny v kapitolách zabývajících se jednotlivými moduly systému. 3.2 Modul Gsynt Modul Gsynt tvoří grafické uživatelské rozhraní pro syntaktický analyzátor synt. Umožňuje dávkové zpracování vět a ve spoluprácí s moduly TreeView, ChartView a Grammar- View vytváří prostředí pro práci se vstupy a výstupy analyzátoru 3 v rámci cyklu vývoje gramatiky. Hlavní okno modulu je na obrázku 3.2 na straně Funkce modulu Gsynt Úkolem modulu je umožnit práci s analyzátorem synt pomocí prostředí, ve kterém lze systematicky pracovat se soubory vět a jejich výslednými analýzami, což zahrnuje následující funkce: nastavování parametrů analyzátoru, dávkové spouštění analyzátoru zobrazování výsledků analýzy práce se seznamy vět výběry, dávkové zpracování, ukládání práce se vstupními formáty vět generování, převod, úpravy, ukládání 3 analyzovanými větami, pravidly gramatiky, výsledky analýzy, chartem, syntaktickými stromy a limity 27

34 Obrázek 3.2: Hlavní okno modulu Gsynt práce s limity generování, editování Seznamy vět Věty, se kterými uživatel v modulu GSynt pracuje, jsou uloženy v seznamech vět. 4 Seznam vět může být vytvořen z jednoho z následujících zdrojů: jazykový korpus dostupný prostřednictvím systému synt, textový soubor s větami v prostém textovém formátu plain, textový soubor s větami ve formátu brief, věta zadaná v grafickém rozhraní modulu Gsynt. Věty z korpusu lze zadat jako interval vět pomocí pořadí první a poslední věty v korpusu nebo jako výběr libovolných vět zadaných čísly udávajícími pořadí vět v korpusu. Tento výběr je zadán pomocí textového souboru, obsahujícího pořadová čísla vybraných 4 viz vyšší podokno hlavního okna modulu na obrázku 3.2 na straně 28 28

35 vět. Výběry vět vytvořené v seznamech vět modulu Gsynt lze do těchto souborů ukládat nebo přidávat. V seznamu vět jsou pro každou větu uloženy následující informace: číslo věty, udávající pořadí věty ve zdroji seznamu, zdrojová věta ve formátu plain, aktuální věta ve formátu plain, zdrojová věta ve formátu brief, aktuální věta ve formátu brief, nastavení vstupních a výstupních parametrů aktuální, tedy poslední analýzy věty, limity pro analýzu věty, zdroj limitů, výsledky analýzy, výstup analyzátoru obsahující podrobnější výsledky analýzy (dump analýzy), chart analýzy, generované stromy. V modulu lze pracovat současně s více seznamy vět. Kromě vytvoření seznamu ze zdroje lze nový seznam vytvořit jako duplikát existujícího seznamu nebo je možné otevřít dříve uložený seznam. 5 Jednotlivé věty mohou být ze seznamů vypouštěny. Analýzu vět, stejně jako některé další akce, například generování limitů nebo převádění formátů, lze provádět dávkově pro všechny věty vybrané v seznamu vět Příznaky vět Každá věta ze seznamu vět má přiděleny určité příznaky. Příznak je definovaný řetězec znaků reprezentující nějakou informaci o analýze věty provedené v modulu Gsynt. Kromě pevně definovaných příznaků systému může uživatel větám přiřazovat vlastní příznaky. Tyto uživatelské příznaky jsou využívány zejména jako prostředek k ukládání výběrů vět v seznamu vět a k vytváření kombinovaných výběrů. Uvedeme přehled informací, které jsou reprezentovány předdefinovanými příznaky modulu a prostřednictvím příznaků jsou pro každou větu zobrazeny v seznamu vět. Výsledek analýzy věty, příznak udávající, zda byly pro větu vygenerovány stromy analýzy, příznak udávající, zda byl pro větu vygenerován chart analýzy, příznak udávající, zda byly při analýze věty použity limity, zdroj limitů vytvořených pro větu, maximální povolená úroveň pravidel gramatiky použité pro analýzu věty. Příznaky jsou zobrazovány ve druhém sloupci seznamu vět. 5 seznamy jsou ukládány včetně získaných výsledků analýz, podrobněji viz část Poznámky k implementaci na straně 33 29

36 3.2.4 Výběr vět Některé akce modulu Gsynt (např. analýzu vět, generování limitů,... ) lze provádět hromadně pro vybrané věty ze seznamu. Výběr vět lze provést pro jednotlivé věty označením v seznamu nebo lze vybírat věty na základě různých kritérií. Stejně jako v modulech ChartView a TreeView lze buď přidávat k dosavadnímu výběru všechny věty splňující zvolené kritérium, nebo pomocí kritéria filtrovat existující výběr. Možná kritéria výběru jsou: číslo věty leží v zadaném intervalu, počet stromů analýzy pro větu leží v zadaném intervalu, věta má přiřazen zadaný příznak. Prostřednictvím posledního kritéria máme k dispozici celý soubor kritérií, který je dán předdefinovanými příznaky systému. 6 Stejně jako v modulu TreeView lze použít uživatelem definované příznaky k ukládání výběrů pro pozdější použití nebo kombinaci s jinými výběry. Příznak lze jako kritérium výběru zadat buď přímo řetězcem příznaku, nebo pomocí vzorku zadaného buď jako regulární výtaz v syntaxi jazyka Tcl, nebo jako vzorek typu glob jazyka Tcl. Použitím vzorků je vlastně dána další možnost pro provádění operací s výběry. Protože k větám korpusu nemá uživatel přímý přístup, lze v modulu Gsynt pracovat s výběry vět z korpusu, reprezentovanými jako textové soubory obsahující pořadová čísla (indexy) vět v korpusu. 7 Výběr vět z korpusu odpovídající výběru v seznam vět lze uložit do výběrového souboru nebo přidat k existujícímu výběrovému souboru. Výběrové soubry jsou používány k zadání vybraných vět z korpusu jako zdroje pro vytváření seznamu vět Zobrazování informací o analýze věty Informace o analýze věty, vstupy a výstupy analýzy jsou zobrazovány v těchto prostředích: seznam vět v modulu Gsynt, textový prohlížeč modulu Gsynt, okna modulu ChartView slouží k zobrazování chartů analýzy a limitů a další práci s nimi, okna modulu TreeView slouží k zobrazování generovaných stromů a limitů a další práci s nimi, modul GrammarView pro zobrazování vstupní gramatiky. V seznamu vět okna modulu Gsynt jsou v jednom řádku pro danou větu zobrazeny: číslo věty, aktuální věta ve formátu plain, příznaky věty 8 a počty generovaných stromů. V textovém prohlížeči modulu GSynt mohou být pro jednotlivé věty zobrazeny následující informace: zdrojová nebo aktuální podoba věty ve formátu plain nebo brief, 6 významy předdefinovaných příznaků jsou uvedeny v části Příznaky vět na straně 29 7 dále je nazýváme výběrové soubory 8 v části Příznaky vět na straně 29 jsou popsány informace reprezentované jednotlivými příznaky 30

37 limity pro analýzu věty spolu s pozicemi vyznačenými ve větě, formátovaný výstup a nalyzátoru s výsledky analýzy (dump). Některé informace jsou v textovém okně pro lepší čitelnost automaticky formátovány jde o zobrazení věty ve formátu brief a o dump analýzy. Při zobrazení dumpu analýzy jsou k dispozici funkce pro usnadnění orientace mezi zaznamenanými výsledky kontextových akcí. Tyto funkce slouží k usnadnění pohybu mezi jednolivými výsledky akcí a k zobrazování hran v dumpu, na něž byly akce aplikovány, v modulu ChartView. Výsledky akcí a hrany jsou v textu dumpu barevně vyznačeny Práce s formáty vět Možné vstupní formáty věty pro analýzu používané v modulu Gsynt jsou plain a brief. Formát plain je prostý textový formát. Formát brief obsahuje také informaci o morfologické analýze věty. Při vytváření seznamu vět z libovolného typu zdroje jsou generovány chybějící formáty pro větu tak, aby bylo možno v modulu pracovat s oběma formáty. Pokud je zdroj vět ve formátu plain, formát brief je vygenerován pomocí analyzátoru synt. Pokud je zdroj vět ve formátu brief, formát plain je z něj přímo extrahován. A konečně, je-li zdrojem korpus, jsou oba formáty získány opět pomocí analyzátoru synt. Takto získané formáty jsou pro každou větu uchovány v paměti, aby bylo možné se k nim v případě potřeby vrátit bez nutnosti jejich opětovného načtení, resp. generování ze zdroje, které může být časově náročné. Věty v obou formátech lze totiž v modulu měnit pomocí externího editoru. 9 Při použití formátu brief jako vstupu pro analýzu je tak možné pro reanalýzu věty vhodně upravit výsledek morfologické analýzy, nad kterou bude analyzátor provádět syntaktickou analýzu. V průběhu práce s větou je kdykoli možné pro vybrané věty seznamu generovat z jednoho formátu věty druhý formát nebo uložit věty ve zvoleném formátu do souboru. Do tohoto souboru mohou být navíc vloženy komentáře s čísly vět a identifikací zdroje souboru. Poznamenejme, že generováním formátu brief lze pro libovolnou větu, zadanou jako větu seznamu ve formátu plain, získat její morfologickou analýzu tak, jak ji provádí analyzátor synt Práce s limity Limity jsou omezení kladená na podobu syntaktických stromů (resp. jejich podstromů) generovaných analyzátorem z chartu. V modulu Gsynt je pro každou větu uchovávána množina limitů, se kterou lze pracovat v modulech Gsynt, TreeView a ChartView. Limity pro vybranou větu seznamu mohou být v modulu Gsynt zobrazovány v textovém prohlížeči modulu. Každý soubor limitů obsahuje na začátku komentář s vyznačenými pozicemi ve větě, který usnadňuje orientaci v rozsazích limitů. 10 S tímto komentářem jsou limity také ukládány do souboru. V modulech ChartView a TreeView jsou limity zobrazovány graficky. Limity pro větu mohou být vytvořeny a upravovány několika způsoby: 9 modul volá konfigurací zvolený externí editor jako synchronní dětský proces 10 je ve formátu převzatém z programu treesget systému synt používaného pro automatické generování limitů 31

38 Vytvoření nebo úprava v textovém editoru. Z modulu Gsynt je volán externí textový editor zvolený v konfiguračním souboru. Pokud je vytvářen nový soubor limitů, na začátek souboru je automaticky vložen komentář s vyznačením pozic ve větě. Nahrání uložených limitů z textového souboru. Je možné nahrávat a ukládat limity pro více vět ze seznamu současně z/do vybraného adresáře. Limity pro jednotlivé věty jsou v adresáři uloženy v souborech pojmenovaných číslem věty v seznamu se speciální příponou. Generování limitů. 11 Tato možnost se týká se pouze práce s větami jejichž zdrojem je korpus PDTB 1.0 obsahující banku syntaktických stromů vět, z nichž jsou limity generovány. Limity lze generovat hromadně pro všechny vybrané stromy ze seznamu. Úprava nebo vytvoření limitů v modulu ChartView. Úprava nebo vytvoření limitů v modulu TreeView. Uvedeme dva typické příklady použití modulu ChartView pro úpravy limitů. Pokud počet stromů generovatelných pro větu analyzovanou v modulu Gsynt je příliš veliký, lze na základě zkoumání chartu analýzy v modulu ChartView zadat limity pro reanalýzu věty, ze které bude generováno pouze přijatelné množství stromů, se kterými potom lze pracovat v modulu TreeView. Dalším příkladem použití modulu ChartView je hledání limitů, které způsobily, že nelze vygenerovat ani jeden strom typicky jde o hledání mezi automaticky vygenerovanými limity. Existence limitů pro větu, zdroj těchto limitů a použití limitů v poslední provedené analýze věty je indikováno příznaky v seznamu vět Vstupní gramatika analýzy Modul Gsynt používá pro práci s gramatikou modul GrammarView. Systém pracuje s jednou aktuálně nahranou gramatikou. Po spuštění systému je nahrána implicitní gramatika nastavená v konfiguračním souboru. Nahraná gramatika je zadaná prostřednictvím souboru s metagramatikou. Systém kontroluje, zda jsou pro metagramatiku vygenerovány aktuální gramatiky typu G2 a G3 a pomocné indexové soubory, a v případě potřeby je vygeneruje. 12 Po každé změně metagramatiky provedené uživatelem je tedy k tomu, aby se změny projevily v modulu Gsynt, nutné gramatiku znovu nahrát Analýza vět Modul Gsynt slouží jako grafické uživatelské rozhraní pro syntaktický analyzátor synt. Umožňuje dávkovou analýzu vět vybraných ze seznamu. Po spuštění dávkové analýzy uživatel čeká na dokončení analýzy pro všechny věty nebo může analýzu v jejím průběhu kdykoli přerušit, přičemž výsledky pro dosud zanalyzované věty zůstanou platné limity jsou generovány pomocí programu treesget systému synt 12 podrobnější informace jsou v části Generovíní gramatik na straně a tedy vygenerovat gramatiky typu G2 a G3 sloužící jako vstup pro analyzátor synt 14 v části Poznámky k implemenraci na straně 33 se zmiňujeme o možnosti provádění analýzy na pozadí práce uživatele v modulu 32

39 Pro analýzu všech vybraných vět jsou nastavovány následující parametry analyzátoru: Nastavení typu vstupu analýzy pro větu ze seznamu: věta seznamu ve formátu plain analyzátor provádí morfologickou analýzu věty, věta seznamu ve formátu brief morfologická analýza je zadána ve formátu brief, věta z korpusu (pouze pokud zdrojem seznamu byl korpus) analyzátor použije morfologickou analýzu z korpusu. Volby určující, zda má být uložen chart analýzy a zda mají být generovány stromy analýzy. Generování stromů lze podmínit maximálním počtem generovatelných stromů. Nastavení parametrů pro vstupní gramatiku: typ použité vstupní gramatiky: G2 nebo G3 maximální úroveň použitých pravidel gramatiky Volba použití limitů uložených pro větu v modulu Gsynt. Pro každou větu seznamu lze nastavení těchto parametrů použité pro poslední provedenou analýzu této věty vyčíst v seznamu vět z příslušných příznaků věty Poznámky k implementaci Modul Gsynt je naprogramován v jazyce Tcl. Používá syntaktický analyzátor synt a program treesget pro automatické generování limitů. Tyto programy jsou volány jako asynchronní dětské procesy. Modul Gsynt jim posílá zadané vstupy a zpracovává jejich výstupy, zatímco uživatel čeká 15 na dokončení dětských procesů, případně může spuštěné akce přerušit při zachování dosud získaných výsledků. Asynchronního spouštění dětských procesů by bylo možno využít a uživateli umožnit v průběhu časově náročné analýzy provádět některé činnosti, které nemohou ohrozit konzistenci dat, jako například zkoumání výsledků analýzy. Externí editor, používaný při editování limitů věty nebo samotné věty ve formátu plain nebo brief, je v modulu spouštěn jako synchronní dětský proces, přičemž data jsou mezi procesy předávána přes dočasné soubory. Zmíníme se nyní o ukládání informací o větě a o provedené analýze věty. Vstupní parametry analyzátoru, některé výsledky analýzy, zdrojová a aktuální podoba věty ve formátu brief a plain jsou ukládány v operační paměti. Naproti tomu vstupní limity, dump analýzy, chart analýzy a generované stromy jsou ukládány do souborů. Zpravidla totiž obsahují velká množství dat. Výhodou je, že tato v souborech uložená data lze později analyzovat pomocí samostatně spouštěných modulů ChartView a TreeView, které mohou pracovat nezávisle na analyzátoru synt. Pro výše zmíněná ukládaná data je pro každý proces systému GDW vytvořen speciální dočasný adresář. Obsahuje jeden podadresář pro každý seznam vět otevřený v modulu Gsynt. Adresář seznamu vět obsahuje čtyři podadresáře obsahující postupně limity, dumpy, charty a generované stromy všech vět seznamu. Každá věta seznamu má svůj vlastní soubor, jehož jméno je tvořeno číslem věty v seznamu vět 16 a příponou určující 15 z důvodu zachování konzistence dat v modulu 16 odpovídá pořadí věty ve zdroji ze kterého byl seznam vět vytvořen 33

40 typ ukládaných dat. 17 Před ukončením práce s modulem Gsynt jsou data uložená ve zmiňovaných adresářích smazána, uživatel je však předtím může uložit tato data příslušející libovolnému otevřenému seznam vět. Při ukládání seznamu vět vytvořeného uživatelem v modulu Gsynt je potom adresář s daty pro ukládaný seznam pouze přesunut do zvoleného podadresáře. 3.3 Modul GrammarView Modul GrammarView slouží k práci s gramatikou používanou analyzátorem synt. Jeho úkolem je umožnit uživateli provádět v gramatice úpravy na základě zkoumání výsledků analýzy získaných systémem GDW. Mezi jeho funkce patří generování gramatik ve formách G2 a G3 z metagramatiky, uchovávání vazeb mezi pravidly tří forem gramatik a zobrazování těchto forem gramatik. Hlavní okno modulu lze vidět na obrázku 3.3 na straně 34. Obrázek 3.3: Hlavní okno modulu GrammarView 17 otázka konzistence dat uložených v popsaných adresářích při současném spouštění modulu více uživateli je rozebrána v části Implementace systému na straně 26 34

41 3.3.1 Generování gramatik Analyzátor synt používá ke generování gramatiky G2 skript meta.pl, který je používán také systémem GDW, a ke generování gramatiky G3 skript rozgen.pl, který bylo pro potřeby systému GDW nutno upravit. Upravený skript byl nazván grozgen.pl. Modul Gsynt používá při syntaktické analýze aktuálně nahranou gramatiku. Gramatika k nahrání je zadána uživatelem jako soubor obsahující metagramatiku. Pokud v adresáři zadaného souboru neexistují příslušné soubory s formami G2 a G3, 18 jsou tyto soubory vygenerovány pomocí skriptů meta.pl a grozgen.pl Prohlížení gramatik Modul GrammarView umožňuje paralelní prohlížení všech tří forem dané gramatiky. Ve třech textových oknech jsou vedle sebe zobrazeny textové soubory obsahující jednotlivé formy. V textu jsou barevně vyznačeny některé syntaktické konstrukty. Modrou barvou jsou vyznačena pravidla nebo konstrukty metagramatiky, ze kterých jsou pravidla přímo generována. 20 Červeně jsou vyznačeny komentáře ve stylu jazyka C. Tyto komentáře obsahují příklady pro pravidla následující bezprostředně za komentáři. Pro vybrané pravidlo libovolné ze tří forem lze ve zbývajících formách vyhledat odpovídající pravidla, tj. pravidlo, ze kterého bylo vybrané pravidlo generováno a/nebo pravidla, která byla z vybraného pravidla generována. Typickým příkladem použití je hledání pravidla metagramatiky, které odpovídá nějakému pravidlu gramatiky ve formě G2 nebo G3 vybranému v seznamu pravidel modulu TreeView nebo ChartView. Vazby mezi pravidly jednotlivých forem jsou při generování forem G2 a G3 uloženy do dvou indexových souborů, které jsou použity pro vytvoření potřebných datových struktur (indexů a inverzních indexů) při nahrání gramatiky v modulu Gsynt. K zjištění vazeb mezi metagramatikou a formou G2 je využito toho, že všechna pravidla G2 generovaná z nějakého metapravidla skriptem meta.pl jsou na výstup posílána těsně za sebou a že mezi pravidly G2 jsou na výstupu zachovány komentáře v pořadí odpovídajícím pořadí v metagramatice. Indexy tak mohou být získány bez nutnosti zásahu do skriptu meta.pl pomocí vložení komentářů s čísly řádků do souboru s metagramatikou, a jejich zpracování v generované formě G2. Tento postup nebylo možné použít při generování formy G3 z formy G2, protože skript rozgen.pl vypouští z gramatiky komentáře a nezachovává pořadí generovaných pravidel. Skript byl tedy upraven tak, že sám vytváří indexový soubor. Další funkce modulu GrammarView usnadňuje vyhledávání navazujících pravidel v rámci jedné formy gramatiky. Pro vybraný neterminál vybraného pravidla lze vyhledat pravidlo obsahující tento neterminál na levé straně, případně na pravé straně. Podle volby uživatele může být vyhledáno pravidlo, které: je prvním takovým pravidlem gramatiky, je posledním takovým pravidlem gramatiky, je nejbližsím takovým pravidlem následujícím po vybraném pravidle, 18 jsou identifikovány příponami ve jméně souboru 19 zoůsob načítání gramatiky programem synt byl upraven tak, aby umožnil současnou práci více uživatelů s různými gramatikami 20 jde o seznamové konstrukce 35

42 je nejbližším takovým pravidlem předcházejícím vybrané pravidlo. Výše popsané funkce jsou aplikovány na pravidlo, resp. neterminál, ze kterého byly v okně zobrazujícím gramatiku vyvolány pomocí myši a popup menu. 3.4 Modul TreeView Modul TreeView slouží k práci se syntaktickými stromy, získanými jako výsledek syntaktické analýzy věty. Může být použit samostatně, kdy pracuje se syntaktickými stromy uloženými v textovém souboru, nebo ve spolupráci s ostatními moduly systému GDW, kdy je využíván modulem Gsynt pro práci se syntaktickými stromy reprezentujícími výsledky analýzy vět v tomto modulu. Spolupracuje také s modulem GrammarView určeným pro práci s gramatikou. Pracovní okno modulu je zobrazeno na obrázku 3.4 na straně Funkce modulu TreeView Cílem modulu je poskytnout nástroje pro zobrazování syntaktických stromů, usnadnění orientace mezi syntaktickými stromy, zkoumání struktury stromů a výběr stromů na základě jejich struktury. Typickými příklady použití jsou vyhledávání lingvisticky správného stromu analýzy mezi velkými množstvími vygenerovaných stromů 21 nebo vyhledávání pravidel gramatiky způsobujících přegenerovávání. Funkce modulu umožňují: přehledné grafické zobrazování stromů analýzy, usnadnění orientace ve zobrazených stromech, práci s výběry stromů, porovnávání stromů a hledání průniku stromů, hledání stromů pomocí strukturních omezení (limitů), hledání kořenů podstromů pro části vět, práci s neterminály a pravidly gramatiky, použitými při analýze, nastavování limitů pro modul Gsynt Zobrazování stromů analýzy Syntaktické stromy jsou v zobrazovacím okně vykreslovány zdola nahoru, tedy od listů, jejichž umístění v okně je vypočítáno na základě pevně dané výchozí pozice, ke kořeni stromu. Na výchozí pozici v okně, společnou pro zobrazování všech stromů, je vykreslen nejlevější list stromu (obsahující první token věty nebo ɛ-terminál) a další listy jsou zobrazeny vedle něj s pevnými rozestupy mezi sebou. Mezi listy jsou zobrazena čísla určující pozice jednotlivých tokenů. Tím je v jedné řádce zobrazena analyzovaná věta. Zbytek stromu je potom postupně vykreslen směrem nahoru podle polohy listů. Společným výchozím bodem při postupném prohlížení jednotlivých stromů jsou tokeny věty. Příklad zobrazení stromu lze vidět na obrázku např. za účelem budování banky stromů 36

43 Obrázek 3.4: Hlavní okno modulu TreeView 37

44 Tento způsob vykreslování byl zvolen z několika důvodů. Odpovídá směru analýzy zdola nahoru, který je použit u analyzátoru synt. Umožňuje snadno se zaměřit na podstrom odpovídající analýze určitého úseku věty. Díky pevným vzdálenostem mezi listy stromů v horizontálním směru (a vykreslení zbytku stromu podle polohy listů) je při postupném zobrazování různých stromů možné jednodušeji vizuálně rozpoznat stejně a odlišně analyzované části stromů. Protože však gramatika pro analyzátor může obsahovat ɛ-pravidla, nejsou u všech stromů tokeny věty zobrazovány na stejném místě. Při zkoumání vnitřních uzlů stromu je možné nechat si některé informace o daném uzlu zobrazovat po najetí kurzorem na daný uzel přímo nad tímto uzlem (tzv. balloon info). Tyto informace lze vyčíst také ze zobrazeného stromu, balloon info jejich získání usnadňuje a urychluje. V modulu lze přepínat mezi zobrazováním dvou charakteristik uzlu. Jednou z nich je zobrazení části věty odpovídající podstromu s kořenem v daném uzlu. Nad uzlem je zobrazena celá věta se zvýrazněnými tokeny příslušné části věty a vedle nejlevějšího a nejpravějšího tokenu je číselně zobrazen rozsah této části věty. 22 Druhou možností je nechat nad uzlem zobrazovat pravidlo gramatiky, použité v daném uzlu stromu. Pravidlo nebo neterminál libovolného vnitřního uzlu stromu lze vyhledat v seznamu pravidel, resp. neterminálů pomocí popup menu vyvolaného kliknutím na uzel. Naopak, pro pravidlo nebo neterminál vybraný v seznamu pravidel, resp. neterminálů lze nechat ve zobrazovaných stromech vyznačovat uzly obsahující daný neterminál, resp. ve kterých bylo použito dané pravidlo. Uzly jsou vyznačovány červeným obdélníkem. 23 Stromy generované analyzátorem synt s použitím gramatiky češtiny vytvářené v laboratoři NLP obsahují množství uzlů-neterminálů, jejichž cílem není primárně nést lingvistickou informaci o části věty odpovídající uzlu, ale jež jsou spíše technického charakteru. Tyto uzly zvětšují výšku a zmenšují přehlednost generovaného stromu. K úpravě stromů (zejména vypuštěním technických uzlů stromu) na jednodušší a přehlednější tvar, obsahující pouze relevantní lingvistickou informaci, se používá skript beutifier.pl, který je součástí systému synt. Modul TreeView tento skript využívá a umožňuje výběr mezi zobrazováním stromů v normální podobě a v podobě po úpravě skriptem. Viz obrázek 3.5 na straně 39. Další možností úpravy stromu před zobrazením je inverze pořadí následníků uzlu ve stromu. Analyzátor synt totiž při generování tzv. best trees generuje stromy s pořadím uzlů opačným, než je pořadí tokenů ve větě. Zobrazené stromy lze tisknout do postscriptového souboru Výběr stromů K výběru stromů slouží seznam stromů. 24 Stromy jsou v seznamu reprezentovány jednotlivými řádky v pořadí, v jakém byly generovány analyzátorem nebo načteny ze souboru. Vybrané stromy lze ze seznamu vypouštět. Levý sloupec seznamu indikuje zařazení stromu do výběru. Pravý sloupec obsahuje libovolný počet příznaků stromu. Příznak je řetězec tvořený alfanumerickými znaky nebo podtržítky. Po načtení stromů má každý strom v seznamu pouze jediný příznak, kterým 22 lze vidět na obrázku 3.4 na straně 37 nad uzlem pp 23 na obrázku 3.4 na straně 37 jsou vyznčeny uzly obsahující neterminál clause 24 jde o první ze čtyř seznamů umístěných v levé části okna modulu 38

45 ##start## start ss clause intr inter_list inter_listnl inter interbez pp ppnl ss pn clause nnp intr nnpnl inter_list intr intr np inter_listnl inter_list inter_list npnl inter inter_listnl inter_listnl pp interbez inter inter ppnl nnp interbez interbez pn nnpnl nnp nnp nnp np nnpnl nnpnl nnpnl npnl np conj np prep np prep np ends np_prop_names npnl conjg conjc npnl prepnl npnl prepnl npnl ends NPR VL N ',' PROTOZE N VL PREP N PREP N '.' Tomáš řekl otci, že letadlo spadlo na pole za lesem start start sentence clause pp np clause pp ends np np conj np np np ends NPR VL N ',' PROTOZE N VL PREP N PREP N '.' Tomáš řekl otci, že letadlo spadlo na pole za lesem Obrázek 3.5: Strom z obrázku 3.4 na straně 37 před, a po úpravě skriptem beautifier.pl. 39

46 je číslo udávající jeho pořadí ve vstupním souboru. Dalšími předdefinovanými příznaky modulu jsou příznaky obsahující výsledky porovnávání stromů. Uživatel může definovat vlastní příznaky, které lze použít k ukládání výběrů stromů a následnému vytváření nových výběrů pomocí takto uložených výběrů. Vybraným stromům lze přidat libovolný uživatelský příznak. Naopak, jako kritérium pro výběr stromů je možné zvolit vlastnictví určitého příznaku. Vlastnictví příznaku lze testovat také proti zadanému vzorku, kterým může být regulární výraz nebo vzorek typu glob jayzka Tcl. Pomocí vzorků lze také hromadně mazat příznaky u vybraných stromů. Nový výběr je z aktuáního výběru tvořen na základě zadaného kritéria dvěma způsoby. Buď jsou k aktuálnímu výběru přidány všechny stromy splňující kritérium, nebo jsou pomocí kritéria filtrovány aktuálně vybrané stromy. Pro výběr stromů lze použít následující kritéria: splňování zadaných limitů, přítomnost zadaných neterminálů v uzlech stromu, použití zadaných pravidel při generování stromu, přítomnost ɛ-terminálů ve stromu, podobnost stromu s referenčním stromem (používá se k získávání výsledků porovnávání stromů), vlastnictví příznaku vyhovujícího zadanému vzorku (může se používat ke kombinování výběrů uchovaných pomocí příznaků). Strom k zobrazení v zobrazovacím okně se zadává kliknutím v seznamu stromů. Ke snadnějšímu procházení vybraných stromů slouží tlačítka (nebo jim odpovídající klávesy) pod seznamem stromů. Lze pomocí nich zobrazit první, předchozí, následující, nebo poslední vybraný strom Podobnost stromů a průnik stromů K usnadnění orientace ve velkém počtu syntaktických stromů slouží funkce pro porovnávání stromů a hledání průniku stromů. Problém porovnávání stromů byl řešen jako rozšíření a obměna podobných problémů, řešených pro řetězce. Různé metriky pro porovnávání stromů většinou vychází z editovací metriky. Definici vzdálenosti Vhodné pro naše potřeby uvádí G. Valiente v [4]. Při definování vychází z editovací metriky. Metriky pro stromy U editovací metriky je vzdálenost mezi dvěma stromy dána nejmenší cenou nějaké posloupnosti elementárních editovacích operací (vložení, substituce a vymazání uzlu), umožňujících transformovat jeden z porovnávaných stromů na druhý. Byly definovány také editovací metriky používající jako elementární operace rotaci hrany, rozdělení uzlů a sloučení uzlů. Pro uspořádané stromy jsou známy algoritmy pro výpočet vzdálenosti pomocí editovací metriky s časovou složitostí O(n 1 n 2 log n 1 log n 2 ), kde n 1, n 2 jsou počty uzlů porovnávaných stromů. Pro neuspořádané stromy se jedná o NP-úplný problém. 40

47 Z editovací metriky jsou položením určitých omezení odvozeny další definice vzdáleností mezi stromy. Přehled některých z nich je uveden v [4]. Vzdálenost mezi stromy je zde definována pomocí jedno-jednoznačných binárních relací (nazývaných mapping) na uzlech porovnávaných stromů, které potom pro různé definice vzdálenosti musí splňovat specifické podmínky. Pro editovací vzdálenost musí relace zachovávat pořadí předků a následníků. Použité editovací operace jsou relací reprezentovány takto: dva uzly porovnávaných stromů v relaci reprezentují substituci, v případě jejich rovnosti jde o identickou substituci tedy operaci s cenou 0, uzly prvního stromu, které nejsou v relaci s žádnými uzly druhého stromu, reprezentují operaci vymazání uzlu z prvního stromu, uzly druhého stromu, které nejsou v relaci s žádným uzlem prvního stromu, reprezentují operaci vložení uzlu do druhého stromu. Odvozené definice vzdáleností vznikly kladením dalších požadavků na relaci reprezentující vzdálenost. Alignment distance zarovnávací vzdálenost je reprezentována pomocí relace splňující podmínky pro editovací vzdálenost, přičemž je dále požadováno, aby zobrazení bylo možné rozšířit pomocí vložení nejmenšího počtu uzlů do porovnávaných stromů na izomorfismus. Na relaci mezi uzly porovnávaných stromů, reprezentující vzdálenost izolovaných podstromů (isolated-subtree distance) je dále kladena podmínka zaručující, že disjunktní stromy jsou vždy zobrazovány na disjunktní stromy. Pro účel porovnávání syntaktickch stromů se vzhledem k vlastnostem syntaktických stromů jako nejvhodnější jeví top-down vzdálenost a zejména bottom-up vzdálenost. Známé algoritmy umožňují počítat tyto typy vzdáleností s časovou složitostí O(n 1 n 2 ), respektive O(n 1 + n 2 ). Relace reprezentující top-down vzdálenost musí kromě požadavků kladených na editovací vzdálenost dále splňovat podmínku vyžadující, aby pro každé dva nekořenové uzly v relaci byli také jejich předchůdci v relaci. To znamená, že vzdálenost mezi stromy je dána maximální velikostí neúplného podstromu společného pro oba porovnávané stromy, obsahujícího kořeny porovnávaných stromů. Bottom-up vzdálenost byla definována v [3], kde je také podán důkaz, že se jedná o metriku. Doplňující podmínka kladená na relaci reprezentující bottom-up vzdálenost požaduje, aby pro každé dva uzly v relaci, také jejich přímí následníci byli v relaci (v pořadí odpovídajícím uspořádání uzlů). To znamená, že vzdálenost dvou uspořádaných kořenových stromů zde odpovídá lesu společných úplných podstromů s největším počtem uzlů. Použitá definice vzdálenosti a průniku Analyzátor synt provádí syntaktickou analýzu metodou zdola nahoru. Protože společným úplným podstromům porovnávaných syntaktických stromů odpovídají stejně analyzované části věty, zdá se bottom-up metrika nejvhodnější pro porovnávání stromů generovaných analyzátorem synt. Takto definovaná míra podobnosti vyjadřuje míru shody částečných analýz úseků analyzované věty. 41

48 V souladu s použitou metrikou definujeme průnik syntaktických stromů jako les společných úplných podstromů s největším počtem uzlů. Takto definovaný průnik tedy odpovídá stejně analyzovaným částem věty, což je v souladu s intuicí. Pro použití bottom-up metriky také hovoří její příznivá výpočetní náročnost. V [4] byl navržen algoritmus pro výpočet bottom-up vzdálenosti s časovou složitostí O(n 1 + n 2 ). Tento algoritmus byl po úpravách použit v modulu TreeView. 25 Prakticky je vzdálenost dvou stromů v modulu TreeView počítána na základě velikosti výše definovaného průniku porovnávaných stromů. Buď je získána jako prostý počet uzlů v průniku, nebo mohou být při výpočtu velikosti průniku uzly váženy svou výškou. Protože nás nezajímá absolutní hodnota vzdálenosti stromu od referenčního stromu, ale spíše výběr sromů (určení jejich pořadí) na základě vzdálenosti od referenčního stromu, není počítaná vzdálenost normalizována. Funkce modulu pro výpočet vzdálenosti a průniku Při počítání průniku vybraných stromů lze nastavit minimální výšku, požadovanou pro společný podsrom, který má být zařazen do průniku. Výsledný průnik vybraných stromů je vyznačen v aktuálně zobrazeném stromě vybarvením příslušných podstromů červenou barvou. Vzdálenost vybraných stromů je počítana vzhledem k referenčnímu stromu zvolenému v seznamu stromů. Průnik určující tuto vzdálenost je opět možné nechat zobrazovat (stejně jako průnik množiny stromů) jako červenou část u aktuálně zobrazeného stromu. Dále lze se získanými hodnotami vzdáleností stromů pracovat v seznamu stromů. Užitečnou informací je zejména pořadí porovnávaných stromů podle vypočítané vzdálenosti. Pořadí je možné nechat zobrazit jako speciální příznak v seznamu stromů nebo lze v seznamu vybírat stromy ležící v zadaném intervalu pořadí. Hodnota vzdálenosti není normalizovaná a vyjadřuje pouze počet uzlů v průniku porovnávaných stromů (případně vážený výškou uzlu). Může být zobrazena jako speciální příznak v seznamu stromů Výběr stromů na základě částečných analýz Limity jako strukturní omezení K úkolům, které má řešit modul TreeView, patří úkol vyhledat mezi možnými stromy lingvistcky správně utvořené stromy, tedy stromy, jejichž struktura odpovídá syntaktické struktuře přirozeného jazyka, jehož formální gramatiku se snažíme vytvářet. Přítomnost ostatních stromů znamená nežádoucí vlastnost gramatiky použitá gramatika přegenerovává. Na základě zkoumání struktury těchto ostatních stromů lze potom navrhovat změny v gramatice, které zabrání generování nesprávných stromů. Jako vhodné strukturní kritérium pro výběr mezi generovanými stromy slouží limity, které umožňují klást podmínky na částečné analýzy vybraných úseků věty. Výběr z generovaných stromů analýzy na základě testování limitů v modulu TreeView je možné chápat také jako alternativu vůči získání stromů generováním z chartu získaného jako výstup nové analýzy věty s použitím nově přidaných limitů. Protože omezení kladená na určitý úsek věty mohou mít vliv na analýzu jiných částí věty, je zajímavou otázkou, jaké limity je vhodné pro výběr stromů použít. Čím vhodnější 25 viz část Algoritmus pro průnik syntaktických stromů věty na straně 46 42

49 limity použijeme, tím menší počet (a tedy kratší doba) nám postačí k nalezení vyhovujících stromů. Volba limitů Při zadávání limtů pro výběr jsou užitečné zejména dvě funkce modulu TreeView. První z nich je zobrazení průniku vybraných stromů. Umožňuje například po zadání určitého limitu jako filtru pro výběr zjistit, jaký vliv má použití tohoto limitu na analýzu jiných úseků věty. Může také zabránit zbytečnému použití nadbytečných limitů nezužujících výběr stromů. Druhou praktickou funkcí je vyhledání všech neterminálů nacházejících se v kořenech podstromů odpovídajících zadanému úseku věty. Pomocí ní je možné získat představu o možných částečných analýzách úseku věty a na jejím základě zadat vhodný limit. Další možností je pracovat současně s chartem analýzy, z nějž byly stromy generovány. K práci s chartem slouží modul ChartView, který umožňuje hledat a zobrazovat částečné analýzy úseku věty. Práce s limity v okně V modulu TreeView jsou limity s nimiž se pracuje uchovávány v seznamu limitů, 26 ze kterého mohou být graficky zobrazovány v zobrazovacím okně. Zadané limity je možné přímo používat ve spolupráci s modulem Gsynt V seznamu jsou limity pro větší přehlednost uspořádány podle typu (limity s rozsahem před obecnými limity), a dále podle rozsahu (podle levé pozice, a potom podle pravé pozice rozsahu). Při vkládání do seznamu jsou kontrolovány duplicity. Funkcím, které jako svůj vstup používají limity, jsou limity zadávány prostřednictvím seznamu limitů a to jako všechny nebo jen vybrané limity v seznamu. Práce s vybranými limity v seznamu je důvodem, proč při vkládání do seznamu není kontrolována kompatibilita limitů. Uživatel totiž může považovat za vhodné ponechat některé (třeba i nekompatibilní) limity v seznamu pro možné pozdější použití, a nemusí je použít v aktuálním výběru, se kterým pracuje a který nemusí obsahovat odporující si limity ze seznamu. Limity mohou být do seznamu vkládány z klávesnice nebo pomocí myši z vybraného uzlu zobrazeného stromu jako limit odpovídající neterminálu a podstromu daného uzlu. Vybrané limity mohou být vyznačovány v zobrazovaných stromech. Pokud se v aktuálně zobrazeném stromu nachází podstromy odpovídající limitu, jejich hranice jsou označeny světle zelenou barvou a stejně tak kořeny podstromů porovnávané s neterminálem limitu. Pokud je okno modulu TreeView otevřeno z modulu Gsynt za účelem zobrazení stromů generovaných pro určitou větu, je možné aktualizované limity ze seznamu ukládat do modulu Gsynt jako limity pro novou analýzu dané věty Neterminály a pravidla gramatiky K práci s neterminály a pravidly gramatiky slouží seznam neterminálů a seznam pravidel. 27 Výběr pravidel, resp. neterminálů v seznamu je používán buď jako vstup nebo výstup 26 druhý ze seznamů v levé části okna modulu 27 poslední dva ze seznamů v levé části okna modulu 43

50 funkcí modulu TreeView. Vybrané neterminály lze použít k výběru pravidel v seznamu pravidel nebo jako kritérium pro výběr stromů v seznamu stromů. Podobně lze jako kritérium pro výběr stromů použít vybraná pravidla. Naopak v seznamech pravidel (resp. neterminálů) lze získat výběr těch pravidel (resp. neterminálů), která byla použita ve vybraných stromech. Vyhledání konkrétního neterminálu nebo pravidla v seznamu lze provést různými způsoby. Pro přímé procházení seznamu jsou pravidla (resp. neterminály) v seznamu uspořádány abecedně. Pokud uživatele zajímají vybraná pravidla (typicky jako výsledek nějaké funkce modulu), lze seznam setřídit tak, aby vybraná pravidla byla na začátku seznamu (se zachovaným abecedním uspořádáním). Nakonec lze také v seznamu vyhledat pravidlo (resp. neterminál) vybrané v zobrazeném stromě. Pravidla použitá při generování syntaktických stromů, uložená v seznamu pravidel, jsou pravidla vstupní gramatiky pro analyzátor, tedy gramatiky typu G2 nebo G3. Autor gramatiky však při jejím vytváření pracuje s metagramatikou (gramatikou ve formě G1), z níž jsou gramatiky G2 a G3 generovány. Pomocí modulu GrammarView, který slouží k prohlížení gramatik pro analyzátor synt, je možné nechat si zvolené pravidlo ze seznamu vyhledat a zobrazit ve vstupní gramatice současně s vyhledáním a zobrazením pravidel odpovídajících gramatik zbývajících forem Vybrané použité algoritmy Algoritmus pro testování limitů Algoritmy použité pro testování limitů na syntaktických stromech se liší pro jednotlivé druhy limitů. Limity jsou před testováním rozděleny do čtyř skupin podle svých druhů, a jednotlivé skupiny jsou potom postupně testovány zvlášť. Každá skupina je uložena ve zvláštní datové struktuře. Pozitivní a negativní obecné limity jsou uloženy jako dva seznamy neterminálů. Limity s rozsahem jsou podobně uloženy do dvou seznamů (pro pozitivní a negativní limity), ale prvky seznamů obsahují ještě informaci o rozsahu limitu. Navíc jsou limity do seznamu při načítání vkládány se zatřízením podle velikosti rozsahu (důvod bude objasněn níže). Pořadí testování limtů. V případě, že nemáme žádné další informace o pravděpodobnostech selhání jednotlivých druhů limitů pomocí nichž bychom zvolili pořadí jejich testování, je výhodné toto pořadí určit na základě výpočetní náročnosti testování limitů, v našem případě tedy velikosti části stromu kterou je nutno projít pro otestování limitu. Nejdříve jsou proto testovány limity s rozsahem, a až po nich obecné limity. Limity s rozsahem jsou dále testovány v pořadí daném velikostí rozsahu limitu, tedy nejdříve limity s menším rozsahem, jejichž testování vyžaduje procházení menší části stromu. 28 Další otázkou, kterou si můžeme položit je, zda je výhodnější testovat dříve pozitivní nebo negativní limity. Při testování negativního limitu je třeba ověřit, že neterminál limitu se v podstromu odpovídajícím rozsahu limitu nenachází a celý tento podstrom je tedy nutno projít v případě úspěchu limitu. Při testování pozitivních limitů, kdy ověřujeme přítomnost neterminálu limitu v příslušném podstromu stromu, je nutno celý podstrom 28 v tomto pořadí byly limity ukládádny do seznamu 44

51 procházet naopak v případě selhání limitu. Protože limity jsou testovány pouze do prvního neúspěchu, zdá se výhodnější testovat nejdříve pozitivní limity. K použití obou výše popsaných heuristik je nutné podotknout, že použití jednotlivých druhů limtů při výběru stromů v modulu TreeView může být značně typické, a proto praktický účinek zvoleného pořadí testování limitů na rychlost výpočtu může být méně významný. Testování obecných limitů. Testování obecných limitů (např. limit -:np) odpovídá zjišťování přítomnosti neterminálu limitu v daném stromu. Nejdříve se testují pozitivní limity. Pro každý limit (reprezentovaný neterminálem v seznamu) je strom procházen do hloubky. Pokud je nalezen hledaný neterminál, pokračuje se testováním dalšího limitu, pokud nebyl neterminál ve stromě nalezen, test limitů na stromu selhal a je ukončen. Při testování negativních limitů je možné procházet strom (opět je procházen do hloubky) pouze jednou, a v každém uzlu testovat přítomnost neterminálů každého z limitů (všechny neterminály ze seznamu reprezentujícího negativní limity). V případě, že je neterminál nalezen, test limitů na stromu selhal a je ukončen. Testování limitů s rozsahem: Při testování limitů s rozsahem (např. limit 2-5:pp) je testována přítomnost neterminálu limitu v kořenech podstromů daných rozsahem neterminálu. Pro efektivní nalezení příslušných kořenů při testování jednotlivých limitů s různými rozsahy jsou při parsování stromu z řetězce do stromové struktury ukládány pomocné informace do uzlů stromu a do seznamu tokenů. Díky tomu stačí celý strom projít pouze jednou, při jeho parsování, a při testování jednotlivých limitů stačí už jen projít počet uzlů rovný výšce nejvyššího podstromu s rozsahem testovaného limitu. Doplňující informací pro každý uzel stromu je jeho rozsah. Další pomocná datová struktura seznam tokenů je reprezentována polem obsahujícím odkazy na listy stromu obsahující tokeny (některé listy stromu mohou obsahovat ɛ-symboly). Tokeny jsou v seznamu uloženy ve stejném pořadí jako ve větě. Při testování limitu s rozsahem l r začínáme v listu obsahujícím token s levou pozicí l. Odkaz na tento list najdeme v poli reprezentujícím seznam tokenů pod indexem l. Dále postupujeme stromem nahoru dokud je rozsah navštíveného uzlu užší než rozsah neterminálu limitu. Pokud narazíme na uzel, jehož rozsah je širší než rozsah neterminálu, test pozitivního limitu selhal, test negativního limitu uspěl. Pokud narazíme na uzel se stejným rozsahem jako je rozsah limitu, začneme testovat neterminály. Pokud se neterminály uzlu a limitu rovnají, test negativního limitu selhal a končí, test pozitivního limitu uspěl a končí. Takto postupujeme ve stromu výše a testujeme neterminály dokud se rozsahy navštíveného uzlu a limitu rovnají. Pokud narazíme na kořen, nebo je rozsah navštíveného uzlu širší, než rozsah limitu, test pozitivního limitu neuspěl a končí, test negativního limitu uspěl a končí. Jako další možnost urychlení algoritmu by bylo možné zvážit seskupení limitů se stejným rozsahem do skupin. Pro každý rozsah by se potom příslušný podstrom procházel pouze jednou, přičemž by byly otestovány všechny limity s daným rozsahem. Postup procházení stromů od listů směrem nahoru je uplatněn také u některých dalších algoritmů jejichž vstupem je nějaký rozsah stromu, např. u algoritmu pro hledání všech 45

52 neterminálů nacházejících se v kořenech generovaných podstromů daného rozsahu. Použití pomocných dat (rozsahu uzlů a ukazatelů na listy) nezvyšuje výrazně paměťové nároky, protože stromy jsou v modulu TreeView generovány z reprezentace řetězcem až při jejich použití. Algoritmus pro průnik syntaktických stromů věty Uvedeme algoritmus pro výpočet průniku dvou syntaktických stromů úplné analýzy věty, který jsme vytvořili přizpůsobením algoritmu pro výpočet bottom-up vzdálenosti uvedeného v [4]. Zvýšili jsme jeho efektivitu (v rámci zachování složitosti) provedením úprav využívajících vlastností syntaktických stromů věty (stejné tokeny v listech obou stromů) a dřívějším ukončením algoritmu v případě získání pro nás dostačujících výsledků (průniku). Podstata algoritmu spočívá v postupném vytváření reprezentace lesa stromů jejichž průnik hledáme 29 pomocí orientovaného acyklického grafu nazvaného CDAG compacted directed acyclic graph. Graf CDAG reprezentuje třídy rozkladu množiny kořenových podstromů zadaných stromů podle ekvivalence dané izomorfismem podstromů, kdy zobrazením izomorfismu je identita neterminálů. Je třeba si uvědomit, že list úplného syntaktického stromu věty obsahující token je jednoznačně charakterizován nikoli řetězcem tokenu (terminálem), ale pozicí tokenu. Tím je potom dána nutná a postačující podmínka pro izomorfismus listů obsahujících tokeny. Tuto podmínku jsme zohlednili v inicializační části algoritmu. Algotirmus prochází všechny uzly lesa zadaných stromů zdola nahoru uzly jsou postupně zařazovány do fronty a vybírány z fronty. Při výběru uzlu z fronty je uzlu buď přiřazen existující podstrom grafu CDAG (v případě, že v grafu CDAG už je uložen strom izomorfní podstromu vedoucímu z uzlu vybraného z fronty), nebo je pro něj vytvořen nový uzel grafu CDAG. Pokud pro nějakou výšku uzlů nebyly nalezeny žádné izomorfní stromy, na další úrovni je algoritmus ukončen. Popíšeme implementovaný algoritmus podrobněji. Vstupní stromy: Pro oba stromy je při parsování řetězce reprezentujících strom 30 vytvořena stromová struktura umožňující procházet strom oběma směry a pole ukazatelů na listy do této struktury. Pro každý uzel u stromu jsou uchovávány následující informace: label[u] neterminál uzlu u parent[u] přímý předchůdce uzlu u children[u] seznam přímých následníků uzlu u outdegree[u] počet přímých následníků uzlu u chtomap[u] počet nezpracovaných (nezobrazených do grafu CDAG) dětí uzlu u CDAGnode[u] uzel grafu CDAG odpovídající uzlu u height[u] výška uzlu u l[u] levá pozice rozsahu uzlu u r[u] pravá pozice rozsahu uzlu u 29 jedná se o dva upořádané stromy 30 parsování odpovídá jednomu projití celého stromu 46

53 Konstruovaný graf CDAG: Konstruovaný graf CDAG stačí reprezentovat jednosměrným seznamem jeho uzlů. Tento seznam bude, díky směru procházení lesa vstupních stromů zdola nahoru a přidávání nového uzlu vždy na začátek seznamu, setříděn podle výšky uzlů (bude nerostoucí). Pro každý uzel g seznamu budeme uchovávat následující data: next[g] následník uzlu g v seznamu both[g] true/f alse třída reprezentující uzel g obsahuje obsahuje podstromy obou vstupních stromů (tedy náleží do průniku) reprez[g] uzel některého ze vstupních stromů odpovídající uzlu g (tedy uzel u, pro nějž CDAGnode[u] = g) Hrany mezi uzly grafu CDAG lze získat prostřednictvím reprezentantů těchto uzlů ve vstupních stromech. Inicializace algoritmu: všem uzlům vstupních stromů nastavíme cht om ap[u] outdegree[u] (lze provést již při jejich parsování), maxcommonsubtreeheight 0 hodnota udává výšku nejvyššího stromu v dosud nalezeném průniku (tedy nejvyššího uzlu u grafu CDAG pro nějž both[u] = true), vytvoříme v grafu CDAG uzly odpovídající tokenům věty a ɛ-terminálu, a nastavíme jim hodnoty reprez[g] na příslušný list v nějakém vstupním stromu a hodnoty both[g] na 1, do fronty Q zařadíme všechny listy vstupních stromů (postupně, v pořadí zleva doprava, což není nutné, ale je to výhodnější). Hlavní cyklus algoritmu: Viz obrázek 3.6. Komentář k algoritmu: Test v řádku 3 zajistí ukončení hledání stromů průniku s výškou h, pokud průnik neobsahuje žádný strom výšky h 1. V řádku 5 jsou zpracovány listy vstupních stromů hodnota je nastavena bez nutnosti prohledávání grafu CDAG, pomocí struktur vytvořených při parsování stromu a inicializaci grafu CDAG, podle pozice tokenu (resp. obdobně pro ɛ-terminál). Pokud uzel u, vybraný z fronty, není list, je v cyklu na řádcích 9-22 hledán jemu izomorfní podstrom grafu CDAG (stačí testovat uzly stejné výšky a jejich děti). Pokud je nalezen, je pomocí hodnoty both indikováno, že nalezený podstrom grafu CDAG patří do průniku (řádek 18), uzlu u je přiřazen nalezený uzel grafu CDAG (řádek 19) a je aktualizována maximální výška dosud nalezeného stromu průniku (řádek 20). Pokud není nalezen, je pro něj na řádcích vytvořen v grafu CDAG nový uzel, reprezentující podstrom uzlu u. Nakonec je otec uzlu z fronty vybraného uzlu u zažazen do fronty v případě, že u není kořenem vstupního stromu (řádek 28) a všichni jeho sourozenci už jsou reprezentovány v grafu CDAG. 47

54 1: while Q není prázdná 2: vyber uzel u z Q 3: if height[u] maxcommonsubtreeheight > 1 then break 4: if outdegree[u] = 0 then 5: nastav CDAGnode[u] 6: else 7: found false 8: g první uzel seznamu CDAG uzlů 9: while g NULL 10: if height[reprez[g]] height[u] then break 11: if outdegree[reprez[g]] = outdegree[u] and label[reprez[g]] = label[u] then 12: found true 13: for (i = 0; i < outdegree[u]; i + +) 14: if CDAGnode[(children[u])[i]] CDAGnode[(children[reprez[g]])[i]] then 15: found = 0 16: break 17: if found then 18: both[g] true 19: CDAGnode[u] g 20: maxcommonsubtreeheight height[u] 21: break 22: g next[g] 23: if not found 24: vytvoř nový uzel h na začátku seznamu CDAG uzlů 25: both[h] 0 26: reprez[h] u 27: both[h] false 28: if parent[u] NULL then 29: cht om ap[parent[u]] cht om ap[parent[u]] 1 30: if cht omap[parent[u]] = 0 then 31: zařaď parent[u] do fronty Q Obrázek 3.6: Hlavní cyklus algoritmu hledání průniku stromů 48

55 Získání a reprezentace výsledků: Libovolný ze vstupních stromů je procházen do hloubky, přičemž cesta stromem dolů vždy končí v prvním uzlu u pro nějž platí both[cdagnode[u]] = true Takový uzel u je kořenem jednoho ze stromů průniku. Pro systém ChartView stačí k jednoznačné reprezentaci podstromu úplného stromu analýzy patřícího do průniku levá pozice rozsahu uzlu (l[u]) a výška uzlu (height[u]). 31 Algoritmus je implementován v jazyce C a je kromě hledání průniku vybraných stromů je používán také při počítání podobnosti stromů Poznámky k implementaci Modul TreeView je implementován v jazycích Tcl/Tk a C. Hlavními datovými strukturami používanými v jazyce Tcl jsou seznam (s přímým přístupem k prvkům pomocí indexů jako u pole) a asociativní pole (hash). Objekty modulu (stromy, pravidla, neterminály, limity,... ) jsou uloženy v seznamech. K práci s těmito seznamy se využívají pomocné indexové seznamy a hashe. Dále byla využita práce s regulárními výrazy v jazyce Tcl (např. při práci s příznaky). Stromy jsou v modulu uloženy jako řetězce získané na výstupu analyzátoru synt. Formát řetězců odpovídá formátu seznamů jazyka Tcl, strom je takto reprezentován vnořenými seznamy. Datové struktury vhodné pro procházení stromů jsou pro jednotlivé stromy vytvářeny (parsováním řetězce) ad hoc až v době jejich použití. Parsování až v době použití však neznamená podstatné zvýšení časové náročnosti v případě použití jazyka Tcl se vždy jedná pouze o jeden aktuálně zobrazovaný strom, v případě práce s velkým množstvím stromů je používán jazyk C a parsování stromů odpovídá jednomu průchodu celým stromem (který je u většiny použitých algoritmů nutný a zároveň jediný nutný). Při parsování stromu jsou uloženy pomocné informace přímé odkazy na listy s tokeny a rozsah uzlu pro každý uzel stromu, které umožňují efektivní procházení stromů od listů nahoru. 32 Pro práci se stromy v jazyce Tcl ja použita knihovna struct::tree, kterou jsme rozšířili o něktaré další funkce (pro parsování, pro inverzi pořadí uzlů,...). Jazyk Tcl je použit zejména pro vytváření GUI, zobrazování stromů, zadávání vstupů a prezentaci výstupů a pro používání komponent systému synt. Jazyk C byl zvolen pro implementaci časově náročných funkcí pracující s velkými objemy dat (např. se všemi generovanými stromy). Jde např. o iniciální vytváření seznamů pravidel nebo vytváření výběrů stromů. Implementace v jazyce C umožňuje při práci s desetitisíci stromů (počítání průniku, testování limitů) přijatelnou odezvu v řádu sekund. 3.5 Modul ChartView Modul ChartView pracuje s chartem, reprezentujícím výsledek syntaktické analýzy věty. Může být použit samostatně, kdy pracuje s chartem uloženým v textovém souboru ve formátu výstupu analyzátoru synt, nebo ve spolupráci s ostatními moduly systému GDW, 31 takové určení podstromu je výhodné vzhledem k tomu, že ke stromům obecně většinou přistupujeme od jejich listů obsahujících tokeny 32 viz. algorimy prezentované v předchozích částech 49

56 kdy je používán modulem Gsynt pro práci s charty vět analyzovaných v tomto modulu. Spolupracuje také s modulem GrammarView, určeným pro práci s gramatikou. Hlavní okno modulu je na obrázku 3.7 na straně 50. Obrázek 3.7: Hlavní okno modulu ChartView Funkce a objekty modulu ChartView Funkce modulu Modul má za úkol poskytnout nástroje pro prohlížení chartu jako výsledku analýzy věty. Jedním z hlavních cílů je umožnit nalézt příčiny neúspěchu analýzy věty a na jejich základě případně provést doplnění nebo změny v gramatice. Naopak, v případě úspěšné 50

Maturitní otázky z předmětu PROGRAMOVÁNÍ

Maturitní otázky z předmětu PROGRAMOVÁNÍ Wichterlovo gymnázium, Ostrava-Poruba, příspěvková organizace Maturitní otázky z předmětu PROGRAMOVÁNÍ 1. Algoritmus a jeho vlastnosti algoritmus a jeho vlastnosti, formy zápisu algoritmu ověřování správnosti

Více

MBI - technologická realizace modelu

MBI - technologická realizace modelu MBI - technologická realizace modelu 22.1.2015 MBI, Management byznys informatiky Snímek 1 Agenda Technická realizace portálu MBI. Cíle a principy technického řešení. 1.Obsah portálu - objekty v hierarchiích,

Více

TÉMATICKÝ OKRUH Softwarové inženýrství

TÉMATICKÝ OKRUH Softwarové inženýrství TÉMATICKÝ OKRUH Softwarové inženýrství Číslo otázky : 24. Otázka : Implementační fáze. Postupy při specifikaci organizace softwarových komponent pomocí UML. Mapování modelů na struktury programovacího

Více

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ 1) PROGRAM, ZDROJOVÝ KÓD, PŘEKLAD PROGRAMU 3 2) HISTORIE TVORBY PROGRAMŮ 3 3) SYNTAXE A SÉMANTIKA 3 4) SPECIFIKACE

Více

Matematika v programovacích

Matematika v programovacích Matematika v programovacích jazycích Pavla Kabelíková am.vsb.cz/kabelikova pavla.kabelikova@vsb.cz Úvodní diskuze Otázky: Jaké programovací jazyky znáte? S jakými programovacími jazyky jste již pracovali?

Více

Úvod. Programovací paradigmata

Úvod. Programovací paradigmata .. Úvod. Programovací paradigmata Programovací techniky doc. Ing. Jiří Rybička, Dr. ústav informatiky PEF MENDELU v Brně rybicka@mendelu.cz Cíl: programování efektivně a bezpečně Programovací techniky

Více

Zobrazte si svazy a uspořádané množiny! Jan Outrata

Zobrazte si svazy a uspořádané množiny! Jan Outrata LatVis Zobrazte si svazy a uspořádané množiny! Jan Outrata Motivace potřeba visualizovat matematické (algebraické) struktury rychle, přehledně a automaticky počítačovými prostředky ruční kreslení je zdlouhavé

Více

1 Webový server, instalace PHP a MySQL 13

1 Webový server, instalace PHP a MySQL 13 Úvod 11 1 Webový server, instalace PHP a MySQL 13 Princip funkce webové aplikace 13 PHP 14 Principy tvorby a správy webového serveru a vývojářského počítače 14 Co je nezbytné k instalaci místního vývojářského

Více

Předměty. Algoritmizace a programování Seminář z programování. Verze pro akademický rok 2012/2013. Verze pro akademický rok 2012/2013

Předměty. Algoritmizace a programování Seminář z programování. Verze pro akademický rok 2012/2013. Verze pro akademický rok 2012/2013 Předměty Algoritmizace a programování Seminář z programování Verze pro akademický rok 2012/2013 Verze pro akademický rok 2012/2013 1 Přednášky Jiřina Královcová MTI, přízemí budovy A Tel: 48 53 53 521

Více

Specifikace projektu Ocerus

Specifikace projektu Ocerus Specifikace projektu Ocerus Tým Vedoucí: Ondřej Sýkora (ondrasej@centrum.cz) Členové: Michal Čevora (macjariel@gmail.com) Lukáš Hermann (lukas.hermann@seznam.cz) Ondřej Mocný (hardwire@volny.cz) Tomáš

Více

Prolog PROgramming in LOGic část predikátové logiky prvního řádu rozvoj začíná po roce 1970 Robert Kowalski teoretické základy Alain Colmerauer, David

Prolog PROgramming in LOGic část predikátové logiky prvního řádu rozvoj začíná po roce 1970 Robert Kowalski teoretické základy Alain Colmerauer, David Úvod do Prologu Prolog PROgramming in LOGic část predikátové logiky prvního řádu rozvoj začíná po roce 1970 Robert Kowalski teoretické základy Alain Colmerauer, David Warren (Warren Abstract Machine) implementace

Více

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí) Programovací jazyky Programovací jazyky nižší assembler (jazyk symbolických instrukcí) vyšší imperativní (procedurální) Pascal, C/C++, Java, Basic, Python, php neimperativní (neprocedurální) Lisp, Prolog

Více

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí) Programovací jazyky Programovací jazyky nižší assembler (jazyk symbolických instrukcí) vyšší imperativní (procedurální) Pascal, C/C++, Java, Basic, Python, php neimperativní (neprocedurální) Lisp, Prolog

Více

Dnešní téma. Oblasti standardizace v ICT. Oblasti standardizace v ICT. Oblasti standardizace v ICT

Dnešní téma. Oblasti standardizace v ICT. Oblasti standardizace v ICT. Oblasti standardizace v ICT Dnešní téma Oblasti standardizace v ICT Případové studie standardizace v ICT: 1) Znakové sady 2) Jazyk 1. technická infrastruktura transfer a komunikace informací, přístup k informacím, sdílení zdrojů

Více

PHP framework Nette. Kapitola 1. 1.1 Úvod. 1.2 Architektura Nette

PHP framework Nette. Kapitola 1. 1.1 Úvod. 1.2 Architektura Nette Kapitola 1 PHP framework Nette 1.1 Úvod Zkratka PHP (z anglického PHP: Hypertext Preprocessor) označuje populární skriptovací jazyk primárně navržený pro vývoj webových aplikací. Jeho oblíbenost vyplývá

Více

GTL GENERATOR NÁSTROJ PRO GENEROVÁNÍ OBJEKTŮ OBJEKTY PRO INFORMATICA POWERCENTER. váš partner na cestě od dat k informacím

GTL GENERATOR NÁSTROJ PRO GENEROVÁNÍ OBJEKTŮ OBJEKTY PRO INFORMATICA POWERCENTER. váš partner na cestě od dat k informacím GTL GENERATOR NÁSTROJ PRO GENEROVÁNÍ OBJEKTŮ OBJEKTY PRO INFORMATICA POWERCENTER váš partner na cestě od dat k informacím globtech spol. s r.o. karlovo náměstí 17 c, praha 2 tel.: +420 221 986 390 info@globtech.cz

Více

VÝUKOVÝ MATERIÁL. Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 Číslo projektu

VÝUKOVÝ MATERIÁL. Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 Číslo projektu VÝUKOVÝ MATERIÁL Identifikační údaje školy Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková organizace Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632

Více

Masarykova střední škola zemědělská a Vyšší odborná škola, Opava, příspěvková organizace

Masarykova střední škola zemědělská a Vyšší odborná škola, Opava, příspěvková organizace Masarykova střední škola zemědělská a Vyšší odborná škola, Opava, příspěvková organizace Číslo projektu Číslo materiálu Autor Průřezové téma Předmět CZ.1.07/1.5.00/34.0565 VY_32_INOVACE_284_Programovací_jazyky

Více

Modelování procesů s využitím MS Visio.

Modelování procesů s využitím MS Visio. Modelování procesů s využitím MS Visio jan.matula@autocont.cz Co je to modelování procesů? Kreslení unifikovaných či standardizovaných symbolů, tvarů a grafů, které graficky znázorňují hlavní, řídící nebo

Více

Specifikace softwarového díla & Časový plán implementace. pro. MEF Editor

Specifikace softwarového díla & Časový plán implementace. pro. MEF Editor Specifikace softwarového díla & Časový plán implementace pro MEF Editor Cílem projektu je vytvoření pluginu do vývojového prostředí Visual Studio 2010. Plugin bude umožňovat grafickou editaci objektů spojených

Více

1. Webový server, instalace PHP a MySQL 13

1. Webový server, instalace PHP a MySQL 13 Úvod 11 1. Webový server, instalace PHP a MySQL 13 Princip funkce webové aplikace 13 PHP 14 Principy tvorby a správy webového serveru a vývojářského počítače 14 Co je nezbytné k instalaci místního vývojářského

Více

5a. Makra Visual Basic pro Microsoft Escel. Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Kalina

5a. Makra Visual Basic pro Microsoft Escel. Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Kalina 5a. Makra Visual Basic pro Microsoft Escel Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Kalina Cyklické odkazy a iterativní výpočty Zde bude stránka o cyklických odkazech a iteracích.

Více

Vývoj moderních technologií při vyhledávání. Patrik Plachý SEFIRA spol. s.r.o. plachy@sefira.cz

Vývoj moderních technologií při vyhledávání. Patrik Plachý SEFIRA spol. s.r.o. plachy@sefira.cz Vývoj moderních technologií při vyhledávání Patrik Plachý SEFIRA spol. s.r.o. plachy@sefira.cz INFORUM 2007: 13. konference o profesionálních informačních zdrojích Praha, 22. - 24.5. 2007 Abstrakt Vzhledem

Více

Výroková a predikátová logika - III

Výroková a predikátová logika - III Výroková a predikátová logika - III Petr Gregor KTIML MFF UK ZS 2017/2018 Petr Gregor (KTIML MFF UK) Výroková a predikátová logika - III ZS 2017/2018 1 / 16 2-SAT 2-SAT Výrok je v k-cnf, je-li v CNF a

Více

Principy UML. Clear View Training 2005 v2.2 1

Principy UML. Clear View Training 2005 v2.2 1 Principy UML Clear View Training 2005 v2.2 1 1.2 Co je touml? Unified Modelling Language (UML) je univerzálníjazyk pro vizuální modelování systémů Podporuje všechny životní cykly Mohou jej implementovat

Více

Ontologie. Otakar Trunda

Ontologie. Otakar Trunda Ontologie Otakar Trunda Definice Mnoho různých definic: Formální specifikace sdílené konceptualizace Hierarchicky strukturovaná množina termínů popisujících určitou věcnou oblast Strukturovaná slovní zásoba

Více

Vstupní požadavky, doporučení a metodické pokyny

Vstupní požadavky, doporučení a metodické pokyny Název modulu: Základy PHP Označení: C9 Stručná charakteristika modulu Modul je orientován na tvorbu dynamických stánek aktualizovaných podle kontextu volání. Jazyk PHP umožňuje velmi jednoduchým způsobem

Více

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007 Úvod do programovacích jazyků (Java) Michal Krátký 1 Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků

Více

CASE. Jaroslav Žáček

CASE. Jaroslav Žáček CASE Jaroslav Žáček jaroslav.zacek@osu.cz http://www1.osu.cz/~zacek/ Co znamená CASE? Definice dle SEI A CASE tool is a computer-based product aimed at supporting one or more software engineering activities

Více

Pro tvorbu samostatně spustitelných aplikací je k dispozici Matlab library.

Pro tvorbu samostatně spustitelných aplikací je k dispozici Matlab library. 1.1 Matlab Matlab je interaktivní systém pro vědecké a technické výpočty založený na maticovém kalkulu. Umožňuje řešit velkou oblast numerických problémů, aniž byste museli programovat vlastní program.

Více

Systém elektronického rádce v životních situacích portálu www.senorady.cz

Systém elektronického rádce v životních situacích portálu www.senorady.cz Systém elektronického rádce v životních situacích portálu www.senorady.cz Obec Senorady Miroslav Patočka 2006 Obsah: 1. Úvodní informace 1.1 Informace pro uživatele 1.1.1 Přístupnost HTML, PDA, WAP, XML

Více

Střední průmyslová škola elektrotechnická Praha 10, V Úžlabině 320

Střední průmyslová škola elektrotechnická Praha 10, V Úžlabině 320 Střední průmyslová škola elektrotechnická Praha 10, V Úžlabině 320 M A T U R I T N Í T É M A T A P Ř E D M Ě T U P R O G R A M O V É V Y B A V E N Í Studijní obor: 18-20-M/01 Informační technologie Školní

Více

Vzdělávací obsah vyučovacího předmětu

Vzdělávací obsah vyučovacího předmětu V.9.3. Vzdělávací obsah vyučovacího předmětu Vzdělávací oblast: Inormatika a informační a komunikační technologie Vyučovací předmět: Informatika Ročník: 1. ročník + kvinta chápe a používá základní termíny

Více

UML. Unified Modeling Language. Součásti UML

UML. Unified Modeling Language. Součásti UML UML Unified Modeling Language 1995 počátek 1997 verze 1.0 leden dnes verze 2.0 (vývoj stále nedokončen) Standardní notace OMG podpora velkých firem (Microsoft, IBM, Oracle, HP ) popisuje struktury popisuje

Více

PŘÍLOHA C Požadavky na Dokumentaci

PŘÍLOHA C Požadavky na Dokumentaci PŘÍLOHA C Požadavky na Dokumentaci Příloha C Požadavky na Dokumentaci Stránka 1 z 5 1. Obecné požadavky Dodavatel dokumentaci zpracuje a bude dokumentaci v celém rozsahu průběžně aktualizovat při každé

Více

CASE nástroje. Jaroslav Žáček

CASE nástroje. Jaroslav Žáček CASE nástroje Jaroslav Žáček jaroslav.zacek@osu.cz http://www1.osu.cz/~zacek/ Co znamená CASE? A CASE tool is a computer-based product aimed at supporting one or more software engineering activities within

Více

Informační systémy 2008/2009. Radim Farana. Obsah. Obsah předmětu. Požadavky kreditového systému. Relační datový model, Architektury databází

Informační systémy 2008/2009. Radim Farana. Obsah. Obsah předmětu. Požadavky kreditového systému. Relační datový model, Architektury databází 1 Vysoká škola báňská Technická univerzita Ostrava Fakulta strojní, Katedra automatizační techniky a řízení 2008/2009 Radim Farana 1 Obsah Požadavky kreditového systému. Relační datový model, relace, atributy,

Více

ČESKÉ VYSOKÉ UČENÍ TECHNIKÉ Fakulta elektrotechnická. Microsoft Sharepoint 2007 Workflows Průmyslové informační systémy

ČESKÉ VYSOKÉ UČENÍ TECHNIKÉ Fakulta elektrotechnická. Microsoft Sharepoint 2007 Workflows Průmyslové informační systémy ČESKÉ VYSOKÉ UČENÍ TECHNIKÉ Fakulta elektrotechnická Microsoft Sharepoint 2007 Workflows Průmyslové informační systémy Bc. Petr Pokorný Letní semestr 2009/2010 1 Obsah 1 Úvod... 3 2 Workflow... 3 3 Workflow

Více

Formy komunikace s knihovnami

Formy komunikace s knihovnami Formy komunikace s knihovnami Současné moderní prostředky Jiří Šilha a Jiří Tobiáš, Tritius Solutions a.s., Brno Osnova Základní požadavky na komunikaci s knihovnami Historie komunikace s knihovnami Confluence

Více

43 HTML šablony. Záložka Šablony v systému

43 HTML šablony. Záložka Šablony v systému 43 HTML šablony Modul HTML šablony slouží ke správě šablon pro výstupy z informačního systému modularis ve formátu HTML. Modul umožňuje k šablonám doplňovat patičku, dokumentaci a vázat šablony na konkrétní

Více

Logika pro sémantický web

Logika pro sémantický web ZVYŠOVÁNÍ ODBORNÝCH KOMPETENCÍ AKADEMICKÝCH PRACOVNÍKŮ OSTRAVSKÉ UNIVERZITY V OSTRAVĚ A SLEZSKÉ UNIVERZITY V OPAVĚ Logika pro sémantický web Martin Žáček PROČ BALÍČEK? 1. balíček Formální logické systémy

Více

Logika a logické programování

Logika a logické programování Logika a logické programování témata ke zkoušce Poslední aktualizace: 16. prosince 2009 Zkouška je písemná, skládá se obvykle ze sedmi otázek (může být více nebo méně, podle náročnosti otázek), z toho

Více

Střední průmyslová škola elektrotechnická Praha 10, V Úžlabině 320 M A T U R I T N Í T É M A T A P Ř E D M Ě T U

Střední průmyslová škola elektrotechnická Praha 10, V Úžlabině 320 M A T U R I T N Í T É M A T A P Ř E D M Ě T U Střední průmyslová škola elektrotechnická Praha 10, V Úžlabině 320 M A T U R I T N Í T É M A T A P Ř E D M Ě T U P R O G R A M O V É V Y B A V E N Í Studijní obor: 18-20-M/01 Informační technologie Školní

Více

RadioBase 3 Databázový subsystém pro správu dat vysílačů plošného pokrytí

RadioBase 3 Databázový subsystém pro správu dat vysílačů plošného pokrytí Databázový subsystém pro správu dat vysílačů plošného pokrytí RadioBase je datový subsystém pro ukládání a správu dat vysílačů plošného pokrytí zejména pro služby analogové a digitální televize a rozhlasu.

Více

Metody tvorby ontologií a sémantický web. Martin Malčík, Rostislav Miarka

Metody tvorby ontologií a sémantický web. Martin Malčík, Rostislav Miarka Metody tvorby ontologií a sémantický web Martin Malčík, Rostislav Miarka Obsah Reprezentace znalostí Ontologie a sémantický web Tvorba ontologií Hierarchie znalostí (D.R.Tobin) Data jakékoliv znakové řetězce

Více

Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Jarkovský, L. Dušek, M. Cvanová. 5. Statistica

Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Jarkovský, L. Dušek, M. Cvanová. 5. Statistica Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Jarkovský, L. Dušek, M. Cvanová 5. Statistica StatSoft, Inc., http://www.statsoft.com, http://www.statsoft.cz. Verze pro Mac i PC, dostupná

Více

Algoritmizace prostorových úloh

Algoritmizace prostorových úloh INOVACE BAKALÁŘSKÝCH A MAGISTERSKÝCH STUDIJNÍCH OBORŮ NA HORNICKO-GEOLOGICKÉ FAKULTĚ VYSOKÉ ŠKOLY BÁŇSKÉ - TECHNICKÉ UNIVERZITY OSTRAVA Algoritmizace prostorových úloh Datové struktury Daniela Szturcová

Více

4a. Makra Visual Basic pro Microsoft Excel Cyklické odkazy a iterace Makra funkce a metody

4a. Makra Visual Basic pro Microsoft Excel Cyklické odkazy a iterace Makra funkce a metody 4a. Makra Visual Basic pro Microsoft Excel Cyklické odkazy a iterace Makra funkce a metody Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Kalina Cyklické odkazy a iterativní výpočty

Více

Zpráva o zhotoveném plnění

Zpráva o zhotoveném plnění Zpráva o zhotoveném plnění Aplikace byla vytvořena v souladu se Smlouvou a na základě průběžných konzultací s pověřenými pracovníky referátu Manuscriptorium. Toto je zpráva o zhotoveném plnění. Autor:

Více

Program a životní cyklus programu

Program a životní cyklus programu Program a životní cyklus programu Program algoritmus zapsaný formálně, srozumitelně pro počítač program se skládá z elementárních kroků Elementární kroky mohou být: instrukce operačního kódu počítače příkazy

Více

1. Znalostní systémy a znalostní inženýrství - úvod. Znalostní systémy. úvodní úvahy a předpoklady. 26. září 2017

1. Znalostní systémy a znalostní inženýrství - úvod. Znalostní systémy. úvodní úvahy a předpoklady. 26. září 2017 Znalostní systémy úvodní úvahy a předpoklady 26. září 2017 1-1 Znalostní systém Definice ZS (Feigenbaum): Znalostní (původně expertní) systémy jsou počítačové programy simulující rozhodovací činnost experta

Více

ČÁST 1. Základy 32bitového programování ve Windows

ČÁST 1. Základy 32bitového programování ve Windows Obsah Úvod 13 ČÁST 1 Základy 32bitového programování ve Windows Kapitola 1 Nástroje pro programování ve Windows 19 První program v Assembleru a jeho kompilace 19 Objektové soubory 23 Direktiva INVOKE 25

Více

TÉMATICKÝ OKRUH Softwarové inženýrství

TÉMATICKÝ OKRUH Softwarové inženýrství TÉMATICKÝ OKRUH Softwarové inženýrství Číslo otázky : 25. Otázka : Komponentní technologie - základní pojmy a principy, metody specifikace komponent. Obsah : 1. Základní pojmy 1.1 Komponenta Komponenta

Více

Modely datové. Další úrovní je logická úroveň Databázové modely Relační, Síťový, Hierarchický. Na fyzické úrovni se jedná o množinu souborů.

Modely datové. Další úrovní je logická úroveň Databázové modely Relační, Síťový, Hierarchický. Na fyzické úrovni se jedná o množinu souborů. Modely datové Existují různé úrovně pohledu na data. Nejvyšší úroveň je úroveň, která zachycuje pouze vztahy a struktury dat samotných. Konceptuální model - E-R model. Další úrovní je logická úroveň Databázové

Více

Virtuální počítač. Uživatelský program Překladač programovacího jazyka Operační systém Interpret makroinstrukcí Procesor. PGS K.

Virtuální počítač. Uživatelský program Překladač programovacího jazyka Operační systém Interpret makroinstrukcí Procesor. PGS K. Virtuální počítač Uživatelský program Překladač programovacího jazyka Operační systém Interpret makroinstrukcí Procesor Virtuální počítač Překladač Překladač : Zdrojový jazyk Cílový jazyk Analytická část:

Více

Maturitní témata Školní rok: 2015/2016

Maturitní témata Školní rok: 2015/2016 Maturitní témata Školní rok: 2015/2016 Ředitel školy: Předmětová komise: Předseda předmětové komise: Předmět: PhDr. Karel Goš Informatika a výpočetní technika Mgr. Ivan Studnička Informatika a výpočetní

Více

11. Přehled prog. jazyků

11. Přehled prog. jazyků Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 11 1 Základy algoritmizace 11. Přehled prog. jazyků doc. Ing. Jiří Vokřínek, Ph.D. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze

Více

Kapitola 1: Úvod. Systém pro správu databáze (Database Management Systém DBMS) Účel databázových systémů

Kapitola 1: Úvod. Systém pro správu databáze (Database Management Systém DBMS) Účel databázových systémů - 1.1 - Kapitola 1: Úvod Účel databázových systémů Pohled na data Modely dat Jazyk pro definici dat (Data Definition Language; DDL) Jazyk pro manipulaci s daty (Data Manipulation Language; DML) Správa

Více

Programování II. Třídy a objekty (objektová orientovanost) 2018/19

Programování II. Třídy a objekty (objektová orientovanost) 2018/19 Programování II Třídy a objekty (objektová orientovanost) 2018/19 Osnova přednášky Objektový přístup (proč potřebujeme objekty). Třídy, objekty,... Příklad. Proč potřebujeme objekty? Udržovatelnost softwaru

Více

Tabulkový procesor. Základní rysy

Tabulkový procesor. Základní rysy Tabulkový procesor Tabulkový procesor je počítačový program zpracovávající data uložená v buňkách tabulky. Program umožňuje použití vzorců pro práci s daty a zobrazuje výsledné hodnoty podle vstupních

Více

Podpora skriptování v Audacity

Podpora skriptování v Audacity Specifikace softwarového díla & Časový plán implementace pro Podpora skriptování v Audacity Audacity je oblíběný editor zvuku, který ovšem v současné době postrádá možnost automatizovaného vykonávání skriptů.

Více

Výroková a predikátová logika - III

Výroková a predikátová logika - III Výroková a predikátová logika - III Petr Gregor KTIML MFF UK ZS 2014/2015 Petr Gregor (KTIML MFF UK) Výroková a predikátová logika - III ZS 2014/2015 1 / 21 Výroková logika Horn-SAT Horn-SAT Jednotková

Více

ALGORITMIZACE A PROGRAMOVÁNÍ

ALGORITMIZACE A PROGRAMOVÁNÍ Metodický list č. 1 Algoritmus a jeho implementace počítačovým programem Základním cílem tohoto tematického celku je vysvětlení pojmů algoritmus a programová implementace algoritmu. Dále je cílem seznámení

Více

Kritéria hodnocení praktické maturitní zkoušky z databázových systémů

Kritéria hodnocení praktické maturitní zkoušky z databázových systémů Kritéria hodnocení praktické maturitní zkoušky z databázových systémů Otázka č. 1 Datový model 1. Správně navržený ERD model dle zadání max. 40 bodů teoretické znalosti konceptuálního modelování správné

Více

Aplikace je program určený pro uživatele. Aplikaci je možné rozdělit na části:

Aplikace je program určený pro uživatele. Aplikaci je možné rozdělit na části: Aplikace Aplikace je program určený pro uživatele. Aplikaci je možné rozdělit na části: prezentační vrstva vstup dat, zobrazení výsledků, uživatelské rozhraní, logika uživatelského rozhraní aplikační vrstva

Více

Databázové aplikace pro internetové prostředí. 01 - PHP úvod, základní princip, vkládání skriptu, komentáře, výpis na obrazovku

Databázové aplikace pro internetové prostředí. 01 - PHP úvod, základní princip, vkládání skriptu, komentáře, výpis na obrazovku Databázové aplikace pro internetové prostředí 01 - PHP úvod, základní princip, vkládání skriptu, komentáře, výpis na obrazovku Projekt: Inovace výuky prostřednictvím ICT Registrační číslo: CZ.1.07/1.5.00/34.250

Více

Seznámení s prostředím dot.net Framework

Seznámení s prostředím dot.net Framework Základy programování v jazyce C# Seznámení s prostředím dot.net Framework PL-Prostředí dot.net - NET Framework Je základním stavebním prvkem, na kterém lze vytvářet software. Jeho součásti a jádro je založené

Více

Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky

Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky Vyučovací hodina 1vyučovací hodina: Opakování z minulé hodiny Nová látka Procvičení nové látky Shrnutí 5 min 20 min 15 min 5 min 2vyučovací hodiny: Opakování z minulé hodiny Nová látka Procvičení nové

Více

DATABÁZOVÉ SYSTÉMY. Metodický list č. 1

DATABÁZOVÉ SYSTÉMY. Metodický list č. 1 Metodický list č. 1 Cíl: Cílem předmětu je získat přehled o možnostech a principech databázového zpracování, získat v tomto směru znalosti potřebné pro informačního manažera. Databázové systémy, databázové

Více

ArcGIS Online Subscription

ArcGIS Online Subscription ArcGIS Online Subscription GIS pro organizace ArcGIS Online je GIS v cloudu. Poskytuje služby GIS v prostředí internetu, ať už se jedná o úložné místo, publikaci mapových a geoprocessingových služeb, nebo

Více

Výroková a predikátová logika - II

Výroková a predikátová logika - II Výroková a predikátová logika - II Petr Gregor KTIML MFF UK ZS 2015/2016 Petr Gregor (KTIML MFF UK) Výroková a predikátová logika - II ZS 2015/2016 1 / 18 Základní syntax Jazyk Výroková logika je logikou

Více

Obsah. Zpracoval:

Obsah. Zpracoval: Zpracoval: houzvjir@fel.cvut.cz 03. Modelem řízený vývoj. Doménový (business), konceptuální (analytický) a logický (návrhový) model. Vize projektu. (A7B36SIN) Obsah Modelem řízený vývoj... 2 Cíl MDD, proč

Více

Wichterlovo gymnázium, Ostrava-Poruba, příspěvková organizace. Maturitní otázky z předmětu INFORMATIKA A VÝPOČETNÍ TECHNIKA

Wichterlovo gymnázium, Ostrava-Poruba, příspěvková organizace. Maturitní otázky z předmětu INFORMATIKA A VÝPOČETNÍ TECHNIKA Wichterlovo gymnázium, Ostrava-Poruba, příspěvková organizace Maturitní otázky z předmětu INFORMATIKA A VÝPOČETNÍ TECHNIKA 1. Algoritmus a jeho vlastnosti algoritmus a jeho vlastnosti, formy zápisu algoritmu

Více

SK01-KA O1 Analýza potřeb. Shrnutí. tým BCIME

SK01-KA O1 Analýza potřeb. Shrnutí. tým BCIME 2018-1-SK01-KA203-046318 O1 Analýza potřeb Shrnutí tým BCIME Vyloučení odpovědnosti: Podpora Evropské komise pro vydání této publikace nepředstavuje její souhlas s obsahem, který odráží pouze názory autorů.

Více

Nové jazykové brány do Caché. Daniel Kutáč

Nové jazykové brány do Caché. Daniel Kutáč Nové jazykové brány do Caché Daniel Kutáč O čem budeme mluvit.net T/SQL Perl Python MultiValue Basic Téma.NET provider .NET Provider Co lze již dnes Factory / VisM ODBC.NET Web Services Factory a VisM

Více

Programovací jazyky Přehled a vývoj

Programovací jazyky Přehled a vývoj Programovací jazyky Přehled a vývoj 1 Programování a programovací jazyk Historie a současnost programovacích jazyků Objektově orientované a vizuální programování Značkovací a skriptovací jazyky 2 Programování

Více

UML - opakování I N G. M A R T I N M O L H A N E C, C S C. Y 1 3 A N W

UML - opakování I N G. M A R T I N M O L H A N E C, C S C. Y 1 3 A N W UML - opakování I N G. M A R T I N M O L H A N E C, C S C. Y 1 3 A N W Co je to UML Evoluce UML Diagram komponent Diagram odbavení Diagram tříd Aktivity diagram Stavový diagram Sekvenční diagram Diagram

Více

Simluátor Trilobota. (projekt do předmětu ROB)

Simluátor Trilobota. (projekt do předmětu ROB) Simluátor Trilobota (projekt do předmětu ROB) Kamil Dudka Jakub Filák xdudka00 xfilak01 BRNO 2008 1 Úvod Jako školní týmový projekt jsme si zvolili simulátor trilobota 1 a jeho prostředí. Simulátor komunikuje

Více

Kritéria hodnocení praktické maturitní zkoušky z databázových systémů

Kritéria hodnocení praktické maturitní zkoušky z databázových systémů Kritéria hodnocení praktické maturitní zkoušky z databázových systémů Otázka č. 1 Datový model 1. Správně navržený ERD model dle zadání max. 40 bodů teoretické znalosti konceptuálního modelování správné

Více

Programování II. Modularita 2017/18

Programování II. Modularita 2017/18 Programování II Modularita 2017/18 Modul? Osnova přednášky Vývoj programování Modularita Příklad Vývoj programování Paradigmata programování Jak a proč se jazyky vyvíjejí? V čem se OOP liší od předchozích

Více

Softwarové komponenty a Internet

Softwarové komponenty a Internet Softwarové komponenty a Internet Doc. Dr. Ing. Miroslav Beneš Katedra informatiky FEI VŠB-TU Ostrava Miroslav.Benes@vsb.cz Obsah přednášky Motivace Vývoj přístupů k tvorbě programů Definice komponenty

Více

CineStar Černý Most Praha 31. 10. 2012

CineStar Černý Most Praha 31. 10. 2012 CineStar Černý Most Praha 31. 10. 2012 Stejná aplikace na více zařízeních Michael Juřek Microsoft s.r.o. Potřebné ingredience 1. Portable libraries 2. Návrhový vzor MVVM 3. XAML 4. Abstrakce platformy

Více

Využití aplikace SketchUp pro tvorbu jednoduchého informačního systému

Využití aplikace SketchUp pro tvorbu jednoduchého informačního systému Využití aplikace SketchUp pro tvorbu jednoduchého informačního systému Ing. Pavel Tobiáš Digitální technologie v geoinformatice, kartografii a dálkovém průzkumu Země 30. října 2014 Pavel Tobiáš, katedra

Více

EXTRAKT z mezinárodní normy

EXTRAKT z mezinárodní normy EXTRAKT z mezinárodní normy Extrakt nenahrazuje samotnou technickou normu, je pouze informativním ICS 03.220.01; 35.240.60 materiálem o normě. Inteligentní dopravní systémy Požadavky na ITS centrální datové

Více

IB111 Úvod do programování skrze Python Přednáška 13

IB111 Úvod do programování skrze Python Přednáška 13 IB111 Úvod do programování skrze Python Přednáška 13 Programovací jazyky Nikola Beneš 14. prosinec 2016 IB111 přednáška 13: programovací jazyky 14. prosinec 2016 1 / 21 Osnova dnešní přednášky Programovací

Více

1. Webové služby. K čemu slouží? 2. RPC Web Service. 3. SOA Web Service. 4. RESTful Web services

1. Webové služby. K čemu slouží? 2. RPC Web Service. 3. SOA Web Service. 4. RESTful Web services 13. Webové služby. K čemu slouží? Popis a vyhledávání služeb. Co je a k čemu slouží orchestrace a choreografie služeb. Technologie pro implementaci služeb 1. Webové služby. K čemu slouží? Definice WS -

Více

VÝUKOVÝ MATERIÁL. Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 Číslo projektu

VÝUKOVÝ MATERIÁL. Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 Číslo projektu VÝUKOVÝ MATERIÁL Identifikační údaje školy Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková organizace Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632

Více

Příloha 6. Palety nástrojů

Příloha 6. Palety nástrojů Příloha 6. Palety nástrojů Palety nástrojů v IDE poskytují zkrácení pro příkazy nabídky. Příkazy jsou rozděleny do několika palet nástrojů, které mohou být nezávisle přeskupeny nebo vloženy do plovoucích

Více

Obsah. Úvod 11 Zpětná vazba od čtenářů 13 Errata 14 Poznámka ke kódům 14

Obsah. Úvod 11 Zpětná vazba od čtenářů 13 Errata 14 Poznámka ke kódům 14 Úvod 11 Zpětná vazba od čtenářů 13 Errata 14 Poznámka ke kódům 14 KAPITOLA 1 Nové rysy Windows 8 a 8.1 15 Nové uživatelské rozhraní 15 Rychlý náběh po zapnutí 16 Informace v prvním sledu 16 Nové prezentační

Více

Implementace systémů HIPS: historie a současnost. Martin Dráb

Implementace systémů HIPS: historie a současnost. Martin Dráb Implementace systémů HIPS: historie a současnost Martin Dráb martin.drab@secit.sk HIPS: základní definice Majoritně používané operační systémy disponují bezpečnostními modely, které dovolují jednotlivým

Více

Komponentový návrh SW

Komponentový návrh SW Komponentový návrh SW Komponentový návrh SW Komponenty jsou kompletně specifikované pomocí interface Jejich funkčnost je nezávislá na programovacím jazyku a mohou být integrované do toho samého systému

Více

7 Jazyk UML (Unified Modeling Language)

7 Jazyk UML (Unified Modeling Language) 7 Jazyk UML (Unified Modeling Language) 7.1 Základní charakteristika jazyka Motivace - vznik řady OO metod a metodologií (konec 80. let a první polovina 90.let) podobné notace vyjadřující totéž, komplikující

Více

PRODUKTY. Tovek Tools

PRODUKTY. Tovek Tools Analyst Pack je desktopovou aplikací určenou k vyhledávání informací, tvorbě různých typů analýz a vytváření přehledů a rešerší. Jsou vhodné pro práci i s velkým objemem textových dat z různorodých informačních

Více

Platforma.NET 11.NET Framework 11 Visual Basic.NET Základní principy a syntaxe 13

Platforma.NET 11.NET Framework 11 Visual Basic.NET Základní principy a syntaxe 13 Obsah Úvod 11 Platforma.NET 11.NET Framework 11 Visual Basic.NET 12 1 Základní principy a syntaxe 13 Typový systém 13 Hodnotové typy 13 Struktury 15 Výčtové typy 15 Referenční typy 15 Konstanty 16 Deklarace

Více

Bridge. Známý jako. Účel. Použitelnost. Handle/Body

Bridge. Známý jako. Účel. Použitelnost. Handle/Body Bridge Bridge Známý jako Handle/Body Účel odděluje abstrakci (rozhraní a jeho sémantiku) od její konkrétní implementace předchází zbytečnému nárůstu počtu tříd při přidávání implementací používá se v době

Více

Systémy pro tvorbu digitálních knihoven

Systémy pro tvorbu digitálních knihoven Systémy pro tvorbu digitálních knihoven Vlastimil Krejčíř, krejcir@ics.muni.cz Ústav výpočetní techniky, Masarykova univerzita, Brno INFORUM 2006, Praha Obsah přednášky Úvod Fedora DSpace EPrints CDSware

Více

IB111 Programování a algoritmizace. Programovací jazyky

IB111 Programování a algoritmizace. Programovací jazyky IB111 Programování a algoritmizace Programovací jazyky Programovací jazyky Programovací jazyk Prostředek pro zápis algoritmů, jež mohou být provedeny na počítači Program Zápis algoritmu v programovacím

Více

Elektronické publikování. doc. RNDr. Petr Šaloun, Ph.D. katedra informatiky FEI VŠB TU Ostrava

Elektronické publikování. doc. RNDr. Petr Šaloun, Ph.D. katedra informatiky FEI VŠB TU Ostrava Elektronické publikování doc. RNDr. Petr Šaloun, Ph.D. katedra informatiky FEI VŠB TU Ostrava www.cs.vsb.cz/saloun Základní pojmy Zpracování textu myšlenka, typografický návrh, realizace, znovupoužití.

Více

Profilová část maturitní zkoušky 2017/2018

Profilová část maturitní zkoušky 2017/2018 Střední průmyslová škola, Přerov, Havlíčkova 2 751 52 Přerov Profilová část maturitní zkoušky 2017/2018 TEMATICKÉ OKRUHY A HODNOTÍCÍ KRITÉRIA Studijní obor: 78-42-M/01 Technické lyceum Předmět: TECHNIKA

Více

InformatikaaVT(1) Cílem předmětu je: Žáci:

InformatikaaVT(1) Cílem předmětu je: Žáci: InformatikaaVT(1) Cílem předmětu je: seznámení žáků se základními pojmy informatiky a VT poskytnutí teoretických znalostí a praktických dovedností nezbytných při práci s informacemi azařízeními VT Žáci:

Více