Mendelova univerzita v Brně Provozně ekonomická fakulta
Pokročilý databázový systém pro správu textových dat v přirozeném jazyce Bakalářská práce
Vedoucí práce:
Autor:
doc. Ing. Jan Žižka, CSc.
Jiří Adolf
Brno 2011
Rád bych na tomto místě poděkoval vedoucímu mé práce, doc. Ing. Janu Žižkovi, CSc. za cenné rady a připomínky.
Prohlašuji, že jsem tuto bakalářskou práci řešil samostatně a za použití literatury uvedené v seznamu na konci práce. V Brně dne 8. ledna 2011
__________________
Abstract ADOLF, J. Advanced database system for managing text data in natural language. Bachelor thesis. Brno: Mendelu, 2011. This thesis deals with database system for managing and analysing text files in natural language. Theoretical part presents the reader with the necessary theoretical basis for understanding the principles of databases. Furthermore, the theoretical part deals with the concept of natural language. The practical part solves the system for managing text files using the open-source technology. The emphasis in the development of application is put on easy and intuitive userfriendly interface allowing usage of the system not only by interested person in field of informatics, but also by a regular user. Keywords Database system, web application, database design, natural language, NLP, SQL, PHP, MySQL.
Abstrakt ADOLF, J. Pokročilý databázový systém pro správu textových dat v přirozeném jazyce. Bakalářská práce. Brno: Mendelu v Brně, 2011. Práce se zabývá návrhem databázového systému pro správu a analýzu textových souborů v přirozeném jazyce. V teoretické části seznamuje čtenáře s nezbytným teoretickým základem pro pochopení principů fungování databáze. Dále teoretická část práce pojednává o pojmu přirozený jazyk. Praktická část se zabývá návrhem systému pro správu textových souborů s využitím open-source technologií. Důraz při tvorbě aplikace je kladen na co nejsnadnější a intuitivní uživatelské rozhraní, umožňující využívat systém uživatelem nejen z oboru informatiky, ale i běžným uživatelem. Klíčová slova Databázový systém, webová aplikace, návrh, přirozený jazyk, NLP, SQL, MySQL, PHP.
vi
Obsah
Obsah 1
Úvod a cíl práce
1
1.1
Úvod........................................................................................................... 1
1.2
Cíl práce ..................................................................................................... 1
2
Základní pojmy
3
3
Teoretická východiska práce
4
3.1
Typy databází.............................................................................................4
3.2
Databázové modely....................................................................................4
3.2.1
Hierarchický databázový model ........................................................4
3.2.2
Síťový databázový model ...................................................................5
3.2.3
Relační databázový model .................................................................5
3.2.4
Objektově orientovaný databázový model ........................................6
3.2.5
Objektově relační databázový model.................................................6
3.3
Systémy pro správu relační databáze........................................................7
3.4
Návrh databáze......................................................................................... 8
3.4.1
Transakce......................................................................................... 12
3.4.2
Textové databáze ............................................................................. 14
3.5
4
Počítačové zpracování přirozeného jazyka ............................................. 15
3.5.1
Roviny analýzy jazyka...................................................................... 17
3.5.2
Reprezentace a porozumění ............................................................18
3.5.3
Data pro zpracování přirozeného jazyka – korpusy ....................... 19
Návrh řešení
20
4.1
SQL (Structured Query Language)........................................................ 20
4.2
MySQL .................................................................................................... 20
4.2.1 4.3
Architektura MySQL serveru........................................................... 21
PHP ..........................................................................................................22
Obsah
5
vii
Implementace 5.1
Datová vrstva .......................................................................................... 23
5.1.1
Typy sloupců a dat v MySQL .......................................................... 23
5.1.2
Vytváření tabulek ............................................................................ 23
5.1.3
Připojení k databázi ........................................................................ 27
5.1.4
Práce s databází............................................................................... 28
5.2
Aplikační vrstva ...................................................................................... 29
5.2.1 6
23
Třída PHP pro analýzu.................................................................... 29
Diskuze a závěr
33
6.1
Diskuze a rozšiřitelnost návrhu.............................................................. 33
6.2
Závěr ....................................................................................................... 33
7
Literatura
34
A
Použité nástroje
37
B
Aplikace
38
viii
Seznam obrázků
Seznam obrázků Obr. 1 Hierarchický datový model databáze
5
Obr. 2
Relační databázový model, vztah M:N
6
Obr. 3
Typická architektura klient/server
7
Obr. 4
Zpracování požadavku READ
8
Obr. 5
Hierarchie normalizací
10
Obr. 6
Transakční model
12
Obr. 7
Architektura MySQL serveru
22
Obr. 8
Schéma vytvořené databáze
26
Obr. 9
Ukázka textových dat v přirozeném jazyce
32
Obr. 10
Kontrolní panel aplikace XAMPP
37
Obr. 11
Rozhraní aplikace
38
Obr. 12
Průběh nahrávání souborů na server
38
Obr. 13
Seznam nahraných souborů
39
Obr. 14
Výpis zpracovaného souboru bez porovnávání
40
Obr. 15
Zpracování souboru podle známých hesel
41
Obr. 16
Práce se slovníkem
42
Obr. 17
Výpis a editace ignorovaných slov
42
Seznam tabulek
ix
Seznam tabulek Tab. 1 Základní rozdělení SQL příkazů
20
Úvod a cíl práce
1
1 Úvod a cíl práce 1.1
Úvod
V dnešní době plné informací se neobejdeme bez úložišť, které by umožňovaly efektivně ukládat, třídit, zpracovávat, analyzovat a třídit tyto informace. Předchůdci dnešních databází na počítačích jsou různé kartotéky, které však již v dnešní době svými možnostmi nedostačují. Proto dochází k rozvoji databázových systémů v počítačích. Databázové systémy představují v současnosti základní a nedílnou součást informačních systémů. Dá se říci, že databázový systém tvoří srdce těchto systémů. Rozsah nasazení spatřujeme dnes v téměř každých jednoduchých aplikacích (obchod, bankovnictví, pojišťovny), až po kritické aplikace (armáda, doprava, řízení letového provozu, nemocnice). Vývoj databázových technologií během posledních několika let vedl ke vzniku výkonnějších databázových systémů, které je možné ovládat intuitivněji a téměř bez znalostí potřebných pro vytvoření efektivního systému. Oblast databází zahrnuje dnes desítky let bohaté praxe a výzkumu. Těžiště vývoje databázového softwaru leží hlavně v 70. letech, kdy vznikaly první algoritmy, pojmy a metody, které umožnily oddělit data od aplikace. (Pokorný, 2003) V dalších 20 letech dosáhl trh s databázovým softwarem neobvyklého rozkvětu, vznikají gigantické firmy orientující se na oblast databází jako je Oracle, Informix, Sybase a spolu s dalšími firmami jako je IBM a Microsoft určují základní databázové trendy. Pod pojmem databáze si nelze představit pouze data zpracovaná vhodným softwarem, je zapotřebí budovat databázi systematickým způsobem, který splňuje předem daná kritéria. Svět databázových systémů se v posledních 15 letech soustředil hlavně na rozvoj relačních systémů, kde je na data nahlíženo jako na tabulky. V 90. letech nastupují objektové databázové systémy. Tyto systémy navazují na myšlenku objektově orientovaného programování, které v poslední době velmi rychle dohání klasický relační model. (Pokorný, 2003) S rozvojem počítačové lingvistiky dochází k účelnému využívání databází jako úložiště textových dat, které lze třídit a analyzovat. Data mohou být uložena ve formě přirozeného jazyka.
1.2
Cíl práce
Cílem této práce je návrh a realizace databázového systému, který je schopný ukládat, aktualizovat, rušit a vyhledávat textová data v libovolném přirozeném jazyce. Výsledkem bude webová aplikace, která nabídne uživateli snadné a jednoduché rozhraní, možnost nahrát na server textové dokumenty určené pro analýzu a výběr souborů, které chce zpracovat. Výsledkem analýzy bude přehledný výpis hesel včetně frekvenční charakteristiky s grafickým výstupem, umožňujícím snadnější vizuální orientaci. Analýza bude vycházet ze slovníků,
2
Úvod a cíl práce
které si uživatel může libovolně upravovat. Dostane možnost kontroly obsahu těchto slovníků, tedy přidávat, vyhledávat a mazat hesla, včetně editace ignorovaných hesel, pro které se nebude provádět analýza. Návrh implementace komponent databáze bude popsán postupně a logicky uspořádán. Pro názornost a srozumitelnost je práce doplněna ilustračními obrázky. Můj systém tedy může posloužit pro libovolného uživatele, který zkoumá formální strukturu jazyka z hlediska výskytu jednotlivých slov a jejich frekvenční charakteristiky a na tomto základě může usuzovat o významu a obsahu textových souborů.
Základní pojmy
3
2 Základní pojmy ACID je vlastnost databázových transakcí, splňující požadavky na atomicitu, konzistentnost, izolovanost a trvalost. Důvodem je zabezpečení integrity a správnosti dat v databázi. DBMS (Database Management System) – softwarový systém, který uživateli umožňuje definovat, vytvářet a udržovat databázi a poskytuje řízený přístup k této databázi. (Conolly, Begg, Holowczak, 2009) ERD (Entity-Relationship Diagram popř. ERM – Entity Relationship model) – prostředek softwarového inženýrství pro abstraktní a konceptuální zobrazení znázornění dat (zejm. při tvorbě databázového schématu). OCR – optické rozpoznávání znaků (z angl. Optical Character Recognition) je metoda, která pomocí scanneru umožňuje digitalizaci tištěných textů, s nimiž pak lze pracovat jako s normálním počítačovým textem. Počítačový program převádí obraz buď automaticky, nebo se musí naučit rozpoznávat znaky. ODBC (Open Database Conectivity) je standardizované softwarové rozhraní pro programování aplikací pro přístup k databázovým systémům. Snahou je poskytnout přístup, který je nezávislý na platformě. NLP (Natural language processing) je obor na pomezí počítačové vědy a lingvistiky, zabývající se vztahem mezi počítačem a lidskou řečí. Některé algoritmy při zpracování přirozeného jazyka spadají do oblasti umělé inteligence. PHP (rekurzivní zkratka PHP: Hypertext Preprocessor) – skriptovací programovací jazyk určený zejména pro tvorbu dynamických webových stránek. SQL (Structured Query Language) - je strukturovaný standardizovaný dotazovací jazyk, používaný pro obsluhu dat v relačních databázích.
4
Teoretická východiska práce
3 Teoretická východiska práce Pro pochopení principu databází je zapotřebí seznámit se s nezbytným obecným teoretickým základem databází.
3.1
Typy databází
Databází rozumíme soubor dat používaný k modelování některých typů organizačních struktur, organizačních procesů, můžeme říct, k modelování objektů skutečného světa a vztahy mezi těmito objekty. Zde nezáleží na tom, zda ke shromažďování a ukládání použijeme papír nebo zvolíme nějaké softwarové řešení. Ve správě databází se vyskytují nejčastěji dva typy databází – operační databáze a analytické databáze. Operační databáze – jsou základním prvkem mnoha firem, organizací a institucí. Tento typ je používán v online zpracování transakcí (On Line Transaction Processing, OLTP), tedy v situacích, kdy je potřeba modifikovat a spravovat databázi každý den. Data v databázích jsou dynamická, odpovídající aktuálnímu stavu informací. Typické organizace využívající těchto databází jsou např. letenkové servery, nemocnice, obchody, neboť se jejich datová základna neustále mění. (Hernandez, 2006) Analytické databáze – tento typ databáze je nejčastěji využíván v online analytickém zpracování (On Line Analytical Processing, OLAP), kdy je potřeba ukládat a dohledávat starší časové závislá data. Tato databáze pracuje převážně se statickými daty, tedy s daty, která se nemění, či jen velmi zřídka. Informace získané z takové databáze odrážejí obraz dat v určitém čase. Tyto systémy mohou využívat chemické laboratoře, marketingové a další analytické firmy. (Hernandez, 2006)
3.2
Databázové modely
Databázový model je kolekce pojmů sloužících k modelování. Lze jej chápat jako formální, či matematický aparát. Výsledkem tohoto modelování je databázové schéma, tj. určitý popis struktury dat. Podle chronologického hlediska rozlišujeme hierarchický databázový model, síťový databázový model a relační databázový model. Jednotlivé modely nyní stručně přiblížím. 3.2.1
Hierarchický databázový model
Pracuje s typem záznam, kde lze vytvářet odkazy mezi jednotlivými segmenty pouze jedním směrem od předků k následníkům. Vztah je v tomto typu databáze reprezentován termíny rodič a potomek. Výhodou je rychlé získávání dat a zabudovaná referenční integrita. Hierarchické databáze se dobře hodily pro ukládání na kazetopáskových jednotkách v sálových počítačích v 70. letech. Sice byly
Teoretická východiska práce
5
velmi rychlé a mnoha případech užitečné, bylo jasné, že pro zvládnutí narůstajících problémů redundance a komplexnosti vztahů mezi daty je potřeba nový databázový model.
Obr. 1
3.2.2
Hierarchický datový model databáze
Síťový databázový model
Tento model se pokusil o vyřešení problémů hierarchické databáze. Struktura této databáze je vyjádřena pomocí uzlů a množinových struktur. Uzel reprezentuje soubor záznamů a množinová struktura vyjadřuje a zřizuje vztah v síťové databázi. Je to snadno pochopitelná konstrukce, která vytváří vztah mezi dvěma uzly tak, že jeden uzel je označen jako vlastník a druhý jako prvek. Množinová struktura podporuje vztah 1:N, neboli jeden záznam v uzlu vlastník může být v relaci k jednomu, či více záznamům v uzlu člen. Na druhé straně, jeden záznam v uzlu člen je ve vztahu pouze k jednomu záznamu v uzlu typu vlastník. Přestože síťový databázový model byl nepochybně krokem kupředu, několik odborníků na databáze věřilo, že musí existovat lepší způsob ke zpracování a udržování velkých objemů dat. 3.2.3
Relační databázový model
Tento model byl poprvé představen v roce 1969 a je v současnosti nejrozšířenějším modelem používaným při návrhu a správě databází. Duchovním otcem tohoto pohledu na databázi, Dr. Edgar F. Codd, byl výzkumníkem společnosti IBM koncem a 60. let se zabýval novými metodami zpracování velkého množství dat. Protože byl matematik, věřil, že problémy s redundancí dat, nízkou integritou může vyřešit použitím matematického aparátu. Relační databáze ukládá data ve vztazích. Každý vztah je složen z uspořádaných n-tic, neboli záznamů a atributů neboli polí. Skutečné fyzické uspořádání těchto komponent není podstatné. Každý záznam v tabulce je definován polem, které obsahuje unikátní hodnotu (klíč). Relační model rozděluje vztahy na 1:1, 1:N, M:N. Výhody tohoto modelu lze shrnout do několika kroků:
6
Teoretická východiska práce
Zabudovaná víceúrovňová integrita1 – je zabudována do modelu dat, aby se zajistila přesnost dat. Na úrovni tabulek ošetřuje duplicitu a chybějící hodnoty primárních klíčů. Logická a fyzická nezávislost dat na databázové aplikaci – změny uživatele v logickém návrhu neovlivní aplikaci postavenou na původní logický návrh. Garantovaná konzistence a přesnost dat – data jsou konzistentní a přesná kvůli různým úrovním integrity, které se dají v databázi vynutit. Snadné získávání dat – uživatel může určit zdroj, ze kterého se data získají (určitá tabulka, libovolný počet tabulek ve vztahu). (Hernandez, 2006)
Obr. 2
Relační databázový model, vztah M:N
3.2.4
Objektově orientovaný databázový model
Tento model zahrnuje všechny charakteristiky objektově orientovaných jazyků a degraduje relační databázi na skladiště dat. Vývojář je odpovědný za všechny oblasti databáze, včetně množin operací, které pracují s daty. V tomto modelu neexistuje jasné rozdělení mezi databázovým programem a aplikačním softwarem. Dalším rozdílem oproti relačnímu modelu je absence teoretického základu v matematických disciplínách. Příkladem objektově orientovaného databázového systému je např. UniData od IBM. 3.2.5
Objektově relační databázový model
Objektově-relační databáze jsou zatím posledním vývojovým článkem v historii databází, která částečně vychází z relačního modelu. Jejím cílem je využít výhody v pružnosti, produktivitě a provozních přínosech objektově orientovaného modelování, integrovat databázové služby do systémů výroby a dalších, nových aplikací. Pro tento typ modelování je charakteristická zejména bohatost typů integritou můžeme chápat a) stav, kdy přečtená data jsou stejná s daty uloženými (nedochází k neočekávaným změnám); b) kompletnost dat; c) zachování dat pro zamýšlené použití. V kontextu relačních databází uvažujeme ještě integritu entitní, referenční a doménovou. 1
Teoretická východiska práce
7
objektů, které se vývojáři nabízejí. Objektově-relační systémy řízení báze dat se pokoušejí překlenout mezeru mezi relační technologií a objektově orientovaném systému řízení báze dat, tím, že přidávají možnost ukládat objekty do relační databáze. Výrobci relačních databází potřebovali integrovat nejen klasická tabulková data, ale i speciální objekty, jako např. časové řady, prostorová data, či binární objekty, mezi které patří audio, video, obrázky či applety. Tímto se otevřela nová, slibná třída databázových systémů, pokrývající široké spektrum aplikací. (Stonebaker, Brown, 2000)
3.3
Systémy pro správu relační databáze
Systém pro správu relační databáze (dále jen „RDBMS“ – Relational Database Management System) je program, který se používá k vytvoření, udržování, modifikování a správě relační databáze. Mnoho těchto programů také zajišťuje i nástroje pro vytváření aplikací pro koncového uživatele, které pracují s daty uloženými v databázi. Počátky RDBMS jsou v 70. letech reprezentovány systémem R od IBM a systémem INGRES z univerzity v Berkeley.
Obr. 3
Typická architektura klient/server
S postupným uznáním relačních databází vznikají komerční produkty jako je Oracle a DB2. S neustálým vývojem v této oblasti vznikla potřeba sdílet data a zrodila se myšlenka centrálně uložené databáze, ke které by uživatelé měli vzdálený přístup. Vývojáři na tento požadavek odpověděli návrhem RDBMS klient/server. Jak ukazuje Obr. č. 3, v tomto typu systému jsou data uložena na počítači sloužícím jako server, na kterém je databáze, uživatelé (klienti) s daty pracují pomocí aplikací spuštěných na jejich vlastních počítačích. Vývojář
8
Teoretická východiska práce
databáze používá RDBMS klient/server k vytvoření a správě databáze a vytvoření provázané aplikace pro koncového uživatele. Mezi konkrétní produkty v této oblasti patří Microsoft SQL Server od společnosti Microsoft Corporation a Oracle Application Server od společnosti Oracle Corporation. Zpracování požadavků, které se vyskytuje v aplikaci, má přímou souvislost s architekturou databázového systému. Systém řízení báze dat musí být schopný interpretovat požadavek, který reprezentuje externí pohled s použitím externího schématu, konceptuálního a interního schématu na konkrétním požadavků zpřístupnění, resp. zápisu dat do externí paměti. Na následujícím obrázku je zobrazen příklad zpracování požadavku pro operaci READ s použitím příslušných schémat ve vazbě na operační systém.
Obr. 4
3.4
Zpracování požadavku READ
Návrh databáze
Abychom mohli vytvořit konzistentní, integritní a přesnou databázi, je potřeba návrhu databáze věnovat velkou pozornost. Tradiční metody návrhu obsahují obvykle tři fáze: analýzu požadavků, datové modelování a normalizaci. Fáze modelování zahrnuje modelování databázové struktury pomocí metod pro modelování dat, např. diagram vztahů mezi entitami (ER diagram). Údaje, které uchováváme v databázi, nazýváme data. Jsou statická v tom smyslu, že se nemění až do té doby, kdy je změníme, buď ručně, nebo nějakým procesem. Data sama o sobě jsou nesmyslná, je zapotřebí je nějakým způsobem zpracovat.
Teoretická východiska práce
9
Informace jsou zpracovaná data v takové formě, že jsou srozumitelná a použitelná. Jsou dynamické, podle toho, jak změníme data uložená v databázi a také ve smyslu, že se dají zpracovat a prezentovat více možnými způsoby. Informace můžeme získat jako výsledek dotazu SELECT, zobrazit ji ve formuláři, vytisknout ji. Důležité je ale to, že se jedná o zpracovaná data. V relačním modelu dat jsou data uložena ve vztazích, které jsou zaneseny do tabulek. Každý vztah sestává z n-tic (záznamů), a atributů. Každá n-tice v tabulce je jednoznačně a unikátně identifikována pomocí primárního klíče. Data v relační databázi mohou existovat nezávisle na tom, jak jsou skutečně fyzicky uložena v počítači, což je pro uživatele nespornou výhodou. Entita, která je modelována tabulkou, může být buď objekt, nebo událost. Pokud se jedná o objekt, reprezentuje tabulka hmatatelný předmět z reálného světa jako např. osobu, knihu, místo nebo věc. Každý typ objektu má nějaké vlastnosti, které můžeme uložit jako data. Ta se potom dají zpracovat rozmanitými způsoby. Pokud je entitou tabulky událost, tak reprezentujeme něco, co se událo v nějakém čase a co má vlastnosti, které můžeme zaznamenat. Tyto vlastnosti můžeme opět zpracovávat stejným způsobem jako u objektů. Rozlišujeme datové tabulky – slouží k dodávání informací a validační tabulky (číselníky) – ukládají data, která slouží k implementaci integrity dat. Pod klíčem si lze představit pole nebo skupinu polí, která unikátně identifikuje každý záznam v tabulce. Pokud je klíč složen ze dvou nebo více polí, tak se jedná o složený primární klíč. Primární klíč je absolutně nejdůležitější klíč v celé tabulce, který vynucuje integritu na úrovni tabulky a pomáhá zřizovat vztahy s ostatními tabulkami v databázi. Každá tabulka databáze musí mít definován primární klíč. Vztah mezi tabulkami existuje v případě, že můžeme propojit záznamy z první tabulky se záznamy z druhé tabulky. Prostředky pro zřízení vztahů mohou být primární a cizí klíče, nebo třetí tzv. asociativní (také dekompoziční) tabulka. Vztahy umožňují vytvářet vícetabulkové pohledy a jsou důležité pro integritu dat, neboť pomáhají redukovat nadbytečná data a eliminovat duplicitu. Známe tři typy vztahů, nejjednodušším případem je vztah 1:1; ten se vyskytne, pokud záznam v první tabulce je ve vztahu pouze k jednomu záznamu ve druhé tabulce. Zdrojová tabulka je „rodičovská“ a druhá tabulka je tabulka „potomka“. Vztah 1:N představuje vztah typu „jedna k více“ kdy jednu instanci první entity můžeme asociovat s žádnou, jednou nebo více instancemi druhé entity. Ve většině normalizačních postupů se vytvářejí právě vztahy typu jedna k více. Dobře identifikovaný vztah typu jedna k více s sebou přináší jen málokdy problémy. Je ale nezbytné popsat na každé straně jeho povinnost (volitelnost). V reálném světě nalezneme mnoho příkladů vztahů typu více k více. Např. student může mít zapsáno několik různých předmětů a naopak předmět může mít zapsáno různé množství studentů. V relační databázi se ale tento typ vztahu M:N nedá přímo implementovat. Modelovat se dá pomocí speciální mezilehlé relace, která má poté s každou z původních entit právě vztah 1:N. Účast tabulky může být buď povinná, nebo volitelná. Říkáme, že účast jedné tabulky je povinná v případě, že předtím, než můžeme vložit záznam do druhé tabulky, musíme nejprve vložit záznam do první tabulky. V případě volitelné účasti, nemusíme
10
Teoretická východiska práce
před vkládáním do druhé připojené tabulky vkládat žádné údaje do první tabulky. (Pokorný, 2003) Jak uvádí Hernandez, integritou dat rozumíme platnost, konzistentnost a přesnost dat v databázi. Platí, že stupeň přesnosti informací získávaných z databáze je v přímé úměře ke stupni integrity dat uložených v databázi. Integrita dat je jedním z nejdůležitějších aspektů procesu logického návrhu databáze a nesmí být podceňována, přehlížena či opomíjena, neboť hrozí nebezpečí výskytu chyb, které jsou těžko naleznutelné a odstranitelné. Existují čtyři typy integrity, které se implementují v procesu návrhu databáze. Integritou na úrovni tabulky zajistíme neexistenci duplicitních záznamů a pole, které identifikuje každý záznam v tabulce, je jedinečné a nikdy neobsahuje hodnotu NULL. Integrita na úrovni pole zajišťuje spolehlivou, platnou, konzistentní strukturu každého pole ve stejném datovém typu. Integrita na úrovni vztahů zajišťuje spolehlivý a synchronizovaný vztah mezi tabulkami i v případě modifikací nebo mazání údajů z tabulek. Posledním typem integrity jsou tzv. Business pravidla, která zavádějí omezení na jisté aspekty databáze založené na způsobu, jakým organizace získává a používá data. Tato omezení mohou ovlivňovat některé prvky databáze jako je např. rozsah a typ hodnot, uložených v poli, typ účasti a stupeň účasti každé tabulky ve vztahu či typ synchronizace používaný pro integritu na úrovni vztahů v některých vztazích. (Hernandez, 2006) Normalizace je proces, který umožňuje vytvářet datový model. Proces normalizace spočívá v analýze funkčních závislostí všech relací datového modelu a testů, zda příslušné relace odpovídají dané normální formě. Normální forma určuje vlastnost relace, týkající se výskytu daného typu funkční závislosti. Dobře navržený datový model by měl mít každou relaci alespoň ve třetí normální formě (3NF). Pozdější výzkum v této oblasti zavedl i silnější definici 3NF, tzv. Boyce-Coddovu normální formu (BCNF), kterou navrhli Boyce a Codd. Později byla navržena i čtvrtá a pátá normální forma (4NF, 5NF) na základě vícehodnotových a spojovacích funkčních závislostí.
Obr. 5
Hierarchie normalizací
Relace, které nesplňují podmínky příslušné normální formy jsou dekomponovány na menší relace, které splňují podmínky:
Teoretická východiska práce
11
• bezztrátového spojení v případě potřeby tvorby odvozených relací, • zachování funkčních závislostí, tzn. všechny funkční závislosti budou v datovém modelu zachovány i po dekompozici. Pro každou relaci musíme definovat i příslušnou normální formu, které odpovídá. Na základě funkčních závislostí a jejich vlastností můžeme přistoupit k racionalizaci relačních schémat. Pokud předpokládáme, že každá relace má nějaké funkční závislosti a každá relace má definován primární klíč, potom můžeme vhodně navrhnout dekompozici relací tak, abychom získali vhodný datový model. Nyní se zaměřím na definice normálních forem, podle kterých můžeme posuzovat relace. První normální forma (1NF) – „Relace je v 1. normální formě tehdy a jen tehdy, pokud neobsahuje opakující se podskupiny dat, tedy pokud každý atribut je atomický.“ V případě, že zkoumaná relace nesplňuje podmínku definice 1NF, je nutné původní relaci dekomponovat. To znamená, že původní relace se bezztrátově rozdělí na dvě relace, přičemž nová relace bude obsahovat vnořenou relaci a původní relace bude obsahovat atributy nové relace. Dále musíme zajistit atributy, které zabezpečí referenční integritu. V obou relacích je zapotřebí definovat i kandidáty primárního klíče. Druhá normální forma (2NF) – „Relace je ve 2. normální formě tehdy, pokud je v 1NF a každý neklíčový atribut je úplně funkčně závislý na primárním klíči.“ Třetí normální forma (3NF) – „Relace je ve 3. normální formě v případě, že každý neklíčový atribut není tranzitivně závislý na primárním klíči.“ Pokud je podmínka porušena, opět je potřeba relaci dekomponovat. Boyce – Coddova normální forma (BCNF) byla navržena jako zjednodušení 3NF, ale později bylo zjištěno, že každá relace, která je v 3NF nemusí být v BCNF. Proces normalizace BCNF je založen na znalosti pojmů primární klíč a determinant2 a všeobecně je BCNF považována za silnější formu než je 3NF. „Relace je v BCNF tehdy, pokud je každý determinant relace kandidátem primárního klíče.“ Čtvrtá normální forma (4NF) - Vícehodnotová závislost: „Pokud existuje relace R s relačním schématem R(A,B,C), kde A,B a C jsou množiny atributů, potom říkáme, že množina atributů B je vícehodnotově závislá od množiny atributů A, tehdy, pokud existují duplicitní kombinace atributů A,B.“ Relace je potom ve 4NF pokud v každé vícehodnotové závislosti A ->> B platí jedno z pravidel: 1.
atribut A je superklíčem
Determinant je množina atributů, na které je jiná množina atributů funkčně závislá. A ->B => A je determinant. 2
12
2.
Teoretická východiska práce
atribut B ⊆ A, nebo R = (A,B)
Pátá normální forma (5NF) - Spojovací závislost (join dependency): „Máme relaci R, nechť A,B a Z jsou libovolné podmnožiny atributů relace R, pak říkáme, že relace splňuje spojovací závislost *(A,B,…Z), tehdy, pokud původní relaci získáme spojením projekcí nad atributy A,B,Z.“ Potom relace R je v 5NF tehdy, pokud každá spojovací závislost v relaci R zahrnuje kandidáta primárního klíče relace R. (Matiaško, 2002) 3.4.1
Transakce
Nyní přejdeme k dalším prvkům zabezpečujícím bezproblémový chod databáze. Jsou jimi tzv. transakce. Ty jsou významnou funkcí Systému řízení báze dat. Jsou důležité zejména proto, že zabezpečují konzistenci a spolehlivost databáze související s vykonáváním libovolného dotazu. Problémy mohou nastat, pokud několik aplikací využívá stejné datové objekty paralelně, nebo pokud dojde k poškození systémových a technických zařízení, může dojít k porušení integrity databáze. Transakce bývá často považována za základní jednotku práce databázového systému. V dnešní době si bez transakcí nedovedeme představit chod důležitých databází, např. při internetovém bankovnictví, kdy transakce zde tvoří nedílnou součást těchto systémů. Databáze je v konzistentním stavu v případě, že jsou splněna všechna integritní omezení nad ní definované. Stav databáze se mění v průběhu operací insert, update a delete. Snahou tedy je zabezpečit, aby databáze nebyla v nekonzistentním stavu. Avšak databáze se může vyskytnout v dočasně nekonzistentním tvaru v průběhu vykonávání transakce, ale důležité je zajistit, aby byla v konzistentním tvaru po dokončení transakce. Různé stavy transakce zobrazuje Obr. 5.
Obr. 6
Transakční model
Transakce umožní převod databáze z jednoho konzistentního tvaru do jiného konzistentního tvaru – v případě úspěšného ukončení transakce, jinak databáze
Teoretická východiska práce
13
zůstane v původním stavu před transakcí. Je třeba si uvědomit, že v průběhu zpracování jedné aplikace je možné zpracovávat několik transakcí a může zde dojít k chybám, proto existují mechanismy, které jim zabraňují. Mezi příčiny chyb lze uvést zejména porušení integritních omezení, chyby v aplikačních programech, zrušení transakcí, systémové chyby, či různé chyby médií. Všeobecně je možné považovat transakci jako posloupnost operací typu Read a Write včetně výpočtů. V tomto smyslu můžeme transakci chápat jako program, který obsahuje vnořené databázové příkazy. Platí, že i jednoduchý dotaz může být chápan jako transakce. BEGIN WORK INSERT INTO os_udaje(rod_cislo, jmeno, prijmeni) VALUES (‟760607/4325‟, ‟Jan‟, ‟Nový‟); INSERT INTO student(os_cislo, rod_cislo, st_skupina) VALUES (143, ‟760607/4324‟, ‟5Z307‟); COMMIT WORK; Příklad. 1
Více operací v průběhu vykonávání transakce
Pokud transakce proběhne správně, je potvrzená a toto potvrzení zabezpečuje příkaz COMMIT. V opačném případě může skončit, aniž by splnila své úlohy, příkazem ABORT. Transakce se může zrušit sama, nebo může být ukončena SŘBD. V tomto případě se zastaví veškerá činnost transakce a všechny kroky se vrátí zpět, tato operace je známá jako ROLLBACK. Protože transakce musí zabezpečovat celistvost databáze a spolehlivost zpracování, můžeme definovat čtyři vlastnosti transakce známé pod zkratkou ACID: Atomicita (atomicity) znamená, že transakce je vykonána jako jedna operace, to znamená, že jsou ukončeny všechny operace transakce, nebo žádná. Atomicita vyžaduje od transakce, že v případě přerušení jejího vykonávání z libovolné příčiny SŘBD musí zabezpečit obnovu databáze do stavu, v jakém se nacházela na začátku vykonávání transakce. Mohou nastat dvě situace: transakce je přerušená bez toho, aniž byly zpracovány všechny operace anebo k přerušení došlo už po vykonání všech operací před vykonáním transakce. Konzistence (consistency) databáze znamená jednoduše její správnost. Běh jedné (izolované) transakce zachovává konzistenci databáze. Izolovanost (isolation) - transakce jsou izolované jedna od druhé. Ve skutečnosti může být paralelně zpracováváno několik běžících transakcí současně, přitom změny nejsou zpřístupněny, dokud nedojde k potvrzení úspěšného dokončení. Trvanlivost (durability) znamená, že všechny potvrzené změny musí být zaznamenány i po případném výpadku systému.
14
Teoretická východiska práce
3.4.2
Textové databáze
S rozšiřováním počítačů do všech oblastí zpracování informací se postupně vytvořil nový obor – textové databáze, které se začlenily do samostatného směru – bibliografické informatiky. Zatímco dříve obsahovaly textové databáze pouze data tzv. sekundárních informací (např. abstrakty článků), dnešní pojetí textových databází je širší. Mohou uchovávat úplné texty dokumentů, tyto dokumenty mohou být strukturované nebo nestrukturované, mohou být součástí dalších formátovaných dat, tak jak je známo v relačních databázových systémech. Aplikace textových databází jsou široké – můžeme jmenovat knihovny, digitální knihovny, kancelářské systémy, on-line slovníky, encyklopedie atd. Textová databáze se skládá ze dvou součástí: obsah a struktura (pokud existuje). Obsahem je samotný text. Struktura definuje různé části databáze podle nějakého kritéria. Základním datovým typem v textových databázích je text (zpravidla v přirozeném jazyce). Textové databáze pracují s nějakým modelem textové databáze. Ten by měl specifikovat tři prostředky: • jak popsat text (množina znaků, množina významových a nevýznamových slov apod.), • jak popsat strukturu textu (text je množina odstavců, odstavec se skládá z vět, k textu patří explicitní indexová struktura atd.), • dotazovací jazyk (na které objekty se lze ptát, jak se lze ptát, jaká je struktura odpovědi). Poté můžeme formulovat základní vyhledávací problém: nalézt k požadavku od uživatele (dotazu) odpovídající dokumenty. Mezi problémy souvisejícími s vyhledávacím problémem patří zejména: • určení, co je relevantní a co ne, • zajištění efektivnosti zpracování, • zajištění uspořádání výstupu podle relevance. Modelem textové databáze tedy rozumíme pojmů a nástrojů umožňujících popsat textovou databázi a formulovat základní vyhledávací algoritmy umožňující řešit vyhledávací problém. Systém se skládá z několika spolupracujících komponent. Jednou z nich je vstupní textový filtr, který provádí lexikální analýzu vstupujícího textu dokumentu a převádí přečtené lexikální jednotky textu (slova) na základní tvar. Často je nazýván jako lemmatizátor. V existujících jazycích (český jazyk je v tomto ohledu velmi bohatý) má většina slov mnoho tvarů, lišících se podle rodu, pádu, jednotného či množného čísla. Jindy může jít o různé významy slov (např. let = roků, létání). Vytvářet základní tvary (kmeny) znamená pro angličtinu obvyklé „odřezávání“ koncovek. V češtině můžeme tento přístup považovat za nedostatečný, ale bez lingvistického aparátu může znamenat vhodné první přiblížení. Pomocí kmenů lze výrazně snížit počet významových slov. Jedná se o slova, u kterých se předpokládá vyhledávání. V další fázi se vyčlení seznam nevýznamo-
Teoretická východiska práce
15
vých slov. Další komponentou je zpracování indexační jednotky. Tato má za úkol obohatit ukládané texty o doplňující datové struktury, které umožňují efektivní vyhledávání. V této fázi zpracování se ke každému textovému dokumentu doplní jeho počítačová reprezentace neboli záznam dokumentu. Záznam formálně popisuje dokument, sestávající z hodnot vhodně specifikovaných atributů a z množiny termů, které ve zjednodušené podobě vystihují obsah plného znění dokumentu. Jednoslovné termy se také nazývají klíčová slova, někdy se hovoří také o deskriptorech. Nalezení vhodné množiny termů je dosti náročná úloha, která vyžaduje dokonalé porozumění sémantice textu. Termy vybrané během indexace musí dostatečně přesně reprezentovat obsah dokumentu a taktéž dát do souvislosti dokumenty týkající se podobného tématu. Nedílnou součástí je tzv. vyhledávácí stroj, využívající indexů, vybírající z databáze dokumenty, které vyhovují dotazu zadanému uživatelem. Zpracování dotazu probíhá podobně. Dotaz se nejprve analyzuje, provádí se lemmatizace, která významně může rozšířit dotazování. Vyhodnocení dotazu většinou spočívá v porovnání termů uvedených uživatelem v dotazu se záznamy, které reprezentují jednotlivé dokumenty. Indexace nemusí být ale vždy nutně vyjádřena pomocí termů. Obsah dokumentu lze vyjádřit i jinak, např. jistým zakódováním textu do krátkého řetězce znaků – signatury. Využitím lingvistiky lze vytvořit určité relace mezi termy a tím vznikne další pomocná struktura dat – tezaurus. (Pokorný, 1998)
3.5
Počítačové zpracování přirozeného jazyka
Podle Paly, existuje několik dobrých důvodů, pro které si přirozený jazyk (z anglického natural language) zaslouží pozornost: • jazykové chování představuje jeden z fundamentálních aspektů lidského chování, • přirozený jazyk je podstatnou složkou našeho života jako nástroj komunikace, • jazykové texty slouží jako nosiče pro předávání znalostí z generace na generaci Cílem úsilí počítačových lingvistů v této souvislosti je popisovat strukturu přirozeného jazyka tak, aby bylo možno vytvářet formální (počítačové) modely jazyka, které vedou k vytváření počítačových programů schopných řešit jednotlivé úlohy zahrnující porozumění přirozenému jazyku. Výsledkem tohoto snažení jsou realistické modely činností, jako jsou psaní, čtení, mluvení, poslouchání a vedení dialogu. (Pala, 2000) Přirozený jazyk se studuje a zkoumá v řadě disciplín, kam můžeme zahrnout: lingvistiku – má své vlastní metody a člení se dále na tradiční, klasickou, strukturní a formální, opírající se o postupy z oblasti teorie formálních gramatik a jazyků. Lingvistika zkoumá vlastní strukturu jazyka, např. prvky, které se skládají do slov, jak se slova kombinují do vět, významovost vět a podobně.
16
Teoretická východiska práce
Psychologii, popř. psycholingvistiku – zkoumá, jak slova mohou něco označovat a jak pomocí jazykových výrazů lze identifikovat objekty v univerzu promluvy. Počítačovou lingvistiku – mající za cíl budování komputační teorie jazyka, s rozdílem od klasické lingvistiky v tom, že se opírá o pojmy algoritmus, datová struktura a podobně. V tomto odvětví se usilovně snaží o využití poznatků z jiných oblastí, především výzkumu v oblasti umělé inteligence (artificial intelligence). Všechny disciplíny lze zkombinovat do jednoho celku a mluvit tak o tzv. kognitivní vědě3. Důvody motivace budovat počítačové modely jazyka lze spatřovat v úrovni: výzkumné a vědecké – úsilí o pochopení toho, jak funguje přirozený jazyk a jazyková komunikace. Klasické přístupy zde již nestačí, protože pracují pouze s omezenou množinou dat. V dnešní době se však pracuje s textovými korpusy zahrnujícími stovky miliónů slov. Vznikají počítačové programy, které fungují jako modely jazykového chování. Technologické a praktické – počítačové techniky zpracování přirozeného jazyka mohou přinést velký pokrok, dávající vzniku nové disciplíny – jazykového inženýrství (language engineering), kombinující lingvistiku a počítačovou vědu se zaměřením na tvorbu programového vybavení pro zpracování přirozeného jazyka. Potřebě oboustranné komunikace mezi člověkem a počítačem. Dnešní schéma komunikace mezi strojem a člověkem je jednocestné a nepřipouští zatím komunikaci přibližující se komunikaci lidí v běžném životě. Systémy, které pracují v rozhraní s přirozeným jazykem, by měly být inteligentnější a pružnější. Důraz je kladen na rozumné fungování pro uživatele nejen z oboru informatiky, ale i počítačové laiky. Jak uvádí Pala, na softwarovém trhu se postupně objevují skupiny aplikací, pracující s přirozeným jazykem: 1. software pro zpracování textů v přirozeném jazyce, kam můžeme jmenovat 1.1. jazykovou podporu na úrovni textových procesorů, tj. nejčastěji korektory překlepů (spell checkers), gramatické korektory, dělicí programy, 1.2. vyhledávácí (fulltextové) programy založené na lemmatizaci (neboli morfologické analýze), 1.3. aplikace pro strojový překlad z jednoho jazyka do druhého, obvykle pouze pro určité typy textů, mají ale nepříliš velkou kvalitu,
kognitivní věda - je víceoborové vědní odvětví, které zkoumá lidské myšlení a inteligenci. Využívá k tomu množství jiných věd jako je psychologie, informatika, filozofie, antropologie či neurovědy. Počátky kognitivní vědy spadají do 50. let 20. století do souvislosti s vývojem prvních počítačů. Díky kognitivní vědě tak vznikly obory jako kognitivní psychologie, kognitivní lingvistika, kognitivní religionistika apod. (Thagard, 2001) 3
Teoretická východiska práce
17
1.4. prohlížecí programy (browser), využívající jednoduchou morfologickou analýzu a klíčových slov 2. dialogově orientované aplikace, například dotazovací systémy pro přístup k datovým bázím, automatizované systémy pro komunikaci (hlasovou nebo telefonickou) s klienty v bankách, knihovnách, úřadech, 2.1. informační systémy na letištích a nádražích, 2.2. hlasové ovládání počítačů, 2.3. expertní systémy – diagnostické systémy u lékaře, diagnostika automobilových počítačů nebo databázové systémy umožňující dotazování v přirozeném jazyku, 3. další oblastí je porozumění příběhům, např. novinovým článkům, tvorba souhrnů, abstraktů aj. Je rozdíl mezi problematikou strojového rozpoznávání řeči a porozumění přirozenému jazyku. Systém pro rozpoznávání řeči nemusí zahrnovat skutečné porozumění přirozenému jazyku, kde jednotlivá slov fungují pouze jako příkazy pro ovládání zařízení. 3.5.1
Roviny analýzy jazyka
Systémy pro zpracování přirozeného jazyka (NLP) potřebují mít definováno • co jsou slova (slovní tvary a jejich složky – morfémy), • jak se slova (větné složky) kombinují do vět, • co slova označují a jaké jsou jejich významy, • jak se význam věty skládá z významů slov a slovních spojení, ani tyto předpoklady však ještě nestačí, inteligentní jazykové chování uživatele jazyka (člověka) se opírá o obecnou znalost světa a jeho inferenční schopnosti4 a také o znalost komunikační situace a komunikačního kontextu a pravidel, podle nichž se komunikační procesy řídí. Avšak znalosti relevantní pro počítačové zpracování přirozeného jazyka mají velmi komplikovanou hierarchickou povahu, uvedu zde několik rovin popisu: 1.
2.
fonetická a fonologická – zkoumá vztahy mezi zvuky a dalšími jednotkami, z nichž tvoříme slova (např. slabikami). Rozlišujeme zde fonémy, tj. nejmenší jednotky jazyka, kterými lze rozlišit význam. Tyto znalosti jsou podstatné pro systémy na rozpoznávání mluvené řeči; morfologická – popisuje skladbu slov ze základních jednotek – morfém. Čeština je velmi bohatá, má komplikovanou deklinaci (skloňování) a konju-
inferenční schopnost - v každém stavu je to množina konstrukcí propozic, které je objekt zkoumání schopen odvodit z explicitní báze znalostí. (Dokument „Transparentní intensionál logika“ Katedry informatiky FEI VŠB-TUO)
4
18
Teoretická východiska práce
gaci (časování). Ohýbání slov je potřeba algoritmizovat a vytvořit tak vhodné analyzátory a generátory tvarů; 3. syntaktická – vysvětluje, jakým způsobem lze spojovat slova tak, aby z nich vznikaly gramaticky správné věty, z jakých složek se skládají věty a jaké mezi nimi existují vztahy a jak lze tyto vztahy formálně reprezentovat. Toto slouží jako generátory a analyzátory syntaxe pro počítačové programy, které přijímají jako vstup věty přirozeného jazyka a na výstupu poskytují jejich reprezentace nejčastěji jako stromové struktury; 4. sémantická – popisuje, co znamenají jazykové výrazy a jak se jejich významy kombinují tak, aby vytvářely smysluplné věty. Zde se uvažují věty nezávisle na kontextu; 5. pragmatická – popisuje využití vět v různých komunikačních situacích a jak užití vět ovlivňuje význam; 6. kontextová, promluvová – zachycuje, jak bezprostředně předcházející věty ovlivňují sémantickou interpretaci následujících vět; 7. všeobecné znalosti o světě, zahrnující encyklopedické znalosti, kterými uživatel jazyka musí disponovat, aby mohl vést normální komunikaci. Jedná se o složitý aparát znalostí a v neposlední řadě i soubory pravidel označované jako zásady zdravého rozumu; 8. jazykové metaznalosti tvořící další skupinu, propojují znalosti o světě se znalostmi o daném přirozeném jazyce. Výše uvedený výčet tvoří základní rámec znalostí pro počítačové zpracování přirozeného jazyka. 3.5.2
Reprezentace a porozumění
Podle Paly, klíčová složka porozumění spočívá ve vybudování reprezentace významu vět a textů. Nabízí se několik definic pro reprezentaci významu. První je myšlenka, že věty by samy mohly sloužit jako reprezentace svého významu. Naproti stojí argument víceznačnosti slov a jazykových výrazů (hlava, stát, mít, dostat…). Tato mnohoznačnost brání možnosti vyvozovat formálně vhodné a správné inference, důležité pro porozumění. Pro člověka tato schopnost správně určit význam obvykle nepředstavuje problém. Pokud ale chceme algoritmizovat popis porozumění, narazíme na překážku v podobě požadavku na explicitní program. Na tento problém nám nestačí jen přirozený jazyk, je zapotřebí jiných prostředků, jako je třeba formální (matematický nebo logický) jazyk, takzvaný symbolický jazyk, pracující s atomickými symboly a umožňující popsat význam věty. Vhodný jazyk pro reprezentaci vět a výrazů by měl mít následující vlastnosti: • Reprezentace významu musí být přesná a jednoznačná, tj. pro každý samostatný význam musí existovat samostatná reprezentace.
Teoretická východiska práce
19
• Reprezentace by měla zachycovat intuitivní strukturu vět přirozeného jazyka. • Významy dvou vět, které jsou vzájemnými parafrázemi, tj. mezi nimiž existuje vztah synonymie (antonymie), by také měly být k sobě vztaženy prostřednictvím reprezentací. • Reprezentace významu by měla být pokud možno nezávislá na daném přirozeném jazyce. 3.5.3
Data pro zpracování přirozeného jazyka – korpusy
Korpusová lingvistika představuje novou větev lingvistiky, v níž se pracuje s korpusy uloženými v počítačích. To znamená, že se v mnoha aspektech kryje s počítačovou lingvistikou, z níž čerpá řadu postupů a technik. Na základě korpusových dat se budují nové a přesnější elektronické slovníky a robustní počítačové gramatiky. Takto zpracované data mají své pozitivní důsledky, například při třídění velkého množství slovníkových hesel nebo při aplikaci statistických a pravděpodobnostních přístupů, které by se bez počítačů na velké soubory nedaly aplikovat. Korpusy ale mohou využívat i jiní odborníci, například sociologové, psychologové, lexikografové, lingvisté, výzkumní pracovníci v oblasti umělé inteligence a další. Zdrojem korpusových dat je jazyk psaný, ale i mluvený. Z psaných textů se data získávají konverzí z médií (disket, optických disků, které lze získat od většiny nakladatelství), užitím technik OCR (viz. Slovník pojmů) nebo manuálním vkládáním textů do počítače.
20
Návrh řešení
4 Návrh řešení Nyní přejdeme k návrhu, jakým způsobem navrhnout a realizovat daný systém. Pro práci byly vybrány Open-Source technologie. Pro datovou základnu jsem zvolil relační databázový systém MySQL využívající dotazovací jazyk SQL. Jako programovací prostředek jsem použil skriptovací jazyk PHP5, který umožňuje pracovat s objekty. Pro práci s databází využiji pokrokový databázový layer Dibi, pocházející z dílny pana Davida Grudla, který je také duchovním otcem projektu Nette Framework. Pojďme se nyní seznámit s jednotlivými technologiemi pro implementaci.
4.1
SQL (Structured Query Language)
SQL je strukturovaný standardizovaný dotazovací jazyk, používaný pro obsluhu dat v relačních databázích. Jeho počátky sahají do 70. let 20. století, kdy ve firmě IBM vznikl jazyk SEQUEL. Poté se ve vývoji přidaly další významné společnosti jako je Oracle se svojí databázovou platformou. Americký standardizační institut poprvé standardizoval jazyk SQL jako standard SQL-86. V dalším průběhu fungování tohoto dotazovacího jazyka docházelo k poruchám integrity, proto byl v roce 1992 přijat nový standard SQL-92, na jehož základě pracují dnešní dotazy nad databázemi, včetně výše zmíněného a v mé práci využívaného serveru MySQL. Zatím nejmodernějším standardem je SQL3 (SQL-99), využívající objektově relační systémy řízení báze dat. Popis
Zkratka
Základní příkazy Základní části SŘBD Vytvoření Modifikace Zrušení
Výběr
DDL
Definice objektů
Create
Alter
Drop
-
DML
Manipulace s daty
Insert
Update
Delete
Select
Další části SŘBD DAS
Přístup k datům
Grant, Revoke
DIS
Správa transakcí
Commit, Rollback, Set transaction
Tab. 1
4.2
Základní rozdělení SQL příkazů
MySQL
MySQL je relační databázový systém typu DBMS, který vytvořila švédská firma MySQL AB. V současnosti je ale vlastněn společností Sun Microsystems, dceřinou společností Oracle Corporation. Existuje pod dvojí licencí, bezplatnou
Návrh řešení
21
(v době psaní této práce verze 5.1.33) a komerční placenou licencí (v. 5.1.33 Enterprise). Úspěch tohoto systému se opírá o jeho rychlost a stabilitu. Výhodou je také nezávislost na platformě. MySQL podporuje drtivou většinu funkcí, jako jsou transakce, uzamykání na úrovni řádku, cizí klíče, poddotazy, fulltextové hledání nebo uložené procedury, známé ze systému Oracle. Práce s databází, tabulkami a daty se provádí pomocí příkazů, respektive dotazů, které vycházejí z deklarativního programovacího jazyka SQL (Structured Query Language). Systém je obsluhovatelný z mnoha programovacích jazyků, jako jsou ADO.NET, C, C++, Java, Perl, PHP, Python, Ruby a mnoho dalších. K systému je připravena vždy aktuální, oficiální MySQL dokumentace. Pro vzdálenou správu systému přes rozhraní WWW je vhodný phpMyAdmin, nebo český Adminer, který ve své práci hojně využívám. MySQL je nesporně rychlý systém, o čemž vypovídají mnohé srovnávací testy s různými databázovými systémy. Velký důraz vývojáři kladli i na stabilitu systému, prověřenou důkladnými testy před publikováním další verze. Kvalita tohoto produktu se zlepšuje prostřednictvím široké základny zákazníků a komunity MySQL. K systému existuje mnoho prostředí, kde vzniká příležitost pro odhalení chyb. Další klíčovou vlastností MySQL je jednoduchost práce s ním. To znamená, že před započetím práce není třeba nijak zvlášť nastavovat server. Systém je bohatě vybaven po funkční stránce. Samozřejmostí je podpora transakcí kompatibilních s ACID, podpora všech platforem operačních systémů, replikace, podpora velkých databází a tabulek, fulltextové vyhledávání, poddotazy, podpora většiny syntaxe SQL 92, pohledy, uložené procedury, cizí klíče ale i triggery. Tyto důvody vedly pro zvolení MySQL jako databázového systému pro zpracování datové základny pro mou práci. 4.2.1
Architektura MySQL serveru
Architektura MySQL se velmi odlišuje od architektur jiných databázových serverů a je užitečná pro řešení mnoha různorodých úloh. Vrstva, která je úplně nahoře, obsahuje služby, jež nejsou jedinečné pro MySQL. Obsluhují většinu potřebných nástrojů klient/server, které jsou založeny na síti. Ve druhé vrstvě se nachází výkonná část MySQL, včetně kódu pro rozbor (parsing), analýzu, optimalizaci a pro všechny zabudované funkce. Na této úrovni se nachází veškerá funkcionalita, která se poskytuje prostřednictvím úložných enginů. Třetí vrstva obsahuje úložné enginy. Ty mají na starosti ukládání a získávání všech dat uložených v MySQL. Server komunikuje s úložnými enginy prostřednictvím API úložných enginů. (MySQL, Wiki, 2011)
22
Obr. 7
4.3
Návrh řešení
Architektura MySQL serveru (zdroj: http://cs.wikipedia.org/wiki/MySQL)
PHP
PHP je hypertextový preprocesor, který na serveru interpretuje HTML stránky. To znamená, že pracuje uvnitř dokumentu HTML a přidává možnost generování požadovaného obsahu. Interpret jazyka PHP převezme kód a překládá jej do strojového kódu pro počítač, na kterém PHP běží. Syntaxe jazyka vychází z několika programovacích jazyků (Perl, C, Pascal či Java), je nezávislý na platformě. Má velkou zásobu knihoven pro rozmanité účely, např. zpracování textů, čímž nachází využití pro mou práci. Lze pomocí něj snadno přistupovat k databázím a podporuje velké množství internetových protokolů. Pro svou práci využívám PHP verze 5.3.5.
Implementace
23
5 Implementace Dostáváme se k samotné implementaci mnou navrženého systému. Tak jako většina aplikací je má aplikace rozdělena na dvě základní části. Datovou základnu a nad ní je vybudována vrstva aplikační, provádějící aplikační logiku a dotazy do databáze.
5.1
Datová vrstva
Téměř všechny webové aplikace jsou založeny na databázi. Nejčastěji se ve spojení s PHP používá databáze MySQL, ale v zásadě lze použít libovolnou databázi, PHP má prostředky pro komunikaci s velkým množstvím různorodých databázových systémů včetně podpory standardu ODBC. 5.1.1
Typy sloupců a dat v MySQL
V systému MySQL rozlišujeme tři základní typy sloupců: číselné, řetězcové nebo textové, kalendářní a časové datové typy. Číselné typy uchovávají číselné hodnoty. Rozeznáváme typ int (celé číslo) a float (s plovoucí desetinnou čárkou). Typy numeric a decimal jsou stejné datové typy, sloužící k ukládání přesných hodnot čísel s plovoucí desetinnou čárkou, obvykle jsou vhodné pro ukládání peněžních hodnot. Mají stejný rozsah jako čísla s plovoucí desetinnou čárkou dvojnásobné přesnosti. Datový typ integer (int) pojme standardní celé číslo uložené ve 4 bajtech s rozsahem 232 možných hodnot. Float je číslo s plovoucí desetinnou čárkou jednoduché přesnosti. Představuje kladná čísla v rozsahu od 1,18x10-38 do 3,40x1038 s podobným rozsahem záporných čísel. MySQL podporuje různé řetězcové a textové typy. Mezi základní patří CHAR, VARCHAR, TEXT, BLOB, ENUM a SET. Datový typ char slouží pro ukládání řetězců s pevnou délkou. Maximální délka je 255 znaků. Typ varchar slouží pro ukládání řetězců s proměnlivou délkou. Datový typ text slouží k ukládání delších částí textu, které se nevejdou do datových typů char nebo varchar. Typy pro ukládání kalendářního data a času jsou: Date – slouží k ukládání kalendářního data. Výchozí pořadí vychází z normy ISO rok-měsíc-den, tedy datum se zobrazí ve tvaru YYYY-MM-DD. Time – ukládá čas ve formátu HH:MM:SS. 5.1.2
Vytváření tabulek
V závorkách výrazu CREATE TABLE pro vytváření tabulek lze deklarovat požadované sloupce, jejich typy a další informace o struktuře tabulky. V nejjednodušším případě postačí název sloupce a jeho datový typ. V deklaraci sloupce lze uvést některé volby: • Pomocí klíčového slova DEFAULT spolu s požadovanou výchozí hodnotou můžeme deklarovat výchozí hodnotu.
24
Implementace
• Každý sloupec může být deklarován jako NOT NULL nebo NULL, což znamená, že sloupec buď nesmí obsahovat hodnoty NULL (NOT NULL), nebo může obsahovat NULL hodnoty. Implicitně je povolena možnost obsahu NULL hodnot. • Klíčové slovo auto_increment slouží ke generování pořadového čísla. Automaticky vygenerovaná hodnota bude o 1 větší, než současná hodnota v tabulce. První vložený řádek má požadované číslo 1. V tabulce může být pouze jeden sloupec označený jako auto_increment a současně musí být indexován. • Lze deklarovat určitý sloupec jako PRIMARY KEY, to znamená, že je primárním klíčem tabulky (str. 8, teor. část). • Klauzule REFERENCES definuje, že určitý sloupec je cizím klíčem. • Pomocí klauzule UNIQUE definujeme sloupec jako nositele jedinečné hodnoty. • Klauzule FOREIGN KEY umožňuje deklarovat cizí klíče. Výchozím typem tabulky v MySQL je MyISAM. Tento typ je velmi rychlý s podporou automatické indexace, je následníkem typu ISAM. Pro tabulky v mé databázi využívám typu InnoDB. Tento typ je mechanismus ukládání kompatibilní s vlastnostmi transakcí ACID(viz. kap. Transakce) a podporuje cizí klíče a zamykání na úrovni řádku. Datová vrstva je tvořena databází v systému MySQL a sestává ze tří tabulek: 1. tabulka word_list obsahuje základní slovník anglických hesel, čítá zhruba 800 hesel. Lze nahradit obsáhlejším slovníkem o 130.000 anglických hesel. Pro demonstraci používám méně obsáhlou bázi. Obsahuje tři atributy: id – primární klíč; word – unikátní atribut, který nese anglické heslo a atribut language – obsahuje cizí klíč tabulky language.
Implementace
25
2. tabulka ignore_list obsahuje hesla, pro které se neprovádí analýza; 3. tabulka language obsahuje index pro jazyk; Prvním krokem pro vytvoření databáze po zhotovení návrhu je vytvoření databáze. K tomu slouží příkaz SQL: DROP DATABASE IF EXISTS `bc`; CREATE DATABASE `bc` /*!40100 DEFAULT CHARACTER SET utf16 COLLATE utf16_czech_ci */;
Pro výpis databází v systému slouží příkaz: SHOW databases;
26
Implementace
Vytváření tabulek probíhá pomocí příkazu: DROP TABLE IF EXISTS `word_list`; CREATE TABLE `word_list` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `word` varchar(60) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, `language` int(10) unsigned DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `word` (`word`), KEY `language` (`language`), CONSTRAINT `word_list_ibfk_1` FOREIGN KEY (`language`) REFERENCES `language` (`id`) ON DELETE SET NULL ) ENGINE=InnoDB AUTO_INCREMENT=8699 TE=utf16_czech_ci;
Obr. 8
Schéma vytvořené databáze
DEFAULT
CHARSET=utf16
COLLA-
Implementace
27
Naplnění daty řeší sekvence příkazů: INSERT INTO `word_list` (`id`, `word`, `language`) VALUES (7843,
'able',
1),
(7844,
'about',
1),
(7845,
'account', 1),
(7846,
'acid',
1),
(7847,
'across',
1),
(7848,
'act',
1),
(7849,
'addition', 1),
(7850,
'adjustment',
(7851,
'advertisement', 1),
(7852,
'after',
1),
(7853,
'again',
1),
1),
... ...
Používané tabulky jsou typu InnoDB, jež představují rychlý mechanismus ukládání s podporou transakcí. Tabulky typu InnoDB dále nabízejí: transakce – viz. kap. 3.4.1; uzamykání na úrovni řádku – znamená nedostupnost pro uživatele pouze právě používaného řádku v konkrétním dotazu. Ostatní mechanismy ukládání pracují s uzamykáním na úrovni tabulky – tabulky v průběhu aktualizace jedním procesem nejsou dostupné pro ostatní procesy; podporu cizích klíčů; konzistentní a neuzamčené čtení v dotazech SELECT – tato myšlenka je převzata ze systému Oracle. 5.1.3
Připojení k databázi
$mySqlConnection = array( 'driver' => 'mysql', 'host' => 'localhost', 'username' => 'root', 'password' => '', 'database' => 'bc', 'charset' => 'utf8', );
28
Implementace
try { dibi::connect($mySqlConnection); if (!isset($_SESSION['user'])) { $_SESSION['user'] = rand(); } } catch (Exception $ex) { echo $ex; exit(); }
Každé spojení je reprezentováno objektem DibiConnection. To komunikuje s databází přes ovladač (třída implementující IDibiDriver). 5.1.4 1.
Práce s databází
Hledání hesla v tabulce – níže je uvedena implementace metody, která hledá heslo v tabulce, oba zdroje jsou parametrem.
public function findWord($word, $table = self::tableWord) { return dibi::select('id, word')->from($table)->where('[word] LIKE %~like~', $word)->orderBy('word')->fetchPairs('id', 'word');
2.
Vkládání hesel do slovníku řeší tato funkce:
public function insertWord($word, $table = self::tableWord) { dibi::insert($table, array( 'word' => array('%s', $word), 'language' => array('%i', $this->language), ))->execute();
3.
Mazání slov zabezpečuje funkce
public function deleteWord($wordId, $table = self::tableWord) { dibi::delete($table)->where('[id] = %i', $wordId)->execute();
Implementace
5.2
29
Aplikační vrstva
Pro aplikaci jsem zvolil skriptovací jazyk PHP, viz.kap. 4.3. Aplikaci tvoří celkem 6 php zdrojových souborů. Pro práci s databází využívám databázovou vrstvu Dibi5. Ta má několik cílů a vlastností • zjednodušuje zápis SQL příkazů; • poskytuje snadný přístup k metodám i bez globálních proměnných; • nabízí funkce pro několik rutinních úkonů; • zpřehledňuje zápis SQL příkazů; • zefektivnění přenositelnosti mezi databázovými systémy: o automatická podpora konvencí (escapování/slashování, uvozování identifikátorů; o automatické formátování speciálních typů např. datum, řetězec; o sjednocení základních funkcí (připojení k db, vykonání příkazu, získání výsledku); • zachování maximální jednoduchosti snížením počtu řádků kódu; Pro práci s Dibi je zapotřebí mít tuto knihovnu stáhnutou a její zahrnutí proběhne příkazem: include(LIB_DIR . '/Dibi/dibi.php');
5.2.1
Třída PHP pro analýzu
Srdcem aplikace je PHP třída Analysis (soubor Analysis.php), která obsahuje aplikační logiku a všechny metody, které provádějí analýzu textových dat. Obsahuje tyto metody: • arrayFlatten(aray $array):array; • deleteWord(
$wordId, $table); • findWord( $word, $table); • getFileContent(<string> $file); • getKnownWords():array; • getWordFrequency($par):array,int; • insertWord( $word, $table); • parser(<string> $str):; • saveEnglishWord(<string>, $sourceFile, <string> $table); • saveWord( $word, <string> $table);
5
Dibi – databázová knihovna pro PHP5. David Grudl. Dostupné online: http://dibiphp.com/cs/
30
Implementace
• setLanguage( $language); Třída má deklaraci: class Analysis { //konstanty tabulek const tableIgnoreWord = "ignore_word"; const tableWord = "word_list"; //konstanty const analysisKnowWords = "analysisKnowWords"; public static $isDibi; private $listOfWords; private $language;
1.
Konstruktor je speciální metoda třídy, která slouží k její inicializaci. Používá se v případech, kdy chceme vlastnosti třídy inicializovat jinými než statickými hodnotami, nebo pokud chceme provést určité operace, načíst soubor a podobně. Konstruktor se jmenuje __construct(), není explicitně volán, toto zabezpečuje PHP, když vytváříme nový objekt pomocí operátoru new. Konstruktor nemusí mít žádné parametry, ale samozřejmě je mít může. Na statické proměnné třídy se odkazujeme pomocí konstanty self odkazující na danou třídu. Dalším rozdílem je operátor dereference :: (dvě dvojtečky). function __construct() { self::$isDibi = true; $this->listOfWords = array(); $this->setLanguage(); }
2.
Čtení textového souboru – v PHP můžeme číst ze souborů i do nich zapisovat na libovolném místě v daném souboru. Níže vidíme implementaci funkce, která slouží k načtení textového souboru.
public function getFileContent($file) { if (!$fOpen = @fopen($file, "r")) { throw new Exception("Soubor nebyl nalezen!"); } $this->parser(fread($fOpen, filesize($file))); }
Implementace
31
Prvním parametrem funkce fopen pro otevření souboru je proměnná obsahující název souboru a druhým parametrem je taktéž řetězec, který určuje režim přístupu k danému souboru. Režim „r“ znamená otevření souboru pouze pro čtení. Pokud soubor neexistuje, dojde k chybě, kterou zachycuje výše uvedená výjimka, která vypisuje chybové hlášení, informující uživatele o neexistenci souboru. 3.
Parser – tato metoda zabezpečuje konverzi textových dat do výsledného tvaru – jednotlivých slov. Obsahuje konvertovací tabulku s pravidly pro znaky s háčky nebo čárkami na převod do základního písmena bez diakritiky. Dále pomocí jednoduchého regulárního výrazu tvoří jednotlivá slova. Příkaz v PHP pro regulární výraz tvoří pouze slova s délkou minimálně 2 znaky a má následující tvar:
preg_match_all("/[a-z]{2,}/"
4.
Frekvenční analýza – metoda pro výpočet četností jednotlivých slov. Obsahuje parametr, který určuje, zda se bude frekvence výstupu počítat podle slovníku (tabulka známých slov) nebo se bude četnost určovat ze všech slov v textovém souboru.
public function getWordFrequency($par = null) { $from = array(); switch ($par) { case self::analysisKnowWords: $from = $this->getKnownWords(); break; default: $from = $this->listOfWords; break; } $frequency = array(); foreach ($from as $f) { if (isset($frequency[$f])) { $frequency[$f]++; } else { $frequency[$f] = 1; } } return $frequency; }
32
Implementace
Na následujícím ukázku je ukázka zdrojových dat, se kterými tento systém pracuje.
Obr. 9
Ukázka textových dat v přirozeném jazyce
Diskuze a závěr
33
6 Diskuze a závěr 6.1
Diskuze a rozšiřitelnost návrhu
S rozšiřováním počítačů do všech oblastí zpracování hromadných dat se vytvořil nový obor – bibliografická informatika. Dnešní rozsah textových databází je široký – od kancelářských systémů, přes knihovny, slovníky a encyklopedie. Narůstá potřeba v množství těchto informací efektivně vyhledávat, třídit a zkoumat různé vlastnosti. Výsledkem mé práce je aplikace v souladu s cílem práce, tedy plně funkční systém pro správu a analýzu textových dat v přirozeném jazyce. Implementovaný systém je snadno rozšiřitelný, poskytuje prostor pro další implementaci rozmanitých metod. Díky použití objektů v jazyce PHP je umožněno elegantní zpracování mnoha problémů. Nedílnou součástí práce je teoretická část, která uživatele seznamuje se základními principy databázových systémů, jejich návrhem a obecnými zákonitostmi. Další část se zabývá přirozeným jazykem. Snaží se čtenářovi vysvětlit, co je to přirozený jazyk, jaké jsou aspekty při počítačovém zpracování. Jako zdrojová data pro demonstraci funkcí aplikace jsem využil uživatelské recenze a diskuze různých produktů ze serveru www.amazon.com, všechny v anglickém jazyce. Bylo by vhodné rozšířit analytické funkce o další zkoumané závislosti údajů v přirozených jazycích. Dalším rozšířením může být zpracování a vybudování slovníků pro ostatní světové jazyky. Tyto a mnohá další rozšíření mohou být předmětem diplomové práce v navazujícím studiu.
6.2
Závěr
Implementací tohoto databázového systému pomocí open source technologií MySQL a PHP jsem si rozšířil své znalosti a dovednosti. Díky použití těchto technologií je výsledkem snadno přenositelný systém bez závislosti na konkrétní platformě, či operačním systému. Důraz jsem kladl v teoretické části mé práce na správnou práci s literaturou a na správné odkazování citovaných zdrojů. Výsledný systém může naleznout uplatnění v mnoha směrech. Například analýza četnosti výskytu určitých slov v jazyce vychází z předpokladu, že výrazy s vyšší frekvencí jsou pro text významnější než méně četné a tím lze usuzovat na jeho obsah. Má aplikace umožňuje ukládat a hromadně zpracovávat textové soubory v přirozeném jazyce a tyto soubory analyzovat. Systém má jednoduché, intuitivní rozhraní a je snadno použitelný. Přílohy doplňují práci, obsahují seznámení s použitými nástroji a ukázky systému. Myslím si, že jsem naplnil zadání práce, včetně pokynů mého školitele, doc. Ing. Jana Žižky, za které mu na tomto místě ještě jednou děkuji.
34
Literatura
7 Literatura BRÁZA, J. PHP 5 : Začínáme programovat. 1. vyd. Praha : Grada Publishing, a.s., 2005. 244 s. ISBN 80-247-1146-X. CONOLLY, T,; BEGG, C.; HOLOWCZAK, R. Mistrovství - databáze : Profesionální průvodce tvorbou efektivních databází. 1. vyd. Brno : Computer Press, 2009. 584 s. ISBN 978-80-251-2328-7. HERNANDEZ, M. J. Návrh databází. 1. vyd. Praha: Grada, 2006. 408 s. Profesional. ISBN 80-247-0900-7. KOSEK, J. PHP : Tvorba interaktivních internetových aplikací. 1. vyd. Praha : Grada Publishing, spol. s.r.o., 1999. 492 s. ISBN 80-7169-373-1. LEE, J.; WARE, B. Open Source - vývoj webových aplikací s LAMP : používáme Linux, Apache, MySQL, Perl a PHP. 1. vyd. Brno : Mobil Media, a.s., 2003. 448 s. ISBN 80-86593-43-6. LEVICKÁ, J.; GARABÍK, R. NLP - Corpus Linguistics, Corpus Based Grammar Research : fifth international conference, Smolenice, Slovakia. 1. vyd. Brno : Tribun, 2009. 398 s. ISBN 978-80-7399-875-2. MATIAŠKO, K. Databázové systémy. První vydanie. Žilina : Žilinská univerzita v Žilině, 2002. 367 s. ISBN 80-7100-968-7. PALA, K. Počítačové zpracování přirozeného jazyka [online]. 1.vyd. Brno : [s.n.], 2000 [cit. 2011-04-12]. Dostupné z WWW: . POKORNÝ, J. Databázová abeceda. 1. vyd. [s.l.] : Vydavatelství Science, 1998. 240 s. ISBN 80-86083-02-0. POKORNÝ, J. Konstrukce databázových systémů. 2. vyd. Praha : Vydavatelství ČVUT, 2004. 166 s. ISBN 80-01-02898-4. POKORNÝ, J. Konstrukce databázových systémů. 2. vyd. Praha: Vydavatelství ČVUT, 2004. 166 s. ISBN 80-01-02898-4.
Literatura
35
POKORNÝ, J.; HALAŠKA, I. Databázové systémy. 2.přeprac. vyd. Praha : Vydavatelství ČVUT, 2003. 148 s. ISBN 80-01-02789-9. STONEBAKER, M.; BROWN, P.; MOORE, D. Objektově-relační SŘBD : Analýza příští velké vlny. 1. české vyd. Praha : Softwarové aplikace a systémy, s.r.o, Praha; BEN - technická literatura, 2000. 279 s. ISBN 80-86056-94-5. THAGARD, P. Úvod do kognitivní vědy : Mysl a myšlení. 1. vyd,. Praha : Portál, 2001. 231 s. ISBN 80-7178-445-1. WELLING, L.; THOMSON, L. MySQL - Průvodce základy databázového systému. 1. vyd. [s.l.] : CP Books, 2005. 255 s. ISBN 80-251-0671-3. Wikipedie : Otevřená encyklopedie [online]. 2011, 7.4.2011 [cit. 2011-04-25]. MySQL. Dostupné z WWW: .
36
Přílohy
Přílohy
Použité nástroje
37
A Použité nástroje Zde je přehled použitých nástrojů pro tvorbu mé aplikace. Některé z nich jsou potřebné pro spuštění v případě, že aplikace není nahraná na webovém serveru s databázovým serverem. 1.
NetBeansIDE NetBeansIDE je opensource projekt s velkou uživatelskou základnou. V současné době je vlastněn společností Sun Microsystems. Ve své praci jsem používal tento software pro vývoj aplikačního kódu. Je k dispozici na adrese http://netbeans.org/downloads/index.html. Pro potřeby této aplikace je dostačující pouze verze s PHP.
2.
Webový server Apache a databázový server MySQL Použil jsem balík, který umožňuje snadno instalovat tyto služby na počítač bez nutnosti složité konfigurace. Odkaz http://www.apachefriends.org/en/xampp.html
Obr. 10
3.
Kontrolní panel aplikace XAMPP
Adminer Adminer je plně vybavený nástroj pro správu databáze napsaný v PHP. Je plně lokalizovaný do českého jazyka. Odkaz na software: http://www.adminer.org/
38
Aplikace
B Aplikace Hlavní rozhraní aplikace
Obr. 11
Rozhraní aplikace
Hlavní rozhraní obsahuje hlavní menu. Umožňuje vybrat textové soubory pro dávkové zpracování. Nahrávání souborů na server
Obr. 12
Průběh nahrávání souborů na server
Jakmile uživatel zvolí ze svého pevného disku soubory, proběhne jejich nahrání na server. Implicitní složka pro nahrané soubory se jmenuje BATCH. Zde jsou soubory pojmenovány vygenerovaným číslem pro danou session včetně jejich původního jména.
Aplikace
39
Výběr souborů pro zpracování
Obr. 13
Seznam nahraných souborů
Po úspěšném nahrání souborů na server se objeví jejich seznam, u každého je možnost volby pomocí zaškrtávacího tlačítka těch souborů, které si uživatel přeje zpracovat.
40
Aplikace
Analýza textového souboru bez porovnávání
Obr. 14
Výpis zpracovaného souboru bez porovnávání
Na výše uvedeném výstupu je přehledná frekvenční charakteristika jednotlivých slov v souboru včetně grafického výstupu s číselným vyjádřením četností slov.
Aplikace
41
Analýza textového souboru podle existující databáze
Obr. 15
Zpracování souboru podle známých hesel
Tento výpis analyzuje soubor podle známých hesel (tabulka word_list). Výstup je opět doplněn číselným vyjádřením.
42
Aplikace
Administrace slovníkových hesel
Obr. 16
Práce se slovníkem
Uživatel má možnost editovat databázi známých hesel. Může vyhledávat hesla podle vzorků. Například na náhledu je výpis slov obsahujících „oa“. Pokud hledané heslo není v databázi, lze heslo přidat. Pokud si již nepřeje dále uchovávat heslo v databázi, lze jej z databáze vymazat. Editace ignorovaných slov
Obr. 17
Výpis a editace ignorovaných slov
Frekvenční analýza textů se neprovádí pro hesla, uložená v databázi ignorovaných slov. Uživatel má možnost editovat, vyhledávat, přidávat a mazat hesla v této tabulce. Zdrojové soubory včetně potřebného softwaru jsou umístěny na přiloženém CD.