User:tomas.melicher 1 Úvod do problematiky Databáza internetovej encyklopédie freebase má v komprimovanom tvare zhruba 30 GB a v nekomprimovanom zhruba 300 GB. Vyhľadávať v takejto rozsiahlej databáze je hardvérovo a časovo náročne. Našou úlohou bolo pomocou nástrojov Apache Hadoop a Apache Pig prehľadávať databázu, pričom dopyty boli obmedzené iba na entitu kniha. Bolo potrebné spracovávať atribúty title, alternatívne názvy a ďalšie. 2 Analýza Databáza encyklopédie freebase je štruktúrovaná do usporiadaných RDF N- tripletov, ktoré sú v tvare: <subject> <predicate> <object>. Nakoľko dekomprimovaný dump databázy ma hruba 300 GB, efektívnejšie je prehľadávať dump v komprimovanom tvare. Samozrejme, že sa efektivitou vyhľadávania ani len nepriblížime k časom, ktoré dosahuje freebase, ten totiž funguje na stovkách samotných klastrov. Našou úlohou bude dokázať vyhľadávať na jedinom klastri v rozumnom čase. 3 Návrh riešenia V našom projekte budeme uvažovať tieto atribúty entity kniha: title_and_alts.png Prvým vyznačeným údajom je názov nájdenej knihy. V dumpe databázy freebase je označovaný ako title. V našom projekte sa budeme zaoberať iba názvami kníh v anglickom jazyku, nakoľko pre knihy v tomto jazyku je databáza najrozsiahlejšia. Následne budeme spracovávať alternatívne názvy pre danú knihu, čo je vlastne druhý vyznačený údaj. V dumpe databázy sa označuje ako alias. Tie sú častokrát aj v iných
jazykoch, vo výsledku preto treba brať na to ohľad. Následne budeme vyhľadávať postavy vyskytujúce sa v danom diele characters.png a autorov daného diela authors.png 4 Implementácia V rámci implementácie bolo azda najťažším krokom inštalácia a následná konfigurácia technológie hadoop. I keď na stránke vývojárov tejto technológie sa uvádza, že by mala byť plne funkčná i na platforme Windows prostredníctvom nástroja cygwin, nám sa to pri konfigurácii Intel i3-4000m 64b, Windows 8.1, 4GB RAM v kombinácii s Hadoop 2.5.1 a Pig 0.13.0 nepodarilo. Napokon sme technológie hadoop a pig zinštalovali na virtuálny operačný systém Ubuntu 14.04, kde obe technológie fungovali bez chýb až na obmedzenia vyplývajúce z beta verzie technológie Pig. Cieľom bolo vytvoriť skript, ktorý nieje nutné editovať pri vyhľadávaní dopytu, čo sa nám aj nakoniec podarilo. Skript totiž počíta so súborom freebase_names_of_books.txt umiestneným v rovnakom adresári ako samotný skript. V danom súbore sa nachádzajú názvy vyhľadávaných kních. Vytvorený skript má teda na vstupe testovaciu vzorku prípadne samotnú databázu freebase a ako výstup je priečinok s názvom freebase_books_output, ktorý pbsahuje súbor indikujúci úspech prípadne neúspech vyhľadávania a samotné výsledky vyhľadávania. 4.1 Vytvorenie testovacej vzorky Testovacia vzorka bola vytvorená pomocou samostatného skriptu, ktorý mal za úlohu prejsť celú databázu freebase a vrátiť iba výsledky súvisiace s jednou konkrétnou knihou zadanou pomocou jej názvu. Skript najprv zistí mid priradené ku knihe daného názvu a následne hľadá všetky triplety v databáze, ktorých predmetom je nájdené mid. 4.2 Formát výstupného súboru: Výstupný súbor z programu Pig je formátovaný ako JSON. Pig nevytvára dodatočné medzery a tabulátory, boli tam doplnené pomocou externého programu pre prehľadnosť. Ukážka formátu výstupného súboru:
"mid": "m.0j64xyy", "title": "Fifty Shades of Grey", "alts": [ "lang": "en", "alt": "50 Shades of Grey", "lang": "bg", "alt": "50 нюанса сиво", ], "characters": [ "character": "Ray Steele", "character": "Bob Adams" ], "authors": [ "author": "E. L. James" ] 5 Overenie Pre účely overenia funkcionality nášho skriptu bolo náhodne vybraných 10 kníh, pričom výstup z vyhľadávania možno nájsť v súbore freebase_books_output.txt. Neboli zistené odlišnosti medzi výstupom nášho skriptu a výstupom encyklopédie freebase, na základe toho možno povedať, že náš skript funguje správne. Nasledujúca tabuľka zobrazuje vyhľadávané knihy, ich mid, počet alternatívnych názvov, počet postáv a počet autorov danej knihy. Kniha mid Počet alternatívnych názvov Počet postáv Počet autorov
Fifty Shades of Grey m.0j64xyy 18 10 1 The Lord of the Rings m.07bz5 12 41 1 Harry Potter and the Philosopher's Stone m.0c_vk 3 96 1 The Silmarillion m.07c4l 3 34 1 The Shining m.07cvr 4 7 1 A Clash of Kings m.0351my 5 16 1 The Hunchback of Notre- Dame m.0dw9b 13 16 1 Frankenstein m.02zlm 17 5 2 The Adventures of Pinocchio m.0jb2_ 15 9 1 Dracula m.026l0 11 9 1 Nasledujúca tabuľka obsahuje priemerné hodnoty počtu alternatívnych názvov, počtu postáv a počtu autorov na našej vzorke 10 kníh. Priemerný počet alternatívnych názvov 10,1
Priemerný počet postáv 24,3 Priemerný počet autorov 1,1 Nasledujúca tabuľka zobrazuje časy potrebné pre vrátenie dopytu nami vytvoreným skriptom a encyklopédiou freebase. Pri všetkých testovaniach bol použitý rovnaký dopyt. náš skript freebase 3:48 hod 3:28 s 2:59 hod 4:46 s 3:17 hod 3:49 s Výsledky majú veľkú odchýlku nakoľko vyťaženosť servera freebase bola rôzna a pri našom skripte bol výsledok ovplyvnený hlavne vyťaženosťou disku. Odkaz na github repo https://github.com/aspintm/freebase