České vysoké učení technické v Praze Fakulta elektrotechnická Katedra počítačů Bakalářská práce Aplikace pro výuku cizího jazyka pomocí obrazové databáze Petr Nobst Vedoucí práce: Mgr. Michal Vavrečka, Ph.D. Studijní program: Otevřená informatika, Bakalářský Obor: Softwarové systémy 3. ledna 2014
Čestné prohlášení Prohlašuji, že jsem tuto bakalářskou práci vypracoval samostatně. Veškeré použité podklady, ze kterých jsem čerpal informace, jsou uvedeny v seznamu použité literatury a citovány v textu podle normy ČSN ISO 690. V Praze dne 3. 1. 2014............................... Petr Nobst
Poděkování Děkuji Michalu Vavřečkovi za odborné vedení práce, věcné připomínky, dobré rady a vstřícnost při konzultacích a vypracovávání bakalářské práce.
Abstrakt Tato bakalářská práce se věnuje problematice výuky cizího jazyka na mobilním zařízení. Na základě analýzy dostupných aplikací definuje jejich nedostatky a silné stránky. Z nich poté vzniká návrh nové aplikace, která tyto nedostatky adresuje. Pro aplikaci byla vybrána platforma Android jako jedna z nejrozšířenějších na chytrých mobilních zařízením a tabletech. Cílem práce je vytvoření funkčního prototypu aplikace a vytvoření postupů pro její další rozšíření. Klíčová slova Android, aplikace, výuka cizích jazyků, obrazová databáze, WordNet
Obsah 1 Úvod... 6 2 Současné možnosti... 7 2.1 Babbel... 7 2.2 Duolingo... 10 2.3 Hello-Hello... 12 2.4 Závěr... 14 3 WordNet... 14 3.1 Definice WordNetu... 14 3.2 Struktura WordNetu... 15 3.3 Analýza záznamu... 16 4. ImageNet... 16 4.1 Definice ImageNetu... 16 4.2 Struktura ImageNetu... 16 5 Vlastní řešení... 17 5.1 Použité technologie... 17 5.2 Popis projektu... 17 5.3 Uživatelské rozhraní... 19 5.4 Rozbor kódu... 20 5.5 Zhodnocení aplikace... 23 5.6 Možnosti rozšíření... 23 6 Závěr... 24
1 Úvod Znalost alespoň jednoho cizího jazyka je v současné době schopnost téměř nutná. Ať je to při hledání práce, nebo v běžném životě, tato znalost nám pomáhá a usnadňuje život. Důvody, podle kterých si vybíráme jazyk, který se budeme učit, se různí, od mluví se s ním v okolních zemích po potřebuji ho v zaměstnání. Pro angličtinu, ačkoli jako mateřský jazyk je až na třetím místě [1], se rozhodne mnoho lidí i díky značnému rozšíření v informačních technologiích. Při výuce, respektive procvičování, cizího jazyka je potřeba neustálého opakování probrané látky. V hodinách se probírá hlavně gramatika a jazyková pravidla a slovní zásoba, jenž je časově náročná se obvykle nechává na studentech ve formě domácích úkolů či procvičování. Ačkoli ke konverzaci na několik málo témat není potřeba rozsáhlé slovní zásoby, získání dostatečné a široké slovní zásoby je nutné pro použití jazyka v každodenních situacích. Mobilní telefony, hlavně jejich chytří nástupci (smartphone) dali uživatelům do rukou nástroj, který se dá použít nejen ke komunikaci, ale i k zábavě či výuce. Není divu, že mezi mnoha aplikacemi, které jsou pro chytré telefony (a tablety) k dispozici, se objevily i programy na výuku jazyka. Výhodou výukových programů v telefonu je, že nemusíte nosit nic navíc, než normálně nosíte, tzn., odpadá nošení učebnice a telefon je, většinou, i menší než kniha. Další nezanedbatelnou výhodou je možnost spuštění programu kdykoli, např. během jízdy městskou dopravou, při čekání na zkoušku nebo ve frontě při nákupu. Tyto příklady dávají tušit i omezení, které pro využití telefonu, jako výukového nástroje platí. Telefon nenahradí učebnici a uživatel se k němu uchýlí hlavně v případě, že klasický způsob učení je nemožný nebo nepraktický. Všechny příklady využití mají společné další omezení a to je nedostatek času. Pokud má být telefon, resp. jeho aplikace využitelná pro výuku musí být rychlá, přehledná a snadno ovladatelná. Důvodem pro výběr tohoto tématu je můj zájem o mobilní technologie, potřeba a nemožnost klasického procvičování cizího jazyka a také množství času stráveného na cestách. [1] The World Factbook [online]. The Central Intelligence Agency. (platné ke 2009). Dostupné z https://www.cia.gov/library/publications/the-world-factbook/fields/2098.html#xx. 6
2 Současné možnosti Prvním krokem vývoje nového softwaru je analýza trhu, zda se nový produkt upotřebí a jestli bude mít nějaké zájemce. Protože jsem se rozhodl vyvíjet aplikaci pro Android, hledal jsem podobné aplikace, konkurenci, na Google Play. Programů na výuku jazyka je ke stažení mnoho, ale aplikací, které by kombinovaly text s obrazovou informací je velice málo. Rozhodl jsem se otestovat a porovnat tři aplikace od výrobců Babbel, Duolingo a Hello-Hello. Všechny testy probíhaly na přístroji ASUS Transformer Pad TF300TG s operačním systémem Android 4.2.1. Každou aplikaci jsem porovnával z několika aspektů slovní zásoba, uživatelská přívětivost a ostatní. Každé porovnání je ve formě krátké recenze, doplněné snímky obrazovky, kde na konci jsou uvedeny klady a zápory aplikace a technické informace o testované verzi. 2.1 Babbel Od Babbelu jsem se rozhodl otestovat aplikaci Learn Spanish with Babbel (dále jen Babbel). Obrázek 1: Úvodní stránka Learn Spanish with Babbel Aplikace Babbel má dva režimy ve kterých funguje. Základní režim, který nevyžaduje přihlášení a rozšířený, který se zpřístupní po přihlášení do aplikace. Přihlásit se je možné pomocí účtu na sociální síti Facebook nebo pomocí účtu Babbel, jehož vytvoření je zdarma a je možné přímo v aplikaci. 7
Babbel má dva režimy výuku a testování. Testování je možné pouze po přihlášení, ale výuka je dostupná v obou režimech, i když v základním pouze omezeně. Aplikace obsahuje 31 různých pevně definovaných kategorií, každá z nich obsahuje několik skupin slov. Počet skupin se různí od 4 v kategorii Rockstars and Fans po 16 skupin slov v kategorii Food and Drinks. Počet slov ve skupině není pevně daný, ale většinou se pohybuje kolem 10 slov. Základní verze je omezeně počtem skupin, které jsem dostupné (většinou pouze jedna na kategorii), obsahuje tedy kolem 350 slov. Rozšířená verze je na tom v tomto ohledu mnohem lépe a obsahuje kolem 2500 slov. Nevýhodou je nutnost nezákladní skupiny dodatečně stáhnout z internetu. Obrázek 2: Kategorie a skupiny slov v kategorii Food and Drinks. Skupiny s šedou šipkou jsou z rozšířené verze Skupiny je možné procházet třemi způsoby. První je seznámení, což je kombinací výuky, která spočívá v zobrazení obrazu, textu a přečtení slova, zopakování si slov pomocí dvou testů. Pořadí testů je vždy stejné- první kde musíte správně určit obrázek ze čtyř možných, druhý kde vybíráte první písmeno slova zobrazeného pomocí obrázku. Celá skupina je rozdělena do podskupin po 4 slovech, která se učíte společně. Druhý způsob procházení je opakování, kde je testována znalost slov z celé skupiny, ve stejných podskupinách jako byly ve výuce. Testy jsou složitější a rozmanitější. Určování obrázku podle slova zůstalo, ale tentokrát obrázky mění svoji pozici, dále je tu doplnění 8
správného slova z nabídky do věty. Věta je napsaná celá anglicky a španělsky, kde je označena pozice chybějícího slova. Poslední test je zapsání slova pomocí nabídnutých písmen. Třetí a poslední způsob je zobrazení celé skupiny a možnost poslechu jednotlivých slov a otestování vlastní výslovnosti. Toto otestování zobrazí i nějaké skóre, nejspíše v rozmezí 0-100 podle toho jak přesně je to vysloveno. Ale je velice obtížné dostat více než 80 a méně než 50, s výjimkou 0. Bohužel, dokud se vám nepodaří získat jiné skóre než 0 tak se nedostanete k jinému slovu. Po delším používání aplikace a přihlášení do rozšířené verze je k dispozici funkce opakování slov. Tato možnost se synchronizuje se servery Babbelu, tzn., pokud se přihlásíte na jiném přístroji se stejným účtem, budou na vás čekat stejná slovíčka k opakování. Babbel nevysvětluje, jak vybírá slovíčka k opakování, ale odhaduje, že je to na času od prvního učení slova, popř. posledního opakování. Obrázek 3: Výuka a testy slovní zásoby Výhodou Babbelu je veliká slovní zásoba po přihlášení, jednoduché přihlášení a registrace, uživatelská přívětivost, hlavně díky dostatečně velkým tlačítkům a minimu prvků, které by rozptylovaly pozornost nebo u kterých není jasná jejich funkce. Další výhodou je možnost 9
poslechnout si každé slovo několikrát a otestovat si vlastní výslovnost. Obrazová a zvuková část je dobře provedená, a nenarazil jsem na žádný obrázek, který by byl matoucí. Nevýhodami Babbelu je velikost aplikace (37MB základní verze a dalších 26MB rozšířená) a nutnost přihlášení, pokud chci využívat všechny funkce a celou slovní zásobu, nemožnost v testu pokračovat dále pokud nesplním současný krok a relativní jednoduchost testů v žádném testu není postih za chyby a všechny testy jdou splnit pouhým klikáním na nevyzkoušené možnosti. Nevýhodou je také omezená slovní zásoba. Kompletní sice obsahuje přes 2500 slov, ale ty jsou pevně daná a rozdělená do skupin, takže pokaždé když si zobrazím jednu ze skupin, budou tam ta stejná slova ve stejném pořadí. Nevýhodou zvukového záznamu je rozmanitost hlasů, které to namluvily. Ne všechny jsou stejně srozumitelné a občas je potřeba si to poslechnout několikrát. 2.2 Duolingo Duolingo je jedna aplikace, která obsahuje 5 jazyků, s možností učit se z angličtiny do vybraného jazyka nebo naopak. Aplikace je postavená jako hra, ve které získáváte zkušenosti a úrovně podle toho jak se vám daří, což je určitě zajímavý nápad, ale nemusí to být pro každou věkovou skupinu. Vzhledem k tomu, že je to postavené jako hra je nutné mít někde uložené výsledky, což vede k tomu, že bez přihlášení se dál nedostanete. Přihlášení je možné pomoci účtů Facebook, Google+ nebo účtu jen pro Duolingo, který si můžete vytvořit přímo v aplikaci. Obrázek 4: Vlevo statistiky uživatele a v pozadí výukový plán. Vpravo výuka nového slova 10
Aplikace má připravený výukový plán, který si lze nahlédnout. Pokud nejste začátečník a chcete část přeskočit, je tu možnost použít jednu z několika testů, které po úspěšném splnění dovolí přeskočit část výukového plánu. Každá kapitola výukového plánu se skládá z několika lekcí. Výuka probíhá pomocí testů, které jsou ve formě výběru správného obrázku, přeložení slova do angličtiny nebo cizího jazyka, popř. čtení věty. Jelikož je to hra, jsou k dispozici 4 životy, které mizí v případě chyby. Pokud ztratíte všechny životy se nutné celou lekci opakovat. V případě úspěšného splnění lekce jsou odměnou zkušenosti, které hráči zvyšují úroveň. Úroveň ani zkušenosti nemají žádný dopad na výuku samotnou, jsou tu pouze jako motivační prvek. Lze si také najít přátele pomocí emailu nebo uživatelského jména a porovnávat se s nimi. Obrázek 5: Vlevo chyba při testu. Vpravo i v testu jsou nová slova vysvětlena Mezi výhody Duolinga patří hravý způsob provedení a motivace k úspěchu, možnost přeskočit část výuky pro pokročilejší uživatele, nebo možnost vypnout zvukové úlohy. Patří sem i možnost nastavit si posílání různých připomínek, např. připomenutí procvičování, když mne některý z přátel předběhne apod. Výhodou je i možnost přepnutí jazyka v rámci jedná aplikace bez nutnosti dalšího stahování. Aplikace je ze všech zkoušených nejmenší s pouhými 11MB. 11
Velkou nevýhodou je nutnost přihlášení, bez kterého nelze spustit. Nemožnost vybrat si lekci, kterou se chci naučit je drobnost, horší je ztráta veškerého postupu ať už v lekci, nebo v testu v případě, že se vrátím na úvodní stránku. Dokud nedokončíte celou lekci nebo test najednou tak se nedostanete dál. Občas je i problém, že se v testu objeví slovo, které nebylo dříve vysvětlené. Vzhledem k nemožnosti zjistit co se skrývá v zamčených lekcích je v nevýhodách i rozsah vyučované slovní zásoby. Odhad založený na počtu kapitol, jednotlivých lekcí v nich a počtu slov v dostupných lekcích odhaduji počet slov přes 2000. 2.3 Hello-Hello Od vydavatele Hello-Hello je několik aplikací. Rozhodl jsem se testovat Basic Italian. Na rozdíl od předchozích aplikací je primárně určen pro telefony a jako lze zobrazit pouze na výšku. Při spuštění dostanete na výběr jazyka pro překlad, ve chvíli kdy žádný nezvolíte, tak se automaticky nastaví italština. Tato aplikace má volně dostupnou pouze jednu z devíti kategorií, zbytek je dostupný pouze po koupi, s tím, že jednotlivá kategorie stojí 3.99. Kategorie Základy obsahuje 9 skupin slov rozdělených podle zaměření. Počet slov ve skupině se pohybuje mezi 12 v Měsíce a 26 v rodina. Celkem je zdarma k dispozici kolem 160 slov, což je nejméně ze všech testovaných aplikací. Obrázek 6: Vlevo seznam skupin v kategorii Základy. Vpravo seznam slov v jednom druhu zobrazení 12
Basic Italian obsahuje možnost výuky a testování znalostí. Výuka probíhá jen formou zobrazení a přečtení vybraného slova. Je na uživateli, které slovo si vybere, a není tu žádná kontrola, které slova již byla vybrána. Slovíčka je možné zobrazit třemi způsoby. První je seznam slov v angličtině a po straně se zobrazuje, druhý způsob je ve formě kartiček, mezi kterými uživatel přechází v daném pořadí. Kartička má z obou stran stejný obrázek ale text se liší podle jazyka, je to tedy možnost zkoušení se. Poslední způsob zobrazení jsou všechna slova v cizím jazyku a jejich obrázky najednou. Tato verze má z uživatelského pohledu nejvíce chyb, jelikož zde chybí anglická verze slova, takže nemám kontrolu, že jsem obrázek poznal správně a posun celé stránky, vzhledem k velkému množství obrázků je velice pomalý. Všechny zobrazení mají možnost nechat si slovo přečíst. Obrázek 7: Vlevo procvičování čtení. Vpravo procvičování poslechu Procvičování má čtyři módy. Čtení, kde se doplňuje slovo z nabídky podle obrázku. Mluvení, kde je možnost namluvit slovo a porovnat záznam s již namluveným. Bohužel u této možnosti není žádná automatická kontrola správnosti. Třetím módem je procvičování poslouchání. Podle poslechu se musí vybrat správný obrázek. Jako u Babbelu, zde chybí trest za nesprávně vybraný. Poslední je procvičování psaní. Je zde pouze obrázek, možnost poslechnout si slovo a uživatel musí správně napsat slovo. V případě chyby se místo obrázku zobrazí správně napsané slovo a uživatel má možnost si svoje opravit. 13
U žádného z procvičování není kontrola, nebo nějaký automatické procházení slov. Vše je na uživateli. Poslední, co Basic Italian nabízí, je vyhledávání, které v předchozích aplikacích nebylo a funguje jako slovník. Bohužel nelze zobrazit vše, co tento slovník obsahuje, takže lze vyhledávat jen to, co uživatel ví, že v aplikaci je. Další chybou vyhledávání je přehrávání zvuku. Nalezená slova, lze přehrát, ale přehrávání se nepřeruší v případě, že kliknu na jiné slovo. Stává se tedy, že mluví několik slov zároveň. Výhod má Basic Italian velice málo. Jednou z nich je možnost koupit všechny kategorie zároveň se slevou, ale vzhledem k tomu, že ostatní aplikace jsou zdarma, je to výhoda diskutabilní. Další výhodou jsou čtyři druhy procvičování a možnost přecházení mezi slovy během zkoušení. Seznam nevýhod je o něco delší. První a největší je velikost slovní zásoby a nutnost koupě rozšíření. Aplikace je pomalá a reakční čas při přepínání mezi jednotlivými obrazovkami se občas blíží k jedné vteřině. Obrázky nejsou vždy jednoznačné, což vadí hlavně při testování. Na obrázku 7 je vlevo obrázek pro Leden, ale také to může být Květen nebo Září. Uživatel tedy musí spoléhat hlavně na zvukovou část testu. Nedostatek u procvičování mluvení jsem zmiňoval již dříve. Celkově je Basic Italian nejhůře provedený a vybavený ze všech testovaných aplikací. 2.4 Závěr U všech aplikací se rozsah kompletní slovní zásoby pohybuje v řádu tisíců, ale všechny tyto záznamy jsou pevně dané a ručně vybrané. Na jednu stranu to zaručuje jistou dávku kvality, až do úrovně člověka, nebo skupiny lidí, která je vybírá, na stranu druhou je to zásoba omezená, která se nijak nemění. Pokud předpokládám, že se aplikace používají hlavně při čekání na MHD a dojíždění do práce, dá se denně naučit a procvičit i několik desítek slovíček, podle zkušenosti uživatele a dostupného času. Uživatel nemá možnost ovlivnit vybraná slova v kategorii a ve chvíli, kdy se naučí všechny slovíčka, není žádná možnost jak se naučit další. Nevýhodou ručního vybírání slovní zásoby je náročnost na lidskou práci a čas. V aplikaci vyvíjené v této práci, jsem se zaměřil na získání co největší možné slovní zásoby s minimem investované lidské práce. 3 WordNet 3.1 Definice WordNetu WordNet je slovní databáze anglických podstatných a přídavných jmen, sloves a příslovcí vytvořená a udržovaná na americké univerzitě Princeton, dostupná na adrese http://wordnet.princeton.edu/. Slova jsou spojena do skupin (synsetů) na základě asociací a synonym slovy označující stejný koncept, např. auto a automobil. Každé slovo má k sobě přiřazen význam a dohromady tvoří unikátní pár. Současná databáze WordNetu obsahuje 206941 takovýchto párů [1], z čehož necelé ¾ jsou mezi podstatnými jmény. 14
Nyní existují projekty podobné WordNetu i pro jiné jazyky v různém stupni rozpracovanosti a dostupnosti. 3.2 Struktura WordNetu Databáze WordNetu z Princetonu se skládá ze tří textových souborů pro každý slovní druh. První je data.* (kde * je nahrazen slovním druhem). Tento soubor obsahuje pozici synsetu a jeho vazby na ostatní synsety. Další soubor je index.*, který obsahuje abecedně seřazená slova patřící do daného slovesného druhu. Tyto dva soubory jsou hlavní pro zobrazování obsahu WordNet databáze. Třetí soubor je *.exc, který obsahuje slovesné výjimky, např. nepravidelné skloňování. Vzhledem k tématu bakalářské práce, jsem se rozhodl věnovat hlavně souborům obsahujícím podstatná jména, jelikož ta jsou co se zobrazení a pochopení z obrázků nejsnadnější. Po provedení analýzy obou souborů jsem se rozhodl, že v této práci soubor index.noun není potřeba, vzhledem k tomu, že nehodlám zobrazovat strukturu a vztahy synsetů, pouze konkrétní pojmy. Soubor data.noun, který obsahuje přes 82 tisíc záznamů, udržuje pozici synsetu v souboru a jeho vazby na další synsety. Výsledná struktura těchto skupin připomíná svým tvarem stromový graf, kdy vazby mezi skupinami jsou tvořeny různými asociacemi. [1] Princeton University "WordNet statistics." WordNet. Princeton University. 2010. http://wordnet.princeton.edu/wordnet/man/wnstats.7wn.html. Kromě prvních několika řádků, které obsahují licenční ujednání, každý další řádek má pevně danou strukturu, která umožnuje snadné procházení a rozpoznávání prvků. Pro vyvíjenou aplikaci je důležitá pozice synsetu v databázi, kategorii, do které bylo slovo přiřazeno, slovo či slova v synsetu obsažená, význam synsetu a také vztahy k ostatním synsetům. Protože synsety obsahují i sousloví, všechny mezery v nich jsou nahrazeny podtržítky, mezera je poté použita jako oddělovač jednotlivých informací na řádku. WordNet sice rozpoznává 19 různých vztahů mezi synsety, ale pro potřeby procházení souboru potřebujeme dva hlavní vztahy rodič a potomek. Ve WordNetu tyto závislosti jsou označovány jako hyperonymum, nadřazený pojem, a hyponymum, pojem podřazený. Každý synset v databázi má alespoň jednoho rodiče, ale může jich mít i více. Výjimku tvoří entita což je první záznam a jako takový má pouze potomky a je nadřazená všem záznamům. Bohužel WordNety v jiných jazycích používají vlastní strukturu odlišnou od původního WordNetu což znemožňuje automatické zpracování. Většina volně stažitelných databází je uložena v XML formátu s různou strukturou, pouze ruská verze má strukturu totožnou s WordNetem. 15
3.3 Analýza záznamu 00133039 04 n 02 plunk 0 plunker 0 002 @ 00126449 n 0000 ;c 00472688 n 0000 (baseball) hitting a baseball so that it drops suddenly Záznam 1: Záznam ze souboru data.noun Pokud si záznam rozdělíme do skupin podle mezer: První informace (00133039) udává bytovou polohu záznamu v soboru Druhá (04) kategorii synsetu, v tomto případě to označuje čin, akt Třetí informace n označuje podstatné jméno Čtvrtá obsahuje počet slov v synsetu, v tomto příkladu 2 plunk, plunker Dál se záznamy liší synset od synsetu, ale vždy obsahují vztah k dalším synsetu, který je ve formátu vztah pozice slovní druh. Každý z 19 vztahů mezi synsety má přiřazenou jeden až dvojznakovou zkratku, např. @ značí hyperonymum, tedy rodiče. Na konci většiny záznamů je význam oddělený symbolem. 4. ImageNet 4.1 Definice ImageNetu ImageNet je projekt navazující na WordNet dostupný na adrese http://image-net.org, snažící se nabídnou snadno přístupnou databázi obrázků. Vznikl z důvodu potřeby dostupnosti více dat. Sdružuje odkazy na více než 14 miliónů obrázků rozdělených do skupin podle hierarchie WordNetu. V současné době ImageNet obsahuje 21841 různých synsetů pro podstatná jména s více než tisícem odkazů pro většinu synsetů. Poslední zveřejněná verze je Podzim 2011. ImageNet nekontroluje automaticky, jestli odkaz je stále aktivní, nebo zdali je obsah relevantní. Každý uživatel, který si zobrazí nějaká data má možnost u obrázku označit, zda je relevantní pro daný synset. Vzniká tu riziko chybných nebo špatně zařazených obrazů. Neexistuje na to žádná statistika, ale odhadem se horní hranice chybovosti pohybuje v rámci jednotek procent. U některých abstraktnějších synsetů to může být o něco více. 4.2 Struktura ImageNetu ImageNet je podobně jako WordNetu rozdělen podle synsetů, každý synset obsahující různý počet odkazů na obrázky, které se k němu vztahují. Každý synset je označen pomocí tzn., WNID což značí ID, resp. adresu ve WordNetu. Tím je myšlena pozice synsetu v souboru data.noun. Ale vzhledem ke stáří poslední aktualizace ImageNetu a novým záznamům v databázi Wordnetu v současnosti mapování mezi ImageNetem a WordNetem neodpovídá. K dispozici je i mapování mezi verzí WNID používanou v ImageNetu a slovy v synsetu. Toto mapování je potřeby pro překlad mezi adresou synsetu ve WordNetu a WNID ImageNetu. 16
5 Vlastní řešení 5.1 Použité technologie Pro vývoj této aplikace jsem vybral systém Android, jakožto jeden z nejrozšířenějších operačních systémů s postavené na ActionScript 3 s podporou Adobe AIR. Pro vývoj aplikace byla použita trial verze Adobe Flash Professional CS6 (dále jen Flash). K vytvoření obrázků a vzhledu aplikace byla použita trial verze Adobe Photoshop CS6. K zobrazení a procházení databáze WordNetu z Princetonu a WordNetů jiných jazyků byl použit textový editor PSPad a Notepad distribuovaný ve Windows. Zpracování a nahrání databáze mapování mezi WordNet a ImageNet bylo provedeno pomocí programu SQLite Database Browser 5.2 Popis projektu Finální aplikaci tvoří jeden soubor ImageLearning.apk, který lze použít k instalaci, nahrání na Google Play, či přímo do podporovaného zařízení. Soubor *.apk je tvořen pomocí Flash a je podepsán certifikačním záznamem, který má uživatel k dispozici, nebo který si vytvoří v programu Flash. Tento soubor obsahuje všechny zkomprimované soubory projektu a je tímto soběstačný. Soubory CButton.as, FileStreamWithLineReader.as a Main.as obsahují zdrojový kód celé aplikace. Soubory iconb/m/s.png jsou ikony, které se zobrazují na zařízení po instalaci. Main.fla v sobě udržuje informace o projektu a jeho nastavení. Ve složce files jsou uloženy databázové soubory. Data.noun obsahuje kompletní databázi podstatných jmen WordNetu. Mapping.db obsahuje soubor mapping.txt ve formě čitelné pomocí SQL dotazů Ve složce images jsou uloženy všechny obrázky, které se používají na ovládacích prvcích aplikace. Přímo ve složce jsou obrázky ovládacích prvků V podsložce flag jsou vlajky států, používané na úvodní obrazovce Obrázek 8: Stromová struktura projektu Soubor Main.as obsahuje veškerou funkcionalitu, která se v aplikaci vyskytuje, kromě jedná výjimky, viz níže. CButton.as je soubor obsahující třídu, která vytváří všechny tlačítka v aplikaci. 17
Tuto třídu jsem vytvořil z důvodu potřeby velkého množství tlačítek, u kterých je potřeba nastavit obrázek, rozměry a pozici. Kód, který vytváří takto komplexní tlačítko je na 6-7 řádků. S pomocí této třídy, lze stejné tlačítko vytvořit na jednom řádku. Soubor FileStreamWithLineReader.as obsahuje rozšiřující třídu ke standardní FileStream, která se používá ke čtení souborů. Tato třída je výtvorem Sandeepa Gupty a je k dispozici na http://blog.sangupta.com/2010/12/actionscript-read-text-file-line-by.html. Je distribuována pod licencí APACHE 2.0 (http://www.apache.org/licenses/license-2.0). Jediná úprava v tomto souboru je změna projektu pod, který třída patří. Třída FileStreamWithLineReader rozšiřuje původní třídu o možnost čtení souboru po řádcích, čehož je dosáhnuto pomocí kontroly na ascii znaky používané k ukončení řádku - \r, \n nebo \r\n podle systému. Databáze mapping.db obsahuje jednu tabulku map, která má dva sloupce imagenet a word. Ve sloupci imagenet jsou uloženy WNID, tak jak jsou používány ImageNetem, ve sloupci word je uložen obsah odpovídajíc synsetů. Tabulka 1: Část mapovací databáze 18
5.3 Uživatelské rozhraní Při vytváření této aplikace byl kladen důraz na jednoduchost uživatelského prostředí a rychlou odezvu. Z tohoto důvodu aplikace má minimální počet tlačítek, každé dostatečně velké, aby se zabránilo nechtěným překlepům. Jediná část aplikace, kdy je potřeba čekat je při spuštění, kdy se načítá databáze WordNetu. I během toho je možné aplikaci používat, ale Výuka není k dispozici. Průběh načítání je zobrazen pomocí progress baru (indikátor průběhu), který je po načtení odstraněn. V současné době se aplikace skládá ze 7 obrazovek, mezi kterými je možno se pohybovat. Hlavní obrazovka obsahuje přechod mezi Výukou a Testováním. Obě tyto obrazovky vedou na seznam dostupných kategorií, ze kterých si uživatel může vybrat. Poslední je Statistika, kde obsahuje možnost přepnutí vyučovaného jazyka. Obrázek 9: Hlavní obrazovka Obrazovka, ve které bude uživatel trávit nejvíce času je obrazovka Výuky. Ta umožnuje uživateli procházet zvolenou kategorii a v případě dostupného internetového spojení i zobrazit výraz pomocí obrazu. Hlavním prvkem této obrazovky je obraz. Je to dominantní část, jelikož je to hlavní prvek, který uživateli pomáhá pochopit zobrazovaný výraz. V blízkosti obrázku je textové pole obsahující vyučovaný výraz a ve spodní části pole s popisem. Pole s popisem, je vhodnější hlavně pro pokročilejší uživatele, vzhledem k tomu, že může obsahovat i pojmy v aplikaci nevysvětlené. 19
Obrázek 10: Obrazovka výuky V případě nejasnosti obrazu, nebo potřeby si zobrazit různé obrázky k pojmu, má uživatel možnost obraz změnit. 5.4 Rozbor kódu Nejsložitější částí aplikace bylo vytvoření automatického procházení WordNet databáze a zobrazení relevantních dat. Jak jsem zmínil dříve, databáze má stromovou strukturu, kdy prvky, které nemají následovníky, nazýváme listy a prvek bez předchůdce kořenem. Obrázek 11: Příklad části struktury pro kořen Food, nutrient 20
Na Obrázku 11 je vidět, že jeden prvek může mít i mnoho následovníků, některé i se stejným jménem. Rozdíl mezi prvky se stejným jménem je určuje pomocí významu. Číslo ve složených závorkách je pozice slova v databázi, číslo na konci řádku určuje kategorii slova. Protože WordNet obsahuje slova již rozdělená do kategorií, rozhodl jsem se je využít a při vytváření nové výukové kategorie jsou potřeba pouze dva údaje pozice kořenu a kategorie. Při procházení databáze je bohužel vidět pouze adresa a slovní druh předchůdců, resp. následovníků, kontrolu, zda jsem ve správné kategorii je nutno provádět až po načtení nového záznamu. Vzhledem k tomu, že databáze obsahuje odkazy na předchůdce a následovníky, ale neobsahuje sousedy, rozhodl jsem se procházení do hloubky. Algoritmus hledání následujícího prvku prochází aktuální záznam a hledá, jestli existuje následovník. V případě nálezu se tento načte a zkontroluje, zda kategorie slova odpovídá výukové. V případě úspěšné kontroly ukončím prohledávání a nové nalezené slovo zobrazím. V případě neúspěchu kontroly se opakuje hledání dalšího následovníka. V případě, že se nenajde žádný následovník, algoritmus se vrací o úroveň výše a hledá následovníky tam. Obrázek 12: Zjednodušený diagram vyhledávání následujícího slova Dále funkce vyhledávání obsahuje kontrolu pozice, pro ukončení vyhledávání v případě dosažení konce souboru. Po skončení vyhledávání se slova a vysvětlení synsetu nastaví do 21
příslušných polí a aplikace se pokusí dohledat obraz. Slova synsetu jsou převedena do verze, která je používána v ImageNetu a do databáze je vytvořen SQL dotaz. Protože je možné, že synset byl rozšířen nebo upraven. Vyhledávání v databázi má dva kroky. První je dotaz na přesný obsah synsetu a v případě neúspěchu se dotazuji na záznamy, které jsou podobné, tzn., ty, které obsahují část záznamu. Tato část je závislá na dostupnosti internetu. V případě nedostupnosti internetu, nebo stránek ImageNetu se zobrazí univerzální chybový obrázek Žádný obraze není k dispozici. Od ImageNetu je možné dostat tři hlavní odpovědi v podobě souborů. První a očekávaný je soubor, který obsahuje odkazy na jednotlivé obrázky patřící do hledaného synsetu. V tomto případě je potřeba soubor číst po řádcích a nalezený soubor stáhnout a zobrazit. Protože ImageNet má záznamy pouze pro necelých 22 tisíc synsetů, je častá odpověď soubor, který obsahuje pouze text The synset is not ready yet. Please stay tuned!. V tomto případě se jedná o synset, který nemá žádné obrázky a místo toho se zobrazí univerzální chybový obrázek. Poslední možnou odpovědí je soubor obsahující Invalid url!. Tento případ by neměl nastávat, jelikož to značí chybu v použitém WNID. Kód 1: Kód funkce pro vyhledávání dalšího záznamu 22
Pohyb mezi záznamy směrem zpět, tzn., k dříve zobrazeným, je jednodušší, protože si celý postup procházení ukládám do určené řady pořadí. Pokud se chci podívat na předchozí záznam, stačí vyhledat a odstranit poslední pozici z této řady a načíst záznam, který této pozici odpovídá. 5.5 Zhodnocení aplikace Finální verzi aplikace budu hodnotit pomocí stejných, či podobných, kritérií jako aplikace testované v 2. kapitole. Aplikace v současnosti nabízí pouze možnost výuky ve třech různých kategoriích. Každá kategorie obsahuje kolem jednoho tisíce záznamů, čímž se dostává na stejnou úroveň jako aplikace od Babbelu a Duolinga. Bohužel obrazová databáze již tak rozsáhlá není, a existují výrazy, které nemají dostupný odpovídající obraz. Pro aplikaci, která pro vysvětlení výrazu spoléhá hlavně na obrazovou informaci, je to značná nevýhoda. Výhodou je přítomnost vysvětlení pojmu a u složitějších, či nejasnějších i příklad použití. Další výhodou je malá velikost aplikace (7,7 MB) a tato velikost se nemění přidáním dalších kategorií. Nevýhodou je nutnost přihlášení k internetu pro zobrazení vysvětlujících obrázků a délka čekání na stažení a zobrazení závislá na rychlosti připojení. 5.6 Možnosti rozšíření Možností jak aplikaci rozšířit je několik. První z nich je přidání, resp., zprovoznění možnosti testování nabytých znalostí. S tím souvisí i zobrazení statistik, ať již z výsledků testů, kde je 23