Vyhľadávanie informáci Semstrálny projekt Miroslav Vojtuš
Čo? Prečo? Parsovanie freebase databázy a získanie analytických informácií o extrahovaných faktoch Za účelom extrakcie informácii o témach v databáze pre ďalšiu analýzu. Zredukovanie obsahu za účelom indexácie.
Postup práce Spoznanie problémovej oblasti Zoznámenie sa s dátovou štruktúrou n-triplet rdf používanou na dupm dát z freebase Extrahovanie testovacíh dát z rozsiahlejšieho súboru. Vytvorenie jednoduchého parsera, ktorý som otestoval pomocou Junit. Nainštalovanie inštancie Hadoop
Postup práce Implementovanie Map a Reduce jobu. Spustenie nad testovacími dátamy. Porovnanie s výstupmi základného parsera. Dodatočne som implementoval štatistiky nad výstupným Avro súborom.
Technické parametre implementácie Použité balíky: Avro-1.7.7 Avro-mapreduce-1.7.7 Hadoop client 2.4.0 Appache commons lang 3 Junit 4.11 Testovacia platforma Hortonworks Sandbox: Hadoop 2.4.0 Avro-v1.7.4
Problémy pri riešeni Spojazdnenie Hadoop inštancie na Windows stroji Nastavenie hortownworks virtuálneho stroja bolo problematické koli nastaveniam ip a záhadnému spúšťaniu. V niektorých prípadoch nenabehne datanode alebo namenode. Extrakcia softwéru do spustiteľného jar súboru. Pri použití hadoop jar príkazu, inštancia hadoopu na hostovi neuprednostnuje avro-v1.7.7 pred avro avro-v1.7.4
Štruktúra RDF dumpu Dáta ako N tripplet <subjekt> <predikát> <objekt> Subjektom je adresa v doméne freebase.com. Topiky majú prefix "http://rdf.freebase.com/ns/m." za ním nasleduje id topiku. Predikát má prefix "http://rdf.freebase.com/ns/" za ním nasleduje kľúč samotného predikátu, identifikátor atribútu freebase objektu. Pre nás sú zaujímavé: "common.topic.alias" - alias "type.object.name" - titulka "type.object.type" – kategória
Štruktúra RDF dumpu Predikát má prefix "http://rdf.freebase.com/ns/" za ním nasleduje kľúč samotného predikátu identifikátor atribútu freebase objektu. Pre nás sú zaujímavé: "common.topic.alias" - alias "type.object.name" - titulka "type.object.type" – kategória
Parsovanie Použitý RegEx pattern: <http:\\/\\/rdf\\.freebase\\.com\\/ns\\/m\\.([^>]+)>\\s+<http:\\/\\/rdf\\.fre ebase\\.com\\/ns\\/("+StringUtils.join(predicates, "|")+")>(.+)\\. RegEx patterny pre parsovanie obsahu predikátu: "common.topic.alias" - \"([^>]+)\"@en "type.object.name" - \"([^>]+)\"@en "type.object.type" - <http:\\/\\/rdf\\.freebase\\.com\\/ns\\/([^>]+)>
Map ReduCe job Map job: Reduce job: Sparsuje RDF N-Tripplet interpretáciu do itenej dátovej štruktúry Zjednotenie urobí na základe vyparsovaného ID, ktoré je unikáte naprieč témamy Reduce job: Zozbierané id prevedie do vyššej dátovej štruktýry štruktúry zhodnej s avro schémou: { "namespace": "sk.stuba.fiit.freebase.hadoop", "type": "record", "name": "TopicAvro", "fields": [ {"name": "title", "type": "string"}, {"name": "types", "type" : { "type": "array", "items" : "string" } }, {"name": "alts", "type" : { "type": "array", "items" : "string"} } ] }
Analytické dáta Analýza prebieha osobitne mimo Map Reduce job-ov. Je to lineárne spracovanie Avro výstupu z Reduce Jobu. Nad celou bázou: Počet topikov (s titulkou): 43269499 Priemerný počet kategúrií na topik: 3.844 Min/max kategórií: 0/142 Priemerný počet aliasov: 0.074 Min/max aliasov: 0/479 Trvanie celého procesu nad dumpom celej db: 4h 22m 48s
Vyhodnotenie Parsovanie zbehne v reálnom čase aj na jednom stroji. Pri použití viacerých strojov očakávam radikálne zrýchlenie.