User:Martin Uhrin ENWiki: lucene, index a search obrazky (podla okoliteho textu a nazvu stranky) Cieľom úlohy je vyhľadávať v obrázkoch anglickej wikipédie podľa názvu stránky, na ktorom sa obrázok nachádza a popisu tohto obrázku. Odkaz na dáta (exporty Wiki): http://dumps.wikimedia.org/enwiki/latest/ Na obrázku nižšie je screenshot stránky anglickej wikipédie, na ktorej sú šípky ukazujúce na text, podľa ktorého sa bude vyhľadávať. wiki - chopok.jpg V prípade, že pod obrázkom sa nenachádza žiadny text, vyhľadáva sa podľa okolitého textu. Riešenie Rozlišujem tieto prípady popisu obrázku: 1. Obrázok s popisom skyline.png Tento obrázok obsahuje popis, podľa ktorého sa vyhľadáva. Ukážka zdrojového kódu pre tento obrázok: [[File:Nissan Skyline - 2 Fast 2 Furious.JPG thumb right Walker drove a [ Tento popis sa sparsuje a zaindexuje sa spolu s názvom stránky a názvom sekcie. Výsledok prsovania pre tento obrázok (jeho popis) vyzerá nasledovne: Walker drove a Nissan Skyline GT-R in 2 Fast 2 Furious
2. Infobox NikolaTesla.png citizenship = [[Austrian Empire]] (10 July 1856 1867)<br />[[Aus Tento obrázok je v infoboxe, ktorého zdrojový kód vyzerá nasledovne: {{Infobox person honorific_prefix = name = Nikola Tesla honorific_suffix = image = Tesla circa 1890.jpeg image_size = alt = caption = Tesla, aged 37, 1893, photo by [[Napoleon S native_name = native_name_lang = nationality = birth_name = }} V tomto prípade sa vyhľadáva podľa toho, čo je v caption, v tomto prípade sa popis vyparsuje nasledovne: Tesla, aged 37, 1893, photo by Napoleon Sarony 3. Bez popisu Nobel.png Tento obrázok nemá popis, v zdrojovom kóde vyzerá nasledovne: [[File:Nobel medal.png right 100px]] V takomto prípade sa vyhľadáva podľa jeho okolia v rozmedzí 500 znakov, pričom je ošetrené aby sa nezachádzalo za sekcie. Ak sa za obrázkom v dosahu 500 znakov nachádza začiatok inej sekcie (History, External links atď.) berú sa len znaky po začiatok tejto sekcie, rovnako je to pre zaiatok sekcie pred obrázkom.
Predspracovanie Ako zdroj dát bol použitý dump wikipédie zo stránky http://dumps.wikimedia.org/enwiki/latest/. Každá wiki stránka obsahuje viacero tagov, ja som vyparsoval len dva a to: <title> - obsahuje názov stránky <page> - obsahuje text stránky Z textu stránky som potom vyparsoval za pomoci regulárnych výrazov obrázky, pričom som rozlišoval medzi obrázkami v infoboxe, obrázkami s popisom a obrázkami bez popisu. Za obrázok som prehlásil všetko, čo našiel nasledovný regex: (?i)\\[\\[((file) (Image)):[^.]*.(png jpe?g bmp svg gif) Spolu k popisom obrázkom sa parsoval aj názov sekcie a indexoval sa spolu s názvom stránky. Názov sekcie sa parsoval podľa nasledovného regexu: ==+(.*?)==+ Na parsovanie bol použitý SAX parser pretože dumpy boli príliš veľké aby sa zmestili naraz do pamäte. Indexovanie Pre id obrázka aby bolo unikátne som zvolil jeho názov spojený s názvom stránky, predpokladom bolo, že dva rovnakeé obrázky na jednej stránke nebudú. Do popisu obrázka sa zaindexoval jeho vyparsovaný popis podľa toho do ktorej kategórie zapadal (S popisom, Infobox, Bez popisu). Výsledok Index teda pozostáva z: id obrázka názov obrázka popis obrazka názov stránky názov sekcie okolie obrázka Aplikácia:
GUI5.png Jednoduché okno, do ktorého sa napíše query a zobrazia sa nájdené obrázky. Inštalačná príručka: Dvojklik na wise.jar Kliknúť na Open a vložiť xml dump wiki, kde sa bude hľadať. Klik na Search. Vyhodnotenie: Pre obrázky s popisom bolo potrebné vyriešiť prípady, kedy za názvom obrázka nasledovalo viacero pre nás nepodstatných slov ako napríklad veľkosť obrázka (250px) alebo umiestnenie (right, left) oddelených znakom " " a po nich nasledoval samotný popis. Bolo potrebné nájsť posledný výskyt " " a brat popis odtiaľ, avšak aj v popise sa mohol tento znak vyskutnúť ako oddeľovač anchor popisu k linku, avšak vtedy sa daný znak nachádzal v hranatých zátvorkách, takže sa dalo rozlišovať medzi znakom oddeľujúcim anchory a znakom oddeľujúcim popis od názvu obrázka. S popisu sa taktiež odstraňoval tag ref. Pre obrázky v infoboxe bolo potrebné ošetriť prípady kedy názov obrázka obsahoval bol vo formáte s dvojitými hranatými zátvorkami ([[250px]]) a prípady, kedy bol názov bez zátvoriek (obr.jpg). "Caption" k takémuto obrázku opäť mohol obsahovať rôzne nežiadúce znaky, ktoré slúžili na formátovanie, množinové zátvorky atď. Pre obrázky bez popisu resp. s nezmysleným popisom (250px) bolo potrebné prehľadávať okolie, pričom som prehľadával 500 znakov pred aj po, pričom sa bral ohľad na sekcie, takže ak 500 znakov zasahovalo do inej sekcie, tak sa bralo len toľko znakov, koľko ostávalo do jej konca. Pre zvýšenie úspešnosti vyhľadávania by bolo potrebné ošetriť ďalšie mnohé jedinečné prípady,ktoré nespadajú pod "odporúčaný štýl". Porovananie v hľadaní obrázkov s Googlom prebiehalo nasledovne: Do googla som postupne zadal 3 query (Nikola Tesla, skyline, nobel) a porovnával som výsledky tak, že som zobral prvých 10 výsledkov googlu a mojich prvých 15 výsledkov.
Nájdené obrázky na dopyt "Nikola Tesla" v Googli: N.Tesla.JPG Tesla_circa_1890.jpeg Tesla3.jpg Nikola_Tesla_on_Time_Magazine_1931.jpg Tesla_colorado.jpg Tesla-bulb.jpg Wizard,_the_Life_and_Times_of_Nikola_Tesla.png Nikola_tesla_corner_ny.JPG Nikola_Tesla_bust_at_St._Sava.jpg 220px-Teslathinker.jpg Nájdené moje: http://en.wikipedia.org/wiki/file:tesla circa 1890.jpeg http://en.wikipedia.org/wiki/file:tesla's Turbine.jpg http://en.wikipedia.org/wiki/file:teslaunknownwoman.png http://en.wikipedia.org/wiki/file:muzej Nikole Tesle.jpg http://en.wikipedia.org/wiki/file:100rsd front.jpg http://en.wikipedia.org/wiki/file:nikola tesla corner ny.jpg http://en.wikipedia.org/wiki/file:original Tesla Coil.png http://en.wikipedia.org/wiki/file:twain in Tesla's Lab.jpg http://en.wikipedia.org/wiki/file:ttesla.jpg http://en.wikipedia.org/wiki/file:urn with Teslas ashes.jpg http://en.wikipedia.org/wiki/file:nikola Tesla Airport.jpg http://en.wikipedia.org/wiki/file:tesla3.jpg http://en.wikipedia.org/wiki/image:spomenik Nikoli Tesli na Nijagari.jpg http://en.wikipedia.org/wiki/file:nikola_tesla_smiljan_16.jpg http://en.wikipedia.org/wiki/file:teslaflatspiralcoil.png Screen Shot 2013-12-12 at 13.01.57.png Nájdené obrázky pre dopyt "skyline" v googli: File:Skyline Frankfurt am Main.jpg File:Sydney skyline at dusk - Dec 2008.jpg File:Manila skyline.jpg File:Hong Kong Skyline Restitch - Dec 2007.jpg
Nissan_Skyline_-_2_Fast_2_Furious.JPG Manila_skyline_day.jpg Panorama_Skyline_Manhattan_Empire_State_Building.jpg File:City of London skyline from London City Hall - Oct 2008.jpg File:Tallinn-Skyline-Evening.jpg File:Seattle Skyline from Rizal Park.jpg Nájdené moje: http://en.wikipedia.org/wiki/image:skyline Birds Eye View.JPG http://en.wikipedia.org/wiki/image:skylobot.png http://en.wikipedia.org/wiki/file:pauliyas Hongkong-edit.jpg http://en.wikipedia.org/wiki/image:skyline campus.jpg http://en.wikipedia.org/wiki/image:houston Texas CBD.jpg http://en.wikipedia.org/wiki/file:skyline Pavilion, Minehead, Somerset (cropped).jpg http://en.wikipedia.org/wiki/file:s54 Nissan Skyline 2000GT.JPG http://en.wikipedia.org/wiki/file:r30 skyline.jpg http://en.wikipedia.org/wiki/file:skyline Drive near Big Meadow.jpg http://en.wikipedia.org/wiki/file:hk Skyline Plaza.jpg http://en.wikipedia.org/wiki/file:the Skyline Cup - women's roller derby trophy.png http://en.wikipedia.org/wiki/file:view from Montaza.jpg http://en.wikipedia.org/wiki/file:belfastcityskylineview.jpg http://en.wikipedia.org/wiki/file:yekaterinburg skyline2.jpg http://en.wikipedia.org/wiki/file:hotel Nacional y Malecon de La Habana.jpg V tomto prípade sa nenašla ani jedna zhoda, tým pádom je úspešnosť aj úplnosť nulová, avšak nájdené obrázky zodpovedajú dopytu. Nájdené obrázky pre dopyt "nobel" v Googli: AlfredNobel_adjusted.jpg Nobel_medal.png 20101213070839!NobelPrize.JPG AlfredNobel2.jpg Nobel2008Literature_news_conference1.jpg Nobel-banquet-table.jpg Nobel_Peace_Prize_winners_Gore_%26_Pachauri_in_Grand_Hotel,_Norway_2.jpg Nobel_Prize_Diploma_Fritz_Haber_1918.JPG Wilhelm_Conrad_Röntgen_(1845--1923).jpg
Selma_Lagerlof_nobel_prize_illustration.png Nájdené moje: http://en.wikipedia.org/wiki/file:robert nobel.jpg http://en.wikipedia.org/wiki/file:alfrednobel2.jpg http://en.wikipedia.org/wiki/file:nobel Prize.png http://en.wikipedia.org/wiki/file:wcnobel.png http://en.wikipedia.org/wiki/file:nobel Ice (Fabergé egg).jpg http://en.wikipedia.org/wiki/file:nobel medal.png http://en.wikipedia.org/wiki/file:ludvig Emmanuel Nobel,.jpg http://en.wikipedia.org/wiki/file:claes Nobel.jpg http://en.wikipedia.org/wiki/file:nobel-banquet-table.jpg http://en.wikipedia.org/wiki/image:nobel Peace Center 12.jpg http://en.wikipedia.org/wiki/file:nobel Peace Center.JPG http://en.wikipedia.org/wiki/file:immanuel Nobel dy.jpg http://en.wikipedia.org/wiki/image:alfrednobel adjusted.jpg http://en.wikipedia.org/wiki/file:nobel Chorfilm.jpg Screen Shot 2013-12-12 at 13.02.12.png Môj program nie vždy našiel tie isté obrázky, čo Google, avšak v niektorých prípadoch napriek tomu, že sa líšili boli aj relevantnejšie resp. zobrazovali čo mali avšak nie to isté, čo našiel Google.