Wikipedia szócikkek hivatkozásainak vizsgálata
Ismét egy beadandó házimmal kedveskedek, ezúttal forrással, bemutató vetítéssel, meg mindenféle nyalánksággal.A kurzus neve Numerikus módszerek, vagy Összetett hálózatok – mindkét néven fut. A kurzus során több kis tesztet is írtunk, és beadandó feladat leadása volt a teljesítés utolsó feltétele. Persze erős kicsit ez a múlt idő, hiszen alig néhány órája történt az eset, mikor is előadtuk.
A feladat eredeti kiírása az volt, hogy az intézet honlapját vizsgáljuk meg, pontosabban a linkeket. Aztán a hivatkozott oldalak hivatkozásait, és így tovább… És az egészet ábrázoljuk egy szép irányított gráfon.
Természetesen nem az eredeti kiírást preferáltam, hiszen azontúl hogy “túl egyszerű”, nem láttam benne semmi érdekeset. A kiírás idején olvastam egy jó cikket a Wikipediáról, és rögtön beugrott az ötlet: A wiki szócikkekben szereplő hivatkozásokat vizsgálom meg, és erről rajzolok egy gráfot.
Természetesen óriási halmazról van szó, ezért egy adott szócikket tekintünk kiindulási pontnak, aztán abból lemegyünk bizonyos mélységig. Fejben persze elképzeltem én, hogy milyen szép gráfok rajzolódnak majd ki, megy majd az oda-vissza mutogatás… Azonban ez nem így sült el
A programot C#-ban írtam meg, az oldalak vizsgálatát azonban nem a logikus módszerrel végeztem; ugyebár a logika azt diktálja, hogy minden oldalt letöltök htmlben, és a megfelelő helyeken megvizsgálom a hivatkozásokat a kódban. Találtam szebbet, ez pedig a WikiMedia API. Egy megfelelő kéréssel, xml formátumban visszakapjuk az adott szócikkben szereplő linkeket. (Az API a magyar wikipedián is működik)
Szóval, C#-ban írtam egy programot (ha minden igaz, lentebb elérhető), amely adott szócikket megkeres, és a benne szereplő linkeket használva lemegy adott mélységig. Az egészet egy Access-adatbázisba pakoltam, sorszámozva. Ezzel vannak problémák, hiszen az adatbázis mérete jelenleg is 27 MB, lövésem nincs mitől nőtt meg így, hiszen folyamatosan ürítettem a tartalmát…
Egy adott gomb lenyomására, kimenthetők a hivatkozások egy .dot fileba, egy másik gombra pedig a számokhoz társított címek egy szövegfileba. A .dot fileból egy adott utasítással megrajzoljuk a gráfot, és el is mentjük azt.
Ez eddig mind szép és jó, de az igazi, bonyolult hálózatot nem sikerült megrajzolnom: túl széles lett a kép, nem engedte a graphviz. Persze enyhíthettem volna ha beállítgatom hog ypontok legyenek, és ne szerepeljen a számozás, de nem erőlködtem, időhiány van így szorgalmi időszak utolsó hetén.
A bemutatott powerpoint vetítés megtekinthető itt: