ˇ ´ UCEN ´I TECHNICKE ´ V BRNE ˇ VYSOKE BRNO UNIVERSITY OF TECHNOLOGY
ˇ ´ICH TECHNOLOGI´I FAKULTA INFORMACN ˇ ´ICH SYSTEM ´ ´ U ˚ USTAV INFORMACN FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF INFORMATION SYSTEMS
ˇ ´ ´ INOVACE UZIVATELSK EHO ROZHRAN´I DATABAZE WORDNET
´ RSK ˇ ´ PRACE ´ BAKALA A BACHELOR’S THESIS
´ AUTOR PRACE AUTHOR
BRNO 2008
ˇ ADAM KOPRIVA
ˇ ´I TECHNICKE ´ V BRNE ˇ VYSOKE´ UCEN BRNO UNIVERSITY OF TECHNOLOGY
ˇ ´ICH TECHNOLOGI´I FAKULTA INFORMACN ˇ ´ICH SYSTEM ´ ´ U ˚ USTAV INFORMACN FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF INFORMATION SYSTEMS
ˇ ´ ´ INOVACE UZIVATELSK EHO ROZHRAN´I DATABAZE WORDNET WORDNET DATABASE USER INTERFACE INNOVATION
´ RSK ˇ ´ PRACE ´ BAKALA A BACHELOR’S THESIS
´ AUTOR PRACE
ˇ ADAM KOPRIVA
AUTHOR
´ VEDOUC´I PRACE SUPERVISOR
BRNO 2008
ˇ Ing. PETR CHMELAR
Abstrakt Tato pr´ ace se vˇenuje inovaci grafick´eho uˇzivatelsk´eho rozhran´ı programu JWord 3.0. Jedn´ a se o program, kter´ y pracuje s elektronickou lexik´aln´ı datab´az´ı angliˇctiny WordNet. Slova v t´eto datab´ azi nejsou narozd´ıl od bˇeˇzn´eho slovn´ıku ˇrazena abecednˇe, ale jsou seskupena do synonymick´ ych ˇrad. Tyto ˇrady pak spojuj´ı r˚ uzn´e s´emantick´e vztahy. Pˇri n´avrhu implementace byl kladen d˚ uraz zejm´ena na rychlost vyhled´an´ı informac´ı k zadan´emu slovu. To mˇelo za n´asledek pˇrechod od souˇcasn´eho vyhled´av´an´ı v souborech k z´ısk´av´an´ı informac´ı pomoc´ı dotaz˚ u v datab´ azi. V´ ysledn´ y program se skl´ad´a ze dvou ˇc´ast´ı - programov´eho a grafick´eho uˇzivatelsk´eho rozhran´ı. Programov´e rozhran´ı pracuje nad datab´az´ı MySQL WordNet 3.0. Uˇzivatelsk´e rozhran´ı pak pomoc´ı programov´eho zobrazuje hledan´e v´ yznamy zadan´eho slova a vztahy k dalˇs´ım slov˚ um (synonyma, antonyma, hyponyma, hypernyma).
Kl´ıˇ cov´ a slova WordNet, JWord, MySQL, grafick´e uˇzivatelsk´e rozhran´ı, GUI, Java, s´emantick´ y web
Abstract This thesis considers innovations of graphical user interface for JWord 3.0. It’s a program, which works with electronic lexical database of English - WordNet. The words in this database aren’t sorted in the alphabetical order like in usual dictionaries, but they are grouped to synonymic groups. These groups are then connected with different semantic relations. During the implementation design I have focused mainly on the speed of searching for informations about the entered word. This lead to the change of searching engine from searching in files to querying database. The resulting program is composed of two parts program and graphical user interface. Program interface works with MySQL WordNet 3.0 database. User interface then shows meanings of the entered word and relations to other words (synonyms, antonyms, hyponyms, hypernyms).
Keywords WordNet, JWord, MySQL, graphical user interface, GUI, Java, semantic web
Citace Adam Kopˇriva: Inovace uˇzivatelsk´eho rozhran´ı datab´aze WordNet, bakal´aˇrsk´a pr´ace, Brno, FIT VUT v Brnˇe, 2008
Inovace uˇ zivatelsk´ eho rozhran´ı datab´ aze WordNet Prohl´ aˇ sen´ı Prohlaˇsuji, ˇze jsem tuto bakal´ aˇrskou pr´aci vypracoval samostatnˇe pod veden´ım pana Ing. Petra Chmelaˇre ....................... Adam Kopˇriva 11. kvˇetna 2008
Podˇ ekov´ an´ı Chtˇel bych podˇekovat panu Ing. Petru Chmelaˇrovi za jeho pomoc a podporu pˇri ˇreˇsen´ı t´eto bakal´aˇrsk´e pr´ ace.
c Adam Kopˇriva, 2008.
Tato pr´ ace vznikla jako ˇskoln´ı d´ılo na Vysok´em uˇcen´ı technick´em v Brnˇe, Fakultˇe informaˇcn´ıch technologi´ı. Pr´ ace je chr´ anˇena autorsk´ym z´ akonem a jej´ı uˇzit´ı bez udˇelen´ı opr´ avnˇen´ı autorem je nez´ akonn´e, s v´yjimkou z´ akonem definovan´ych pˇr´ıpad˚ u.
Obsah ´ 1 Uvod 1.1 S´emantick´ y web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 WordNet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3 Struktura pr´ ace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3 3 3 4
2 Sezn´ amen´ı s datab´ az´ı WordNet 2.1 Lexik´ aln´ı datab´ aze angliˇctiny . . . . . . . 2.1.1 Vztahy mezi slovy . . . . . . . . . ˇ 2.1.2 Razen´ ı slov . . . . . . . . . . . . . 2.2 Historie . . . . . . . . . . . . . . . . . . . 2.2.1 Psycholexikologie . . . . . . . . . . 2.2.2 Uspoˇr´ ad´ an´ı slovn´ıku . . . . . . . . 2.3 Lexik´ aln´ı matice . . . . . . . . . . . . . . 2.3.1 Pˇr´ıklad uspoˇr´ ad´ an´ı . . . . . . . . . 2.3.2 Vztah mezi druhy a v´ yznamy slov 2.4 Vztahy mezi slovy . . . . . . . . . . . . . 2.4.1 Synonyma . . . . . . . . . . . . . . 2.4.2 Antonyma . . . . . . . . . . . . . . 2.4.3 Hyponyma a hypernyma . . . . . . 2.4.4 Meronyma a holonyma . . . . . . . 2.5 Dalˇs´ı projekty . . . . . . . . . . . . . . . . 2.5.1 EuroWordNet . . . . . . . . . . . . 2.5.2 Global WordNet Association . . .
. . . . . . . . . . . . . . . . .
5 5 5 5 6 6 6 6 7 7 7 8 8 9 9 9 9 9
3 Anal´ yza 3.1 Program JWord 3.0 . . . . . . 3.2 Sezn´ amen´ı s programem JWord 3.2.1 WordNet . . . . . . . . 3.2.2 Rotget’s Thezaurus . . . 3.2.3 Root Book . . . . . . . 3.3 Funkˇcnost programu JWord 3.0
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
10 10 10 11 11 11 11
4 N´ avrh implementace 4.1 Moˇznosti uloˇzen´ı dat . . . . . . . . . . 4.1.1 Data uloˇzen´ a v souborech . . . 4.1.2 Data uloˇzen´ a v datab´azi . . . . 4.2 Porovn´ an´ı rychlosti pˇr´ıstupu k dat˚ um 4.3 Implementaˇcn´ı jazyk . . . . . . . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
12 12 12 13 14 15
. . 3.0 . . . . . . . .
. . . . . .
1
4.4
4.3.1 Programovac´ı jazyk Java . . . . . . . . . . . . . . . . . . . . . . . . 4.3.2 Rozhran´ı .NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Vyhodnocen´ı n´ avrhu implementace . . . . . . . . . . . . . . . . . . . . . . .
5 Imlplementace 5.1 Programov´e rozhran´ı . . . . . . . . . . . . . . . 5.1.1 Funkce pro komunikaci s datab´az´ı . . . 5.1.2 Funkce pro vyhled´av´an´ı dat v datab´azi 5.1.3 Funkce pro zpracov´an´ı dat . . . . . . . . 5.1.4 Implementace SQL dotaz˚ u. . . . . . . . 5.2 Grafick´e uˇzivatelsk´e rozhrann´ı . . . . . . . . . . 5.2.1 Prostˇred´ı Swing . . . . . . . . . . . . . . 5.2.2 Programov´ a ˇc´ ast GUI . . . . . . . . . . 5.2.3 Manu´ al ke GUI . . . . . . . . . . . . . . 5.3 Testov´ an´ı . . . . . . . . . . . . . . . . . . . . . 5.3.1 Vyhled´ an´ı informac´ı o slovu make . . . 5.3.2 Vyhled´ an´ı informac´ı o slovu clear . . . .
15 15 15
. . . . . . . . . . . .
17 17 17 18 18 19 22 22 23 24 26 26 27
6 Z´ avˇ er 6.1 Moˇzn´ a rozˇs´ıˇren´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
28 28
A Pˇ r´ılohy A.1 Obsah pˇriloˇzen´eho CD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.2 Sch´ema datab´ aze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
30 30 31
2
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
Kapitola 1
´ Uvod 1.1
S´ emantick´ y web
V posledn´ıch letech m˚ uˇzeme vidˇet snahu o vytvoˇren´ı s´emantick´eho webu [10]. S´emantika je v jazykovˇedˇe nauka o v´ yznamech slov a vyˇsˇs´ıch jazykov´ ych celk˚ u. S´emantick´ ym webem ’ m˚ uˇzeme nazvat takovou s´ıt , kde dokumenty obsahuj´ı skryt´e znaˇcky, kter´e poskytuj´ı informace o v´ yznamu obsaˇzen´ ych dat. Idea s´emantick´eho (v´ yznamov´eho) webu si zakl´ad´a na doplnˇen´ı s´ıtˇe webov´ ych str´ anek s´ıt´ı v´ yrok˚ u. Tyto v´ yroky pak lze narozd´ıl od souˇcasn´ ych webov´ ych str´ anek automatizovanˇe zpracov´avat. S´emantika tedy umoˇzn ˇuje poˇc´ıtaˇcov´e zpracov´an´ı psan´eho textu, snadn´e vyhled´av´an´ı a kategorizaci. Nejedn´ a se o dalˇs´ı poˇc´ıtaˇcov´ y jazyk, informaˇcn´ı syst´emy jsou vytv´aˇreny jako automatizovan´e syst´emy, do nichˇz lid´e informace zad´avaj´ı prostˇrednictv´ım promyˇslen´ ych rozhran´ı. Pro pˇrid´ an´ı s´emantick´e hodnoty je tedy jen tˇreba rozˇs´ıˇrit tato rozhran´ı (obvykle formul´ aˇre administraˇcn´ıch aplikac´ı) o nˇekolik jednoduch´ ych prvk˚ u. Z´akladn´ım prvkem semantick´eho webu je ontologie. Ontologie umoˇzn ˇuje tvorbu metadat, neboli informac´ı o informac´ıch. Tato metadata dod´avaj´ı dokumentu ˇci jeho ˇc´astem tolik ´ celem ontologi´ı je podpora porozumˇen´ı mezi lidmi, podpotˇrebn´e v´ yznamov´e informace. Uˇ pora komunikace mezi poˇc´ıtaˇcov´ ymi syst´emy a podpora n´avrhu znalostnˇe orientovan´ ych syst´em˚ u. Jedn´ım z moˇzn´ ych zdroj˚ u pro budov´an´ı ontolig´ı (form´aln´ı specifikace pojm˚ u a vztah˚ u mezi nimi) m˚ uˇze b´ yt i WordNet.
1.2
WordNet
WordNet je v´ ykladov´ y slovn´ık modern´ı angliˇctiny, p˚ uvodem z Princetonsk´e Univerzity. Jak jiˇz napov´ıd´ a s´ am n´ azev, jedn´ a se o s´ıt’ slov propojen´ ych s´emantick´ ymi vztahy. V´ yvoj t´eto lexik´aln´ı datab´ aze zaˇcal jiˇz v roce 1985 a nyn´ı se nach´az´ı ve verzi 3.0 a obsahuje jiˇz pˇres 155000 unik´ atn´ıch ˇretˇezc˚ u. Program, kter´ y dok´ aˇze vyhled´av´at informace v datab´azi WordNet a pˇres grafick´e rozhran´ı zobrazit v´ ysledek uˇzivateli vznikl na univerzitˇe George Washingtona. Jedn´a se o program JWord a nach´ az´ı se ve verzi 3.0. Autoˇri vˇsak vyz´ yvaj´ı k inovaci jeho grafick´eho uˇzivatelsk´eho rozhran´ı. Ze z´ asad anglick´eho lexik´ aln´ıho slovn´ıku WordNet vych´azej´ı i pˇr´ıbuzn´e projekty pro dalˇs´ı jazyky. Jedn´ım z nich je EuroWordNet, kter´ y obsahuje skupinu s´emantick´ ych slovn´ık˚ u pro nˇekolik evropsk´ ych jazyk˚ u. Dalˇs´ım projektem je Global WordNet Association, kter´ y navazuje na EuroWordNet a podporuje vytv´aˇren´ı dalˇs´ıch slovn´ık˚ u pro dalˇs´ı svˇetov´e jazyky.
3
Vznikaj´ı i nov´e projekty pro vytv´aˇren´ı slovn´ık˚ u s dalˇs´ımi jazyky napˇr. BalkaNet.
1.3
Struktura pr´ ace
´ Uvod pr´ ace vˇenuji podrobn´emu sezn´amen´ı s elektronickou lexik´aln´ı datab´az´ı angliˇctiny WordNet. Od zaˇc´ atku jeho v´ yvoje aˇz po souˇcasnou verzi datab´aze. Rozeb´ır´am zp˚ usob uloˇzen´ı slov a vztahy mezi nimy. V dalˇs´ı kapitole analyzuji program JWord 3.0, jehoˇz novˇejˇs´ı verz´ı se tato pr´ ace zab´ yv´ a. Popisuji tak´e jeho v´ yhody a nedostatky. V n´asleduj´ıc´ı kapitole navrhuji zp˚ usob uloˇzen´ı dat slovn´ıku a volbu vhodn´eho programovac´ıho jazyka. V kapitole, vˇenuj´ıc´ı se implementaci, popisuji obˇe ˇc´asti programu - programov´e a grafick´e uˇzivatelsk´e rozhran´ı. Jsou vysvˇetleny vˇsechny pouˇziteln´e funkce pro dalˇs´ı v´ yvoj programov´eho rozhran´ı. Na z´ avˇer pr´ ace uv´ad´ım zhodnocen´ı dosaˇzen´ ych v´ ysledk˚ u a nab´ız´ım dalˇs´ı moˇznosti pro rozˇs´ıˇren´ı programu.
4
Kapitola 2
Sezn´ amen´ı s datab´ az´ı WordNet 2.1
Lexik´ aln´ı datab´ aze angliˇ ctiny
WordNet [8] je elektronick´ a lexik´aln´ı datab´aze angliˇctiny, kterou vytvoˇrili vˇedci na Princetonsk´e Univerzitˇe podle souˇcasn´ ych teori´ı o lidsk´e lexik´aln´ı pamˇeti. Anglick´a podstatn´ a jm´ena, slovesa a pˇr´ıdavn´ a jm´ena jsou seskupena do synonymick´ych ˇrad. Pˇr´ıslovce jsou organizov´ ana na z´ akladˇe jin´ ych vztah˚ u a ostatn´ı slovn´ı druhy nejsou do slovn´ıku zahrnuty v˚ ubec. Nejsou totiˇz d˚ uleˇzit´e pro strojov´e zpracov´an´ı textu a tak´e mezi nimi neexistuj´ı vhodn´e s´emantick´e vztahy. Synonymick´e ˇrady naz´ yv´ ame synsety. Jedn´a se o s´ıt’ slov, spojen´ ych s´emantick´ ymi vztahy. R˚ uzn´e vztahy vyskytuj´ıc´ı se mezi nimi pak spojuj´ı tyto vznik´e synsety.
2.1.1
Vztahy mezi slovy
Kaˇzd´a ˇrada synset˚ u zastupuje jeden z´akladn´ı prvek lexik´aln´ıho konceptu datab´aze. Vztahy mezi synsety mohou b´ yt bud’ hyperonymick´e, pokud spojuj´ı synsety s obecnˇejˇs´ım v´ yznamem, nebo hyponymick´e pokud spojuj´ı synonymick´e ˇrady s konkr´etnˇejˇs´ım v´ yznamem. WordNet pracuje i s dalˇs´ımi vztahy mezi slovy, kter´e budou rozebr´any pozdˇeji (synonyma, antonyma, meronyma).
2.1.2
ˇ Razen´ ı slov
Lexik´aln´ı informace nejˇcastˇeji, a pˇredevˇs´ım standardnˇe, ˇrad´ıme podle abecedy. To vˇsak rozm´ıst´ı slova se stejn´ ym nebo podobn´ ym v´ yznamem po cel´em slovn´ıku. Naneˇstˇest´ı, neexistuje jin´ a alternativa, jak jednoduˇseji slova seˇradit, aby je ˇcten´aˇri naˇsli. Abecednˇe ˇrazen´ a slova maj´ı tu nev´ yhodu, ˇze hled´ an´ı v takto seˇrazen´em seznamu se st´av´a obt´ıˇzn´ ym a ˇcasovˇe n´aroˇcn´ ym. Pr´ ace s t´ımto standardn´ım slovn´ıkem mnoho lid´ı rozptyluje, pˇreruˇsuje totiˇz jejich ˇcinnost a stejnˇe tak jejich myˇslenkov´e pochody. V dobˇe masivn´ıho vyuˇz´ıv´ an´ı poˇc´ıtaˇc˚ u jiˇz exisuje ˇreˇsen´ı tohoto probl´emu. Jeden z d˚ uvod˚ u rozvoje elektronick´ ych slovn´ık˚ u (lexik´aln´ıch datab´az´ı) je vyhled´av´an´ı informac´ı pomoc´ı poˇc´ıtaˇc˚ u. Poˇc´ıtaˇce dok´ aˇz´ı vyhled´ avat v abecednˇe ˇrazen´em seznamu neporovnatelnˇe rychleji neˇz lid´e. V´ ysledek hled´ an´ı ˇcasto program zobraz´ı tak rychle, jak uˇzivatel slovo vybere na obrazovce nebo zad´ a pomoc´ı kl´ avesnice. Od doby, co se vyuˇz´ıvaj´ı poˇc´ıtaˇcov´e programy jako v´ ykladov´e slovn´ıky a uˇzivatel´e pomoc´ı nich vyhled´avaj´ı informace, lze pomˇernˇe jednoduˇse pˇremˇenit tyto slovn´ıky na vhodn´ y druh lexik´aln´ı datab´aze. Pˇremˇenu tradiˇcn´ıch slovn´ık˚ u na elektronick´e povaˇzujeme za pˇrirozen´ y v´ yvoj.
5
unik´atn´ı ˇretˇezce synsety
unik´atn´ı ˇretˇezce synsety
WordNet 1.7.1 podstatn´ a jm´ ena slovesa pˇ r´ıdavn´ a jm´ ena 109195 11088 21460 75804 13214 18576
117798 82115
WordNet 3.0 11529 13767
21479 18156
pˇ r´ıslovce 4607 3629
celkem 146350 111223
4481 3621
155287 117659
Tabulka 2.1: Tabulka s poˇctem slov a synset˚ u u verze WordNet 1.7.1 a 3.0 [7] Vyuˇz´ıv´ an´ı elektronick´ ych slovn´ık˚ u n´am ukazuje, jak je neefektivn´ı pouˇz´ıvat tyto v´ ykonn´e stroje pouze k ot´ aˇcen´ı str´ anek. D˚ uleˇzit´e je pokusit se vyuˇz´ıt jejich v´ ykon. WordNet pˇrich´ az´ı s efektivn´ı kombinac´ı tradiˇcn´ıho v´ ykladov´eho slovn´ıku a modern´ı vysokorychlostn´ı komunikace.
2.2 2.2.1
Historie Psycholexikologie
V roce 1985 se skupina psycholog˚ u a jazykovˇedc˚ u na Princetonsk´e Univerzitˇe ujala v´ yvoje lexik´aln´ı datab´ aze. Prvn´ı myˇslenkou bylo poskytnout pomoc pˇri vyhled´av´an´ı ve slovn´ıku sp´ıˇse v´ yznamovˇe, neˇz jen abecednˇe. Kdyˇz pr´ace pokroˇcila, bylo potˇreba stanovit ctiˇz´adostivˇejˇs´ı c´ıle zaloˇzen´e na vlastn´ıch principech a ˇreˇsen´ıch. WordNet vznikl jako v´ ysledek jejich snaˇzen´ı a zakl´ad´ a se na psycholingvistick´ ych principech. Poˇcet slov u jednotliv´ ych slovn´ıch druh˚ u v lexik´aln´ı datab´azi Wordnet uv´ad´ı tabulka 2.1. Tabulka obsahuje pro porovn´an´ı dvˇe verze slovn´ıku, starˇs´ı WordNet 1.7.1 a souˇcasnou WordNet 3.0.
2.2.2
Uspoˇ r´ ad´ an´ı slovn´ıku
WordNet rozliˇsuje mezi semantick´ ymi a lexik´aln´ımi vztahy. Nejvˇetˇs´ı rozd´ıl mezi WordNetem a standardn´ımi slovn´ıky najdeme v tom, ˇze WordNet dˇel´ı slovn´ık na pˇet ˇc´ast´ı: podstatn´ a jm´ena, slovesa, pˇr´ıdavn´ a jm´ena, pˇr´ıslovce a funkˇcn´ı slova. Anglick´a funkˇcn´ı slova ukl´ad´ a oddˇelenˇe jako syntaktickou ˇc´ ast jazyka. Z v´ ysledk˚ u prvn´ıch studi´ı slovn´ıch spojen´ı vyˇslo najevo, ˇze realizace t´eto syntaktick´e kategorie se liˇs´ı osobn´ım (subjektivn´ım) uspoˇr´ad´an´ım.
2.3
Lexik´ aln´ı matice
Lexik´aln´ı s´emantika definuje, ˇze slovo je tradiˇcn´ım spojen´ım mezi lexik´aln´ım pojet´ım a mluven´ ym projevem, kter´ y hraje syntaktickou roli. Tato definice slova vyvol´av´a nejm´enˇe tˇri ot´azky pro vyhl´ed´ av´ an´ı slov. 1. Kter´e ˇc´ asti mluven´eho projevu vloˇzit do lexik´aln´ıch vztah˚ u? 2. Jak´ a je pˇrirozen´ a a uspoˇr´ adan´a forma lexik´aln´ıho pojet´ı slova? 6
V´ yznamy slova M1 M2 M3 .. .
Druhy slova F2 F3 . . . E1,2 E2,2 E3,3 .. .
F1 E1,1
Mm
Fn
Em,n
Tabulka 2.2: N´ azorn´ y pˇr´ıklad uspoˇr´ad´an´ı lexik´aln´ı matice 3. Kter´e syntaktick´e vztahy dok´ aˇz´ı vyj´adˇrit r˚ uzn´e hry se slovy? Pˇrestoˇze nem˚ uˇzeme zanedbat ani jednu z tˇechto ot´azek, v t´eto ˇc´asti se v´ yraznˇe zamˇeˇr´ıme na druhou z nich. Budeme se tedy zab´ yvat uspoˇr´ad´an´ım slov anglick´eho slovn´ıku.
2.3.1
Pˇ r´ıklad uspoˇ r´ ad´ an´ı
Tabulka 2.2 nab´ız´ı jednoduch´ y pˇr´ıklad, jak si udˇelat skuteˇcn´ y obr´azek o lexik´aln´ı matici. V z´ahlav´ı sloupc˚ u naleznete druh slova. V´ yznamy slova uv´ad´ı tabulka v ˇr´adc´ıch. Z´aznam v buˇ nce tabulky naznaˇcuje, ˇze druh uveden´ y ve sloupci m˚ uˇze b´ yt pouˇzit (ve vhodn´e souvislosti) k vyj´ adˇren´ı v´ yznamu na ˇr´adku. Napˇr´ıklad E1,1 uv´ad´ı, ˇze druh slova F1 m˚ uˇze b´ yt vyuˇzit k vyj´ adˇren´ı v´ yznamu M1 . Pokud tabulka obsahuje dva nebo v´ıce z´aznam˚ u ve stejn´em sloupci, m´ a slovo v´ıce v´ yznam˚ u. Pokud jsou dva nebo v´ıce z´aznam˚ u na stejn´em ˇr´adku jedn´ a se o synonyma (v z´ avislosti na v´ yznamu).
2.3.2
Vztah mezi druhy a v´ yznamy slov
Zobrazen´ı mezi druhy a v´ yznamy slov je ”many:many” - nˇekter´e druhy slov maj´ı nˇekolik v´ yznam˚ u a nˇekter´e v´ yznamy popisuje nˇekolik slov. Dva sloˇzit´e probl´emy lexikografie, slova s v´ıce v´ yznamy a synonymiˇcnost, uv´ad´ıme jako doplˇ nkov´e hledisko toho zobrazen´ı. Synonymiˇcnost a v´ıcev´ yznamovost jsou probl´emy, kter´e nast´avaj´ı i pˇri bˇeˇzn´e komunikaci: • posluchaˇc nebo ˇcten´ aˇr, kter´ y pˇreˇcte (uslyˇs´ı) slovo, si mus´ı spr´avnˇe vybrat mezi jeho v´ıce v´ yznamy • ˇreˇcn´ık nebo spisovatel, kter´ y popisuje v´ yznam slova, se mus´ı rozhodnout, jak´e slovo pro dan´ y v´ yznam pouˇzije
2.4
Vztahy mezi slovy
V lexik´ aln´ım slovn´ıku WordNet existuj´ı r˚ uzn´e vztahy mezi druhy slov a mezi v´ yznamy slov. Patˇr´ı mezi nˇe: a) Synonyma b) Antonyma c) Hyponyma a hypernyma
7
d) Meronyma a holonyma Uk´ azku tˇechto vztah˚ u mezi slovy m˚ uˇzete vidˇet na obr´azku 2.1.
Obr´ azek 2.1: Uk´azka moˇzn´ ych vztah˚ u mezi slovy
2.4.1
Synonyma
Nejd˚ uleˇzitˇejˇs´ımi vztahy pro WordNet jsou podobnosti ve v´ yznamu slov. Podle jedn´e z definic (obvykle pˇripisov´ ana Leibnizovi [11]) jsou dva v´ yrazy synonymn´ı, jestliˇze nahrazen´ım jednoho z nich za druh´ y nen´ı nikdy zmˇenˇen skuteˇcn´ y v´ yznam vˇety, v kter´e byla z´amˇena provedena. Podle t´eto definice, pokud v˚ ubec existuj´ı, jsou skuteˇcn´a synonyma vz´acn´a. Jednoduˇsˇs´ı verze t´eto definice dˇel´ a synonymiˇcnost relativnˇejˇs´ı k souvislostem: dva v´yrazy jsou synonymn´ı v lingvistick´em kontextu C, jestliˇze n´ ahrada jednoho v´yrazu za druh´y v C nezmˇen´ı skuteˇcn´y v´yznam.
2.4.2
Antonyma
Dalˇs´ım druhem vztah˚ u jsou slova s opaˇcn´ ym v´ yznamem (antonyma). Tyto slova pˇrekvapivˇe tˇeˇzko definujeme. Antonymum od slova x je ˇcasto slovo z´aporn´e k x, ale nemus´ı tomu tak b´ yti vˇzdy. Napˇr´ıklad bohat´y a chud´y jsou antonyma. Ale pokud ˇrekneme, ˇze nˇekdo nen´ı bohat´ y neznamen´ a to, ˇze mus´ı b´ yt chud´ y. Mnoho lid´ı se nec´ıt´ı b´ yti bohat´ ymi, ale ani chud´ ymi. Slova s opaˇcn´ ym v´ yznamem maj´ı lexik´aln´ı vztah mezi druhy slov, nemaj´ı s´emantick´ y vztah mezi v´ yznamy slov. Antonyma poskytuj´ı ve WordNetu z´akladn´ı uspoˇr´ad´an´ı pro pˇr´ıdavn´ a jm´ena a pˇr´ıslovce.
8
2.4.3
Hyponyma a hypernyma
Na rozd´ıl od synonym a antonym, kter´a maj´ı lexik´aln´ı vztahy mezi druhy slov, hyponyma a hypernyma jsou zaloˇzena na s´emantick´ ych vztaz´ıch mezi v´ yznamy slov. Napˇr´ıklad javor je hyponymum pro strom, a strom je hyponymum pro rostlinu. Naopak rostlina je hypernymum pro strom, a strom je hypernymum pro javor. Hyponimick´e a hypernymick´e vztahy mohou b´ yt tak´e oznaˇcov´any jako podˇrazenost a nadˇrazenost nebo podmnoˇzina a nadmnoˇzina. Na z´akladˇe tˇechto vztah˚ u jsou ve WordNetu uspoˇr´ad´ ana podstatn´ a jm´ena.
2.4.4
Meronyma a holonyma
Jedn´a se o s´emantick´ y vztah vyjadˇruj´ıc´ı vztahy mezi ˇc´ast´ı a celkem. Meronymum vyjadˇruje ˇc´ast celku. Naopak holonymum je spojen´ım celku s jeho ˇc´astmi. Napˇr´ıklad modr´ a je meronymem k barva, obliˇcej je holonymem pro nos. Ve WordNetu meronyma popisujeme vloˇzen´ ymi skupinami slov nebo ukazateli (oznaˇceny arcs) z jednoho synsetu na druh´ y.
2.5
Dalˇ s´ı projekty
Ze z´asad anglick´eho lexik´ aln´ıho slovn´ıku WordNet vych´azej´ı i pˇr´ıbuzn´e projekty pro dalˇs´ı jazyky. Nejvˇetˇs´ı u ´spˇech slav´ı zejm´ena dva z nich: a) EuroWordNet [3] b) Global WordNet Association [1]
2.5.1
EuroWordNet
Jedn´a se o skupinu s´emantick´ ych slovn´ık˚ u pro nˇekolik evropsk´ ych jazyk˚ u. Do t´eto skupiny patˇr´ı holandˇstina, italˇstina, ˇspanˇelˇstina, nˇemˇcina, francouzˇstina, ˇceˇstina a estonˇstina. Slovn´ıky jsou organizov´ any podobnˇe jako WordNet. Nav´ıc obsahuj´ı vztahy mezi jednotliv´ ymi jazyky. Shodn´e synsety jsou propojeny mezi jednotliv´ ymi slovn´ıky, proto lze slovo porovnat s v´ yrazy v dalˇs´ıch jazyc´ıch.
2.5.2
Global WordNet Association
Tato veˇrejn´ a asociace tˇeˇz´ı ze z´ aklad˚ u projekt˚ u Princeton WordNet a EuroWordNet. Organizace podporuje vytv´ aˇren´ı slovn´ık˚ u pro dalˇs´ı jazyky a poskytuje jim potˇrebn´e informace a v´ yvojov´e prostˇredky.
9
Kapitola 3
Anal´ yza 3.1
Program JWord 3.0
Program JWord [9], jehoˇz inovac´ı se tato bakal´aˇrsk´a pr´ace zab´ yv´a, slouˇz´ı jako rozhran´ı pro datab´azi WordNet. Program byl vyvinut na univerzitˇe George Washingtona a nach´az´ı se ve verzi 3.0. Autorem programu je student Kunal Johar, kter´ y tento program vytv´aˇrel pod veden´ım profesora Rahula Simhy na katedˇre informatiky. Autoˇri programu na sv´em webu vˇsak pˇrizn´ avaj´ı, ˇze program m´ a nedokonal´e grafick´e uˇzivatelsk´e rozhran´ı. T´ım tak´e dali podnˇet ke vzniku t´eto bakal´ aˇrsk´e pr´ace.
3.2
Sezn´ amen´ı s programem JWord 3.0
Program JWord 3.0 byl naps´ an v jazyce Java. Data pro svou ˇcinnost z´ısk´av´a ze soubor˚ u. Jeho grafick´e prostˇred´ı vyuˇz´ıv´ a knihovnu Javy AWT a v´ ysledky hled´an´ı zobrazuje program v grafick´e komponentˇe JTree. Obsahuje v sobˇe nˇekolik slovn´ık˚ u: • WordNet • Rodget’s Thesaurus • Rodget’s Thesaurus using WordNet Lemma • Root Book Uˇzivatel si m˚ uˇze nastavit, v kter´ ych slovn´ıc´ıch bude vyhled´avat. Uˇzivatel aplikace v programu nalezne pouze n´asleduj´ıc´ı informace: • WordNet - v´ yznamy slova, synonyma • Rodget’s Thesaurus - synonyma a jejich definice • Rodget’s Thesaurus using WordNet Lemma • Root Book
10
3.2.1
WordNet
Program pˇri vypisov´ an´ı v´ yznam˚ u zadan´eho slova, rozdˇel´ı nalezen´e informace podle slovn´ıho druhu (podstatn´ a jm´ena, slovesa, pˇr´ıdavn´a jm´ena, pˇr´ıslovce). U kaˇzd´eho slovn´ıho druhu vyp´ıˇse jeho v´ yznam a pokud existuje i pˇr´ıklad pouˇzit´ı. Dalˇs´ım rozkliknut´ım vˇetve stromu z´ısk´ame i synonymum k tomuto pˇr´ıpadu pouˇzit´ı zadan´eho slova.
3.2.2
Rotget’s Thezaurus
Rotget’s Thezaurus tak´e rozdˇeluje v´ ysledky podle slovn´ıho druhu. Vypisuje synonyma a k nim po rozkliknut´ı i definice.
3.2.3
Root Book
Tato ˇc´ ast programu nen´ı funkˇcn´ı.
3.3
Funkˇ cnost programu JWord 3.0
Uˇzivatelsk´e rozhran´ı programu JWord 3.0. m´a mnoho nedostatk˚ u, kter´e ho dˇelaj´ı takˇrka nepouˇziteln´ ym. Program je obt´ıˇznˇe ovladateln´ y jelikoˇz v´ yznamy slov se pˇrepisuj´ı a nelze tedy zad´ avat v´ıce slov po sobˇe. S´ am uˇzivatel m˚ uˇze i informace, kter´e zobrazuje komponenta JTree, pˇrepisovat. Program se tak st´av´a velmi nepˇrehledn´ ym. Na obr´azku 3.1 m˚ uˇzete vidˇet uk´azku uˇzivatelsk´eho rozhran´ı.
Obr´ azek 3.1: JWord 3.0 a jeho uˇzivatelsk´e rozhran´ı
11
Kapitola 4
N´ avrh implementace 4.1
Moˇ znosti uloˇ zen´ı dat
Pro program JWord pˇrich´ azely v u ´vahu dvˇe moˇznosti uloˇzen´ı dat pro slovn´ık WordNet: a) data uloˇzen´ a v souborech b) data uloˇzen´ a v datab´ azi Oba zp˚ usoby uloˇzen´ı dat maj´ı sv´e v´ yhody i nev´ yhody. Vystihovat by je mˇely n´asleduj´ıc´ı odstavce.
4.1.1
Data uloˇ zen´ a v souborech
Tohoto zp˚ usobu vyuˇz´ıv´ a program JWord 3.0. Data pro slovn´ık WordNet jsou uloˇzena v nˇekolika souborech. Kaˇzd´ y slovn´ı druh popisuje nˇekolik soubor˚ u. Prvn´ı soubor (nazvan´ y zkratkou slovn´ıho druhu s pˇr´ıponou idx) obsahuje abecedn´ı seznam slov. Na ˇr´adku za slovem se nach´ az´ı nˇekolik znaˇcek vˇcetnˇe ˇc´ısla synsetu. Pomoc´ı tohoto ˇc´ısla lze v dalˇs´ım souboru (pˇr´ıpona dat) naleznout synsety hledan´eho slova i jejich definice a pˇr´ıklady pouˇzit´ı. Pomoc´ı dalˇs´ıch operac´ı se znaˇckami uveden´ ymi u hledan´eho slova v souboru m˚ uˇzeme nal´ezt i dalˇs´ı informace. Mezi tyto informace patˇr´ı napˇr´ıklad synonyma, antonyma, hypernyma a hyponyma zvolen´eho slova. Po zad´an´ı slova potˇrebujeme tedy proj´ıt soubory vˇsech slovn´ıch druh˚ u a pokusit se naj´ıt ˇc´ıslo jeho synsetu. Pokud m˚ uˇze slovo nab´ yvat v´ yznamu v´ıce slovn´ıch druh˚ u, pak mus´ıme i synsety hledat ve v´ıce souborech. Samotn´e vyhled´ av´ an´ı v souboru lze realizovat nˇekolika zp˚ usoby. Prost´e sekvenˇcn´ı vyhled´ av´ an´ı nen´ı pˇr´ıliˇs vhodn´e pro svou ˇcasovou n´aroˇcnost. Pˇri pouˇzit´ı vyhled´avac´ıho algoritmu lze dos´ ahnout lepˇs´ıch v´ ysledk˚ u. Jelikoˇz jsou data v souborech seˇrazena, m˚ uˇzeme vyuˇz´ıt napˇr´ıklad bin´ arn´ıho vyhled´ av´ an´ı. Bin´ arn´ı vyhled´ av´ an´ı Tento algoritmus najde medi´ an (hodnotu, jeˇz dˇel´ı ˇradu podle velikosti seˇrazen´ ych v´ ysledk˚ u na dvˇe stejnˇe poˇcetn´e poloviny), porovn´a ho s hledanou hodnotou a podle v´ ysledku hled´ an´ı pokraˇcuje bud’ v horn´ı nebo doln´ı polovinˇe souboru. Tento algoritmus pokraˇcuje rekurzivnˇe od zaˇc´ atku dokud nen´ı nalezena hledan´a hodnota nebo jiˇz nen´ı co p˚ ulit (hodnota se v souboru nevyskytuje). Sloˇzitost bin´ arn´ıho vyhled´av´an´ı je v nejhorˇs´ım pˇr´ıpadˇe logaritmick´a.
12
hledan´ e slovo ”make” ”game”
typ vyhled´ av´ an´ı sekvenˇ cn´ı vyhled´ av´ an´ı bin´ arn´ı vyhled´ av´ an´ı 13 sec 3 sec 9 sec 1 sec
Tabulka 4.1: Tabulka s porovn´an´ım sekvenˇcn´ıho a bin´arn´ıho vyhled´av´an´ı • Algoritmus pro bin´ arn´ı vyhled´av´an´ı (pro n´azornost v jazyce python) def binarySearch(seznam, hodnota, vlevo, vpravo): while vlevo <= vpravo: stred = (vpravo + vlevo) / 2 if seznam[stˇ red] == hodnota: return True if hodnota < seznam[stˇ red]: vpravo = stˇ red - 1 else: vlevo = stˇ red + 1 return False
V tabulce 4.1 lze vidˇet pˇribliˇznou dobu, za kterou algoritmus nalezne v´ yznam slova, jeho synonyma, hypernyma a hyponyma. Z tohoto hrub´eho porovn´an´ı vypl´ yv´a u ´spornost ˇ zahrnuje pouze vyhled´an´ı v souborech pro jeden slovn´ı druh, bin´arn´ıho vyhled´ av´ an´ı. Cas v tomto pˇr´ıpadˇe jde o u ´daje o slovesu make a podstatn´em jm´enu game.
4.1.2
Data uloˇ zen´ a v datab´ azi
V´ yhodou pro data uloˇzen´ a v datab´azi je jejich dostupnost pomoc´ı SQL dotaz˚ u. Existuje nˇekolik datab´ az´ı lexik´ aln´ıho slovn´ıku WordNet. Pro m˚ uj program jsem si vybral datab´ azi MySQL WordNet 3.0. [2]. Tato datab´aze se skl´ad´a z nˇekolika tabulek. Pro n´aˇs program jsou uˇziteˇcn´e zejm´ena tabulky word, sense, synset, semlinkref, sample: • word - tabulka m´ a dva sloupce wordid a lemma. Sloupec lemma obsahuje seznam slov datab´ aze WordNet a ve sloupci wordid lze naj´ıt jejich identifikaˇcn´ı ˇc´ıslo. Datab´ aze pracuje jen s tˇemito ˇc´ısly, proto potˇrebujeme pro z´ısk´an´ı id slova vˇzdy pouˇz´ıt tabulku word. • sense - tabulku tvoˇr´ı ˇsest sloupc˚ u, nejd˚ uleˇzitˇejˇs´ı jsou dva z nich. Sloupce wordid a synsetid tvoˇr´ı propojen´ı mezi slovy a jejich synsety. Tuto tabulku lze vyuˇz´ıt pˇri hled´ an´ı id slov od zadan´eho synsetu, ale i naopak pokud hled´ame synsety od zadan´eho id slova. • synset - tabulka se skl´ ad´ a ze ˇctyˇr sloupc˚ u, za d˚ uleˇzit´e povaˇzuji tˇri. Sloupec synsetid urˇcuje ˇc´ıslo synsetu, pro kter´e lze v tabulce zobrazit jeho v´ yznam (sloupec definition) a tak´e jeho slovn´ı druh (sloupec pos). Slovn´ı druh je urˇcen zkratkami (n - podstatn´e jm´eno, v - sloveso, a - pˇr´ıdavn´e jm´eno, r,s - pˇr´ıslovce). • semlinkref - tabulka obsahuje tˇri sloupce a urˇcuje vztah mezi synsety (sloupce synset1id, synset2id, linkid). 13
• sample - tabulka, kter´ a ke kaˇzd´emu synsetu (sloupec synsetid) pˇriˇrazuje pˇr´ıklad pouˇzit´ı dan´eho slova (sloupec sample). Dokumentace k datab´ azi MySQL WordNet 3.0 obsahuje i nˇekolik hotov´ ych SQL dotaz˚ u. Tyto dotazy lze pouˇz´ıt napˇr´ıklad pro z´ısk´an´ı synonym, antonym, hypernym a hyponym. Podstanou ˇc´ ast sch´ema datab´ aze m˚ uˇzeme vidˇet na obr´azku 4.1. Cel´e sch´ema datab´ aze MySQL WordNet 3.0 naleznete na konci pr´ace v sekci pˇr´ılohy na obr´azku A.1.
ˇ asteˇcn´e ch´ema datab´aze MySQL WordNet 3.0 pˇrevzato z [2] Obr´ azek 4.1: C´
4.2
Porovn´ an´ı rychlosti pˇ r´ıstupu k dat˚ um
Dokud program nemusel hledat v souborech mnoho informac´ı (vyhledal napˇr´ıklad jen v´ yznamy slova), bylo vyhled´ av´ an´ı v souborech uspokojiv´e. Pˇri navyˇsuj´ıc´ıch se poˇzadavc´ıch 14
na program (hled´ an´ı synonym, antonym, hypernym, hyponym a pˇr´ıklad˚ u pouˇzit´ı) nen´ı jiˇz vyhled´ av´ an´ı v souborech dostaˇcuj´ıc´ı. Pro naˇse u ´ˇcely se nab´ız´ı vyuˇzit´ı nˇekter´e z databaz´ı WordNetu. V´ ysledky pouˇzit´ı datab´aze byly na tolik pˇr´ıvˇetiv´e, ˇze pozitiva pˇrev´ yˇsila veˇsker´ a negativa, kter´ a toto ˇreˇsen´ı pˇrin´ aˇs´ı.
4.3
Implementaˇ cn´ı jazyk
Pro implementaci v´ ysledn´eho programu byla navrˇzena metodologie objektovˇe orientovan´eho programov´ an´ı. Konkr´etnˇe byly doporuˇceny dva programovac´ı jazyky: a) programovac´ı jazyk Java b) rozhran´ı .NET
4.3.1
Programovac´ı jazyk Java
Programovac´ı jazyk Java [6] proˇsel od sv´eho vzniku neuvˇeˇriteln´ ym rozvojem. Z hlediska naˇs´ı aplikace m´ a Java ˇradu v´ yhod. Do v´ yhod Javy ˇrad´ıme moˇznost vyuˇz´ıt knihovnu Swing pro grafick´e uˇzivatelsk´e prostˇred´ı nebo podporu Javy pro pˇripojen´ı do datab´aze. Komunikaci s databaz´ı MySQL zajiˇstt’uje knihovna mysql connector. Nejvˇetˇs´ı v´ yhodou Javy je vˇsak jej´ı pˇrenositelnost mezi r˚ uzn´ ymi platformami. Mezi jednu z nev´ yhod Javy patˇr´ı jej´ı vˇetˇs´ı pamˇet’ov´a n´aroˇcnost, kter´a se projevuje hlavnˇe u menˇs´ıch program˚ u. Do nev´ yhod m˚ uˇzeme zaˇradit pomalejˇs´ı start aplikace zp˚ usoben´ y t´ım, ˇze prostˇred´ı mus´ı program nejprve pˇreloˇzit a pot´e spustit. D˚ uleˇzitou souˇc´ asti volby programovac´ıho jazyka je i volba v´ yvojov´eho prostˇred´ı. NetBeans 6.0 poskytuje naprost´ y komfort jak pro programov´an´ı tak i pro navrˇzen´ı uˇzivatelsk´eho rozhran´ı.
4.3.2
Rozhran´ı .NET
Programovac´ı jazyk .NET je zaloˇzen na .NET Framework, kter´ y zajiˇst’uje pˇreklad a bˇeh .NET program˚ u. Do v´ yhod jazyka .NET patˇr´ı rychlost programu. Rozhran´ı .NET program nezkompiluje pˇr´ımo do strojov´eho k´odu, ale do mezik´odu. Do strojov´eho k´odu se program zkompiluje aˇz pˇri spuˇstˇen´ı na konr´etn´ım poˇc´ıtaˇci. V´ yhodou je tedy optimalizace pro konkr´etn´ı procesor. Kompilace prob´ıh´a na konkr´etn´ım poˇc´ıtaˇci pouze jednou, protoˇze zkompilovan´ y program se uloˇz´ı a pˇri kaˇzd´em dalˇs´ım pouˇzit´ı se program pouze spust´ı. Prvn´ı spuˇstˇen´ı programu m˚ uˇze trvat nˇekolik sekund, ale kaˇzd´e dalˇs´ı spuˇstˇen´ı m˚ uˇze b´ yt uˇz velmi rychl´e. Mezi nev´ yhody jazyka .NET ˇrad´ıme jeho orientaci na operaˇcn´ı syst´em Windows a tedy jeho obt´ıˇznou pˇrenositelnost.
4.4
Vyhodnocen´ı n´ avrhu implementace
V´ yhodou vyuˇzit´ı soubor˚ u pro uloˇzen´ı dat pro slovn´ık WordNet je samostatnost programu bez nutnosti pˇripojovat se k datab´azi. Nev´ yhodou pomalejˇs´ı vyhled´av´an´ı, vˇetˇs´ı velikost v´ ysledn´eho programu. Aktualizace programu je u obou zp˚ usob˚ u uloˇzen´ı dat pˇribliˇznˇe stejnˇe obt´ıˇzn´a. Pro svou pr´ aci jsem se rozhodl pˇrej´ıt od vyhled´av´an´ı dat v souborech k vyuˇzit´ı datab´aze. To ovˇsem znamenalo naj´ıt vhodnou datab´azi pro uloˇzen´ı dat slovn´ıku WordNet
15
a vytvoˇrit u ´plnˇe nov´e programov´e rozhran´ı pro komunikaci s touto datab´az´ı. Odmˇenou za tuto snahu by mˇel b´ yt rychlejˇs´ı a pˇrehlednˇejˇs´ı program. Za implementaˇcn´ı jazyk byla vybr´ana Java. Tomuto rozhodnut´ı pˇredch´azelo zv´aˇzen´ı vˇsech v´ yhod a nev´ yhod navrˇzen´ ych programovac´ıch jazyk˚ u. Java obsahuje mnoˇzstv´ı vyuˇziteln´ ych knihoven a je pˇrenositeln´ a mezi platformami. D˚ uleˇzitou roli pˇri rozhodov´an´ı sehr´al i fakt, ˇze p˚ uvodn´ı program JWord 3.0 byl tak´e naps´an v programovac´ım jazyce Java.
16
Kapitola 5
Imlplementace V´ ysledn´ y program se skl´ ad´ a ze dvou oddˇelen´ ych ˇc´ast´ı: a) programov´e rozhran´ı - funkce pro komunikaci a vyhled´av´an´ı v datab´azi vyuˇz´ıvaj´ı metody, kter´e v´ ysledn´ a data zpracuj´ı. b) grafick´e uˇzivatelsk´e rozhran´ı - poskytuje nadstavbu nad programov´ ym rozhran´ım. Graficky zobrazuje data uˇzivateli.
5.1
Programov´ e rozhran´ı
Z n´avrhu implementace vyˇslo najevo, ˇze pro uchov´an´ı dat lexik´aln´ıho slovn´ıku bude nejlepˇs´ı vyuˇz´ıt datab´ azi. Pro program JWord jsem vytvoˇril vlastn´ı knihovnu, kter´a zajiˇst’uje komunikaci s datab´ az´ı. Zahrnuje funkce pro pˇripojen´ı k datab´azi a funkce, kter´e vykon´avaj´ı SQL dotazy. Tato knihovna tak´e provad´ı veˇsker´e potˇrebn´e operace se z´ıskan´ ymi daty a grafick´emu rozhran´ı pˇred´ av´ a vˇzdy pouze informace, kter´e budou zobrazeny uˇzivateli. Pro program JWord pˇrich´ azelo v u ´vahu nˇekolik druh˚ u datab´aze WordNet. Jako nejvhodnˇejˇs´ı byla vybr´ ana datab´ aze MySQL WordNet 3.0. [2] a to d´ıky snadn´e instalaci i aktualizaci a sv´e licenci. Tato datab´aze je pˇr´ıstupn´a ze s´ıtˇe FIT a nach´az´ı se na serveru minerva2. Knihovnu pro programov´e rozhran´ı tvoˇr´ı tˇri prov´azan´e skupiny funkc´ı. Funkce pro komunikaci s datab´ az´ı vyuˇz´ıvaj´ı metody, kter´e v datab´azi vyhled´avaj´ı. Data tˇechto funkc´ı vyuˇz´ıvaj´ı metody pro zpracov´ an´ı dat. a) funkce pro komunikaci s datab´az´ı b) funkce pro vyhled´ av´ an´ı dat v datab´azi c) funkce pro zpracov´ an´ı dat
5.1.1
Funkce pro komunikaci s datab´ az´ı
N´ıˇze uveden´ y seznam funkc´ı vyuˇz´ıv´a knihovna pro programov´e rozhran´ı k pˇripojen´ı do datab´aze a pro prov´ adˇen´ı dotaz˚ u v datab´azi.
17
seznam prototyp˚ u funkc´ı pro komunikaci s datab´ az´ı • public static Statement Connect(String server) - metoda, kter´a zajiˇst’uje pˇripojen´ı do datab´ aze • public static ResultSet MakeQuery(Statement mystmt, String query) - metoda, kter´ a vykon´ a datab´ azov´ y pˇr´ıkaz
5.1.2
Funkce pro vyhled´ av´ an´ı dat v datab´ azi
Z´akladn´ım stavebn´ım kamenem knihovny pro programov´e rozhran´ı jsou funkce, kter´e implementuj´ı SQL dotazy pro datab´azi. Vˇsechny vyuˇz´ıvaj´ı pˇripojen´ı do datab´aze, n´aslednˇe vykonaj´ı sv˚ uj dotaz. Z´ıskan´ a data jsou uloˇzena do kolekc´ı [4]. V pˇr´ıpadˇe jednoduˇsˇs´ıch metod jsou z´ıskan´e informace vr´ aceny v ˇretˇezci.
seznam prototyp˚ u funkc´ı pro vyhled´ av´ an´ı dat v datab´ azi • public static String FindLemma(String wordid) - metoda, kter´a najde slovo podle zadan´eho id • public static String FindWordId(String word) - metoda, kter´a najde id slova hledan´eho slova • public static String FindSynsetId(String wordid) - metoda, kter´a najde id synnsetu podle zadan´eho id hledan´eho slova • public static List FindSynonyms(List synsets) - metoda, kter´a najde vˇsechny id synonym od zadan´e kolekce synset˚ u • public static List FindSynsets(String wordid) - metoda, kter´a najde id vˇsech synset˚ u od zadan´eho slova • public static List FindSynonymsIdFromSynsets(String synsetid) - metoda, kter´a najde id vˇsech synonym k zadan´emu id synsetu • public static List FindSynonymsFromSynsets(String synsetid, String word) - metoda, kter´ a najde vˇsechna synonyma k zadan´emu id synsetu • public static List FindSense(List synsets) - metoda, kter´a najde v´ yznamy k zadan´ ym id synset˚ u Vˇsechny tyto funkce slouˇz´ı pouze k z´ısk´av´an´ı dat. Implementuj´ı tedy SQL dotazy pro datab´azi MySQL WordNet 3.0. Z´ıskan´e informace vyuˇz´ıvaj´ı funkce pro zpracov´an´ı dat.
5.1.3
Funkce pro zpracov´ an´ı dat
Soubor tˇechto funkc´ı vyuˇz´ıv´ a metod, pro vyhled´av´an´ı v datab´azi. Data, kter´a od tˇechto metod z´ısk´ avaj´ı, d´ ale zpracov´ avaj´ı do podoby vhodn´e pro grafick´e uˇzivatelsk´e rozhran´ı.
18
seznam prototyp˚ u funkc´ı pro zpracov´ an´ı dat • public static List GetSense(String word) - metoda, kter´a najde vˇsechny v´ yznamy od zadan´eho slova • public static List GetSynonyms(String word) - metoda, kter´a najde synonyma od zaden´e kolekce synset˚ u • public static List GetAntonyms(String word) - metoda, kter´a najde antonyma od zadan´eho slova • public static List GetTypes(String word) - metoda, kter´a najde hyponyma od zaden´eho slova • public static List GetTypeOf(String word) - metoda, kter´a najde hypernyma od zaden´eho slova • public static List GetWordClass(List Col, char wc) - metoda, kter´a vybere z kolekce zadan´ y slovn´ı druh
Ze vˇsech uveden´ ych funkc´ı, jsou nejzaj´ımavˇejˇs´ı funkce pro zpracov´an´ı dat. Tyto metody m˚ uˇze bezpeˇcnˇe pouˇz´ıt kdokoliv bez znalosti datab´aze MySQL WordNet 3.0.
5.1.4
Implementace SQL dotaz˚ u
Jednotliv´e funkce programov´eho rozhran´ı implementuj´ı i SQL dotazy pro vyhled´av´an´ı v datab´azi MySQL WordNet 3.0. SQL dotazy vyuˇ zit´ e z dokumentace MySQL WordNet 3.0 Tyto SQL dotazy jsou souˇc´ ast´ı dokumentace k datab´azi MySQL WordNet 3.0. Uv´ad´ım nejdˇr´ıve dotazy pro vyhled´ an´ı hypernym a hyponym s pˇr´ıkladem pro slovo horse: • hypernyma (slova s obecnˇejˇs´ım v´ yznamem) select se1.rank,w2.lemma from word w1 left join sense se1 on w1.wordid = se1.wordid left join synset sy1 on se1.synsetid = sy1.synsetid left join semlinkref on sy1.synsetid = semlinkref.synset1id left join synset sy2 on semlinkref.synset2id = sy2.synsetid left join sense se2 on sy2.synsetid = se2.synsetid left join word w2 on se2.wordid = w2.wordid where w1.lemma = ’horse’ and sy1.pos = ’n’ and semlinkref.linkid = 1 order by se1.rank asc;
• hyponyma (slova s konkr´etnˇejˇs´ım v´ yznamem) 19
select se1.rank,w2.lemma from word w1 left join sense se1 on w1.wordid = se1.wordid left join synset sy1 on se1.synsetid = sy1.synsetid left join semlinkref on sy1.synsetid = semlinkref.synset1id left join synset sy2 on semlinkref.synset2id = sy2.synsetid left join sense se2 on sy2.synsetid = se2.synsetid left join word w2 on se2.wordid = w2.wordid where w1.lemma = ’horse’ and sy1.pos = ’n’ and semlinkref.linkid = 2 order by se1.rank asc;
D´ale byl implementov´ an SQL dotaz pro vyhled´an´ı synonym, zde je uveden s pˇr´ıkladem pro slovo house: • synonyma (slova se stejn´ ym v´ yznamem) select synsetid, w2.lemma from sense left join word as w2 on w2.wordid=sense.wordid where sense.synsetid in ( select sense.synsetid from word as w1 left join sense on w1.wordid=sense.wordid where w1.lemma=’house’ ) and w2.lemma<>’house’;
Proveden´ı tohoto dotazu trvalo v datab´azi ne´ unosnˇe dlouhou dobu, proto musel b´ yt nahrazen nˇekolika jednoduˇsˇs´ımi SQL dotazy. Tyto jednoduˇsˇs´ı SQL dotazy se vˇsak mus´ı opakovat v´ıcekr´at pomoc´ı cyklu a jsou uvedeny v sekci SQL dotaz˚ u, kter´e jiˇz nejsou souˇc´ast´ı dokumentace k datab´ azi MySQL 3.0. Posledn´ım pouˇzit´ ym SQL dotazem, je dotaz pro vyhled´an´ı antonym, zde je uveden pˇr´ıklad pro slovo black: • antonyma (slova s opaˇcn´ ym v´ yznamem) select se1.rank, w2.lemma, sy1.definition, sy2.definition from word w1 left join sense se1 on w1.wordid = se1.wordid left join synset sy1 on se1.synsetid = sy1.synsetid left join lexlinkref on sy1.synsetid = lexlinkref.synset1id and w1.wordid = lexlinkref.word1id left join synset sy2 on lexlinkref.synset2id = sy2.synsetid left join sense se2 on sy2.synsetid = se2.synsetid left join word w2 on se2.wordid = w2.wordid where w1.lemma = ’black’ and sy1.pos = ’a’ 20
and lexlinkref.linkid =30 order by se1.rank asc;
Vlastn´ı SQL dotazy pro MySQL WordNet 3.0 N´asleduj´ıc´ı dotazy jiˇz nejsou souˇc´ast´ı dokumentace k datab´azi MySQL WordNet 3.0. Dotaz pro z´ısk´ an´ı slova po zad´an´ı jeho id. Pro n´azornost uvedeno slovo make, kter´e m´ a v datab´ azi identifikaˇcn´ı ˇc´ıslo 80925. • nalezen´ı slova podle id SELECT lemma FROM word WHERE wordid = ’80925’;
Opaˇcn´ ym dotazem z´ısk´ ame id slova. Pro n´azornost uvedeno opˇet slovo make. • z´ısk´ an´ı id podle zadan´eho slova SELECT wordid FROM word WHERE lemma = ’make’;
Dalˇs´ım dotazem, je dotaz pro nalezen´ı synonym. Tento dotaz se skl´ad´a ze dvou ˇc´ast´ı. Pro z´ısk´ an´ı synonym hledan´eho slova potˇrebujeme nejprve zjistit identifikaˇcn´ı ˇc´ısla vˇsech jeho synset˚ u. Prov´ adˇen´ı toho dotazu zajiˇst’uje cyklus, kter´ y se opakuje dokud nezjist´ıme id vˇsech synset˚ u. Uvad´ım pˇr´ıklad pro slovo make. Jeho id uˇz zn´ame - 80925. • a) synonyma - vyhled´ an´ı synset˚ u SELECT synsetid FROM sense WHERE wordid = ’80925’;
Po obdrˇzen´ı informac´ı o id synset˚ u lze z´ıskat id synonym hledan´eho slova. Tento dotaz je prov´ adˇen opˇet v cyklu, dokud nejsou nalezena vˇsechna synonyma od hledan´eho slova. Za promˇenou synsets jsou postupnˇe dosazov´any ˇc´ısla vˇsech synset˚ u. Jako v´ ysledek z´ısk´ame id vˇsech synonym hledan´eho slova. • b) synonyma - vyhled´ an´ı id synonym SELECT wordid FROM sense WHERE synsetid = ’synsets’;
Kdyˇz zn´ ame id synonym m˚ uˇzeme jiˇz snadno zjistit slova samotn´a. N´asleduj´ıc´ı dotaz vyhled´ a v datab´azi v´ yznam slova, tedy jeho definici. Hodnota pro jeden ze synset˚ u naˇseho pˇr´ıkladu (slova make) je 100340463. • vyhled´ an´ı definice slova SELECT definition FROM synset WHERE synsetid = ’100340463’;
21
Podobn´ ym dotazem obdrˇz´ıme i pˇr´ıklad pouˇzit´ı ve vˇetˇe. Opˇet staˇc´ı zadat hodnotu pro synset jehoˇz pˇr´ıklad hled´ ame. • vyhled´ an´ı pˇr´ıkladu slova SELECT sample FROM sample WHERE synsetid =
’100340463’;
Vˇsechny uveden´e SQL dotazy implementuj´ı funkce knihovny pro programov´e rozhran´ı. Slouˇz´ı sp´ıˇse jako demonstrace struktury datab´aze WordNet MySQL 3.0.
5.2
Grafick´ e uˇ zivatelsk´ e rozhrann´ı
Grafick´e rozhran´ı umoˇzn ˇuje uˇzivateli programu jednoduˇse a intuitivnˇe ovl´adat program. Tvoˇr´ı nadstavbu nad knihovnou pro programov´e rozhran´ı a vyuˇz´ıv´a jej´ı funkce na z´ısk´ an´ı potˇrebn´ ych dat. Tato data zobrazuje uˇzivateli pomoc´ı grafick´ ych komponent. V programovac´ım jazyku Java je moˇzn´e vyuˇz´ıt dvou grafick´ ych uˇzivatelsk´ ych prostˇred´ı ’ [5]. Bud to starˇs´ıho AWT (Abstract Windowing Toolkit) nebo novˇejˇs´ıho JFC Swing (Java Foundation Classes) AWT je souˇc´ast´ı jazyka Java od JDK 1.0, Swing od JDK 1.2. Pro program JWord jsem se rozhodl vyuˇz´ıt modernˇejˇs´ıho prostˇred´ı Swing.
5.2.1
Prostˇ red´ı Swing
Pro tvorbu grafick´eho uˇzivatelsk´eho rozhr´an´ı bylo vyuˇzito nˇekolika komponent JFC Swing. Na z´akladn´ım oknˇe (JFrame) jsou postupnˇe vyuˇzity tyto komponenty:
seznam vyuˇ zit´ ych komponent prostˇ red´ı Swing • JTree • JTabbedPane • JComboBox • JTextField • JButton • JLabbel Hledan´e slovo se zad´ av´ a do komponenty JTextField. Jeho vyhled´an´ı zajiˇst’uje stisknut´ı tlaˇc´ıtka (komponenta JButton). Nejd˚ uleˇzitˇejˇs´ım prvkem cel´eho GUI jsou v´ yznamy hledan´eho slova, kter´e zobrazuje komponenta JTree. Uspoˇr´ad´an´ı do stromu dostalo pˇrednost pˇred vypisov´ an´ım do obyˇcejn´e JTextArea d´ıky sv´e pˇrehlednosti a snaˇzˇs´ı manipulaci s daty. Pro zn´ azornˇen´ı pˇr´ıbuzn´ ych slov (synonym, antonym, hyponym a hypernym) pouˇz´ıv´a program JWord komponenty JTabbedPane. Uˇzvatel tak m˚ uˇze pohodlnˇe prohl´ıˇzet jednotliv´e typy slov. Pro uchov´ an´ı historie hledan´ ych slov a pˇripojen´ı do datab´aze je v nov´em GUI programu JWord vyuˇzito komponenty JComboBox. Jako popis nˇekter´ ych ud´alost´ı je pouˇzit JLabbel
22
5.2.2
Programov´ aˇ c´ ast GUI
Programov´ a ˇc´ ast GUI se skl´ ad´ a z nˇekolika blok˚ u. Tyto ˇc´asti tvoˇr´ı metody, kter´e vkl´adaj´ı data do grafick´ ych komponent a obsluhuj´ı ud´alosti vyvolan´e uˇzivatelem. • zobrazen´ı v´ yznam˚ u slova • pˇr´ıbuzn´ a slova • zad´ an´ı hledan´eho slova • historie • pˇripojen´ı do datab´ aze • nastaven´ı nov´eho pˇripojen´ı zobrazen´ı v´ yznam˚ u slova Hlavn´ı ˇc´ ast programu slouˇz´ı k zobrazen´ı v´ yznam˚ u hledan´eho slova. Z´ıskan´a data zobrzazuje strom sloˇzen´ y ze ˇctyˇr z´ akladn´ıch uzl˚ u. Uzly obsahuj´ı v´ yznamy slova podle toho v jak´em se vyskytuje slovn´ım druhu. • Nouns - v´ yznamy pro podstatn´e jm´eno • Verbs - v´ yznamy pro sloveso • Adverbs - v´ yznamy pro pˇr´ıslovce • Adjectives - v´ yznamy pro pˇr´ıdavn´e jm´eno Tyto vˇetve jsou naplnˇeny daty ihned po zad´an´ı hledan´eho slova. Metoda, nejprve z´ısk´ a data od knihovny pro programov´e rozhran´ı a pot´e data roztˇr´ıd´ı podle slovn´ıho druhu. Na z´ avˇer pˇriˇrad´ı do kaˇzd´e vˇetve odpov´ıdaj´ıc´ı v´ yznamy. pˇ r´ıbuzn´ a slova Podstatnou ˇc´ ast programu tvoˇr´ı panel pro zobrazen´ı pˇr´ıbuzn´ ych slov. Tento panel m´a ˇctyˇri seznamy, do kter´ ych vypisuje synonyma, antonyma, hyponyma a hypernma. K tomuto u ´ˇcelu je vyuˇzito ˇctyˇr funkc´ı. • static void printSynonym(String word) • static void printAntonym(String word) • static void printHyponym(String word) • static void printHypernym(String word) Tyto funkce z´ısk´ avaj´ı data z knihovny pro programov´e rozhran´ı a vkl´adaj´ı obdrˇzen´ a data do sv´ ych seznam˚ u. Pro urychlen´ı programu se seznam zobrazuj´ıc´ı synonyma napln´ı z´aroveˇ n s v´ yznamy slov. Dalˇs´ı kontaktov´ an´ı datab´ aze probˇehne aˇz po kliknut´ı uˇzivatele na nˇekter´ y z dalˇs´ıch seznam˚ u
23
pro antonyma, hypernyma nebo hyponyma. Tuto situaci zajiˇst’uje zaregistrov´an´a ud´alost ChangeListener. Kaˇzd´ y ze ˇctyˇr seznam˚ u implementuje metodu MouseListener. Tato skuteˇcnost umoˇzn ˇuje seznam˚ um reagovat na kliknut´ı myˇsi. Pˇri dvojkliku tak program automaticky vyhled´ a oznaˇcenn´e slovo. Seznam obsahuj´ıc´ı synonyma hledan´eho slova m´a zaregistrovanou ud´alost ListSelectionListener. Proto reaguje na oznaˇcen´ı poloˇzky seznamu. Pokud tedy uˇzivatel zvol´ı nˇekter´e ze synonym, strom obsahuj´ıc´ı v´ yznamy slov se rozbal´ı aˇz po vˇetev, kter´a je v´ yznamem oznaˇcen´eho synonyma. zad´ an´ı hledan´ eho slova Panel pro zad´ an´ı slova, kter´e bude zpracov´av´ano se skl´ad´a ze tˇr´ı ˇc´ast´ı. Tvoˇr´ı je popisek, textov´e pole, kam uˇzivatel nap´ıˇse slovo urˇcen´e ke zpracov´an´ı a tlaˇc´ıtko. Uˇzivatel m˚ uˇze ’ spustit vyhled´ av´ an´ı bud stiskem tlaˇc´ıtka Search nebo stiskem kl´avesy Enter. To zaruˇcuje obsluhovan´ a ud´ alost textov´eho pole ActionPerformed. Po ud´ an´ı povelu ke zpracov´ an´ı zadan´eho slova provede program metodu, kter´a obslouˇz´ı jak funkce pro grafickou komponentu zobrazen´ı v´ yznam˚ u slova, tak i funkce pro grafickou komponentu zobrazuj´ıc´ı pˇr´ıbuzn´a slova. Po vykon´an´ı tˇechto funkc´ı obsahuj´ı grafick´e komponenty aktualizovan´ a data odpov´ıdaj´ıc´ı pro novˇe zadan´e slovo. historie Historie zadan´ ych slov realizuje komponenta JComboBox. Kaˇzd´e slovo, o kter´em vyhled´avme informace, program automaticky vkl´ad´a i do historie (pokud se vˇsak jiˇz v historii nenal´ez´ a). Pokud uˇzivatel vybere nˇekter´e slovo z historie, program se zachov´a stejnˇe jako pˇri zad´ an´ı nov´eho slova. Tuto sluˇzbu poskytuje zaregistrovan´a ud´alost ActionPerformed. pˇ ripojen´ı do datab´ aze Pˇripojen´ı do datab´ aze tak´e vyyuˇz´ıv´a komponenty JComboBox. Po spuˇstˇen´ı program naˇcte vˇsechna existuj´ıc´ı pˇripojen´ı ze souboru connect.dat. Vybr´an´ım jedn´e poloˇzky JComboBoxu se program zaˇcne pˇripojovat ke zvolen´e datab´azi. Tuto vlastnost zaruˇcuje opˇet ud´alost ActionPerformed. Stav pˇripojen´ı k datab´azi ud´av´a popisek v lev´em doln´ım rohu programu. nastaven´ı nov´ eho pˇ ripojen´ı Program uˇzivateli umoˇzn ˇuje i vytvoˇren´ı sv´eho vlastn´ıho pˇripojen´ı k datab´azi WordNet 3.0. Tuto moˇznost vyvol´ a uˇzivatel stiskem tlaˇc´ıtka Connection setup. V nov´em oknˇe pak vypln´ı potˇrebn´e u ´daje. Tyto u ´daje program uloˇz´ı do souboru connect.dat ve form´atu vhodn´em pro pˇripojen´ı knihovnou mysql connector.
5.2.3
Manu´ al ke GUI
Pouˇz´ıv´ an´ı programu JWord je velmi intuitivn´ı, pˇresto zde pop´ıˇsi z´akladn´ı ovl´ad´an´ı tohoto ´ programu. Uvodn´ ı okno programu, jak je vidˇet na obr´azku 5.1, je rozdˇeleno do nˇekolika ˇc´ast´ı. 1. Textov´e pole, do kter´eho uˇzivatel vepisuje hledan´ y v´ yraz. Pro vyhled´an´ı slova stisknˇete tlaˇc´ıtko Search, kter´e se nach´az´ı na pravo od textov´eho pole nebo stisknˇete Enter. 24
Obr´ azek 5.1: Nov´e GUI vytvoˇren´e pomoc´ı Swing
2. Pˇripojen´ı k datab´ azi MySQL Wordnet 3.0. Po spuˇstˇen´ı programu vyberte pomoc´ı rozbalovac´ıho menu pˇripojen´ı ke sv´e datab´azi nebo pˇripojen´ı vytvoˇrte (6). 3. Strom, kter´ y zobrazuje nalezen´e v´ yrazy hledan´eho slova. Obsahuje ˇctyˇri vˇetve: • • • •
Nouns - v´ yrazy, kde m´a hledan´e slovo v´ yznam podstatn´eho jm´ena Verbs - hledan´e slovo je v tˇechto v´ yznamech slovesem Adverbs - v´ yznamy pro pˇr´ıslovce Adjectives - hledan´e slovo je ve tvaru pˇr´ıdavn´eho jm´ena
Po rozkliknut´ı nˇekter´e z vˇetv´ı, zobraz´ı program dalˇs´ı vˇetve s v´ yznamy hledan´eho slova. U kaˇzd´eho v´ yznamu je uveden i pˇr´ıklad pouˇzit´ı ve vˇetˇe. Ten je veps´an do uvozovek. Synonyma hledan´eho slova, uˇzivatel zjist´ı rozkliknut´ım vˇetve s v´ yznamem slova. 4. Panel se slovy pˇr´ıbuzn´ ymi k hledan´emu slovu. Uˇzivateli jsou zde v samostan´ ych seznamech zobrazena synonyma (slova se stejn´ ym v´ yznamem), antonyma (slova s opaˇcn´ ym v´ yznamem), hyponyma (slova s konkr´etnˇejˇs´ım v´ yznamem), hypernyma (slova s obecnˇejˇs´ım v´ yznamem). Pokud uˇzivatel poklepe na nˇekter´e ze zobrazen´ ych slov, program toto slovo okamˇzitˇe vyhled´ a. U synonym pak po oznaˇcen´ı slova, program vyhled´a jeho v´ yznam v lev´em oknˇe a rozbal´ı strom aˇz k tomuto v´ yznamu. 5. Historie, do tohoto rozbalovac´ıho menu program ukl´ad´a vˇsechna hledan´a slova. Pokud se chce uˇzivatel k nˇekter´emu slovu vr´atit staˇc´ı jej vybrat. 6. Pˇripojen´ı do datab´ aze, po stisku tlaˇc´ıtka Connection setup se otevˇre nov´e okno. V tomto oknˇe uˇzivatel m˚ uˇze nastavit vlastn´ı pˇripojen´ı do datab´aze vyplnˇen´ım z´akladn´ıch informac´ı do formul´ aˇre. To bude i po restartu programu uloˇzeno v roletce pˇripojen´ı (2). 25
ˇ c´ıslo pokusu 1. pokus 2. pokus 3. pokus 4. pokus 5. pokus
ˇ cas vyhled´ av´ an´ı (sec) 0.9 sec 0.7 sec 0.7 sec 0.7 sec 0.6 sec
ˇ vyhled´an´ı dat o slovu make Tabulka 5.1: Cas
5.3
Testov´ an´ı
Kaˇzd´ y program mus´ı pˇred sv´ ym dokonˇcen´ım proj´ıt testovac´ı f´az´ı. Na testovan´ ych pˇr´ıkladech je demonstrov´ ana i funkˇcnost programu.
5.3.1
Vyhled´ an´ı informac´ı o slovu make
Program zobrazil 2 v´ yznamy pro podstatn´e jm´eno a 49 v´ yznam˚ u pro sloveso, jin´e slovn´ı druhy datab´ aze pro toto slovo neobsahuje. D´ale vypsal 69 synonym, 3 antonyma, 266 hyponym a 88 hypernym. V tabulce 5.1 uv´ad´ım ˇcas, za kter´ y program zobrazil informace o slovu make. Pr˚ umˇernˇe trvalo vyhled´ an´ı informac´ı ke slovu make 0.7 sekund. Do toho ˇcasu je zahrnuto vyhled´ an´ı v´ yznam˚ u slova, synonym a pˇriˇrazen´ı synonym k v´ yznam˚ um slova. Dalˇs´ı vztahy (antonyma, hypernyma, hyponyma) se zaˇcnou hledat aˇz po kliknut´ı uˇzivatelem na poloˇzku seznamu pro dan´ y vztah. Je tak uˇcinˇeno pr´avˇe kv˚ uli u ´spoˇre ˇcasu. Na obr´azku 5.2 m˚ uˇzete vidˇet v´ ysledek vyhled´ an´ı informac´ı pro zadan´e slovo.
Obr´ azek 5.2: Vyhled´an´ı informac´ı o slovu make
26
ˇ c´ıslo pokusu 1. pokus 2. pokus 3. pokus 4. pokus 5. pokus
ˇ cas vyhled´ av´ an´ı (sec) 0.8 sec 0.7 sec 0.7 sec 0.6 sec 0.5 sec
ˇ vyhled´an´ı dat o slovu clear Tabulka 5.2: Cas
5.3.2
Vyhled´ an´ı informac´ı o slovu clear
Program zobrazil 2 v´ yznamy pro podstatn´e jm´eno, 24 v´ yznam˚ u pro sloveso, 15 pro pˇr´ıslovce a 4 pro pˇr´ıdavn´e jm´eno. D´ ale vypsal 53 synonym, 4 antonyma, 41 hyponym a 54 hypernym. V tabulce 5.2 uv´ ad´ım ˇcas, za kter´ y program zobrazil informace o slovu clear. Pr˚ umˇernˇe trvalo vyhled´ an´ı informac´ı ke slovu clear 0.667 sekund. Na obr´azku 5.3 m˚ uˇzete vidˇet v´ ysledek vyhled´ an´ı informac´ı pro zadan´e slovo.
Obr´ azek 5.3: Vyhled´an´ı informac´ı o slovu clear
27
Kapitola 6
Z´ avˇ er C´ılem pr´ ace byla inovace st´ avaj´ıc´ıho grafick´eho uˇzivatelsk´eho rozhran´ı programu JWord 3.0. Jiˇz v pr˚ ubˇehu anal´ yzy vyˇslo najevo, ˇze vytvoˇren´ı pouze GUI nebude optim´aln´ı. Pˇri anal´ yze a n´ avrhu implementace byl kladen d˚ uraz zejm´ena na rychlost vyhled´av´an´ı vlastnost´ı od zadan´eho slova. S pˇrib´ yvaj´ıc´ımi poˇzadavky na z´ısk´av´an´ı informac´ı nebylo p˚ uvodn´ı vyhled´ av´ an´ı v souborech jiˇz dostaˇcuj´ıc´ı. Pro uloˇzen´ı dat lexik´aln´ıho slovn´ıku WordNet bylo, po zv´aˇzen´ı vˇsech moˇznost´ı, vyuˇzito datab´aze MySQL WordNet 3.0. Znaˇcnou ˇc´ast v´ yvoje aplikace zabrala tedy implementace nov´eho programov´eho rozhran´ı, kter´e vyuˇz´ıv´a tuto datab´azi. Ve druh´e f´ azi probˇehla implementace GUI, kter´e je nadstavbou nad t´ımto programov´ ym rozhran´ım. Program pro sv˚ uj bezprobl´emov´ y bˇeh potˇrebuje pˇripojen´ı k datab´azi MySQL WordNet 3.0. Aplikace by mˇela slouˇzit hlavnˇe v s´ıti FIT, kde je datab´aze pro WordNet pˇr´ıstupn´a na serveru minerva2. Protoˇze se pˇripojen´ı k datab´azi nastavuje pˇres uˇzivatelsk´e rozhran´ı, nen´ı probl´em pˇripojit se k j´ akemukoliv jin´emu serveru s datab´az´ı MySQL WordNet 3.0. Nejd˚ uleˇzitˇejˇs´ı ˇc´ ast´ı aplikace je vyhled´an´ı v´ yznam˚ u od zadan´eho slova. Aplikace d´ ale zobrazuje kromˇe seznamu vˇsech synonym i synonyma pro jednotliv´e v´ yznamy zadan´eho slova. Program uˇzivateli vypisuje i dalˇs´ı vztahy k hledan´emu slovu a tˇemi jsou seznamy vˇsech jeho antonym, hyponym a hypernym. Jako doplnˇek aplikace lze u ´v´est historii hledan´ ych slov.
6.1
Moˇ zn´ a rozˇ s´ıˇ ren´ı
Jako rozˇs´ıˇren´ı pr´ ace lze navrhnout pˇrizp˚ usoben´ı programov´eho rozhran´ı tak, aby mohlo obs´ahnou i data pro dalˇs´ı jazyky. Pˇr´ımo se nab´ız´ı zaˇclenit datab´aze z projekt˚ u jako je EuroWordNet a Global WordNet Association. Pro tento u ´ˇcel pak inovovat i grafick´e uˇzivatelsk´e rozhran´ı. Jedno z dalˇs´ıch moˇzn´ ych vylepˇsen´ıch programu m˚ uˇze b´ yt editaˇcn´ı m´od. Ten by mohl slouˇzit pro proch´ azen´ı, editaci a vkl´ad´an´ı nov´ ych ˇretˇezc˚ u ˇci cel´ ych synset˚ u do datab´aze. Toto vylepˇsen´ı by vˇsak jiˇz vyˇzadovalo n´aroˇcnˇejˇs´ı rozˇs´ıˇren´ı programov´eho rozhran´ı.
28
Literatura [1] The Global WordNet Asoccation. [online]. [cit. 2008-04-12]. Dostupn´ y z WWW: http://www.globalwordnet.org/. [2] Bernard Bou. A ready-to-use SQL database [online]. [cit. 2008-04-14]. Dostupn´ y z WWW: http://wordnet.princeton.edu/links#SQL. [3] EuroWordNet. [online]. [cit. 2008-04-12]. Dostupn´ y z WWW: http://www.illc.uva.nl/EuroWordNet/. ˇ e Budˇejovice: Kopp, 2006. 244 s. ISBN [4] P. Herout. Java - bohatstv´ı knihoven. Cesk´ 978-80-7232-288-5. ˇ e Budˇejovice: Kopp, [5] P. Herout. JAVA - grafick´e uˇzivatelsk´e prostˇred´ı a ˇceˇstina. Cesk´ 2007. 352 s. ISBN 978-80-7232-328-9. ˇ e Budˇejovice: Kopp, 2007. 320 s. ISBN [6] P. Herout. Uˇcebnice jazyka Java. Cesk´ 978-80-7232-323-4. [7] P. U. C. S. Laboratory. Wordnet 3.0 database statistics [online]. [cit. 2008-04-12]. Dostupn´ y z WWW: http://wordnet.princeton.edu/man/wnstats.7WN/. [8] J. Miller. Introduction to WordNet: An on-line lexical database [cit. 2007-10-02]. 1993. Dostupn´ y z WWW: http://wordnet.princeton.edu/5papers.pdf. [9] The George Washington University. JWord 3.0 [online]. [cit. 2007-10-02]. Dostupn´ y z WWW: http://www.seas.gwu.edu/~simhaweb/software/jword/. [10] Semantic Web. [online]. [cit. 2008-04-05]. http://www.w3.org/2001/sw. [11] Wikipedia. Gottfried Wilhelm Leibniz [online]. [cit. 2008-04-12]. Dostupn´ y z WWW: http://cs.wikipedia.org/wiki/Leibniz/.
29
Dodatek A
Pˇ r´ılohy A.1
Obsah pˇ riloˇ zen´ eho CD
Obsah jednotliv´ ych adres´ aˇr˚ u: • /help - n´ apovˇeda k programu ve form´atu html • /src - zdrojov´e k´ ody s dokumentac´ı ve form´atu JavaDoc • /dist - distribuce projektu ve formˇe JAR archivu vˇcetnˇe potˇrebn´ ych extern´ıch knihoven • /text - text t´eto bakal´ aˇrsk´e pr´ace ve form´atu pdf
30
A.2
Sch´ ema datab´ aze
Obr´ azek A.1: Sch´ema datab´aze MySQL WordNet 3.0 pˇrevzato z [2]
31