tdk dolgozattdk dolgozat készítette: vágó tamás ii. éves mérnök informatikus msc hallgató...
TRANSCRIPT
TDK Dolgozat
Készítette:
Vágó Tamás
II. éves mérnök informatikus Msc hallgató
Konzulens:
Dr. Kovács László
Általános Informatikai Tanszék
Miskolc 2010.
2
Előszó
Napjainkban is számos keresőprogram létezik, melyek segítésével hatékonyan tudunk keresni
a weben. Ám mindegyik keresőprogramnak a legfőbb előnye egyben a hátránya is, mégpedig
hogy csak a keresés során beírt kulcsszavakra szűkíti a találatok listáját. Ez a keresési jól
használható, ha céltudatosan tudjuk, hogy mit keresünk. Ám amikor valamilyen témában
szeretnénk elmélyíteni a tudásunkat és hasonló témájú oldalakat szeretnénk találni akkor
nehézségekbe, ütközünk. Igaz a fejlettebb böngészők már támogatják a tartalmilag hasonló
dokumentumokra való keresést, de ekkor is csak egy találati listát kapunk nem pedig egy
átfogó képet az adott tématerületen fellelhető dokumentumokról.
A dolgozat célja egy olyan keresési alternatíva létrehozása melynek segítségével a
felhasználó képes lehet egy átfogó képet kapni a weben található dokumentumokról, illetve
arról hogy az adott tématerülethez mely dokumentumok kapcsolódnak szorosan illetve
kevésbé.
A tartalom alapú web térkép egy olyan keresési eszköz melyen a felhasználó
vizuálisan is látja az egyes dokumentumok adott témabeli távolságát. Minél jobban hasonlít,
két dokumentum tartalma annál közelebb kerülnek egymáshoz a térképen illetve minél
különbözőbbek annál távolabb. A dolgozatban ismertetésre kerülnek a térkép készítése során
alkalmazott szövegbányászati technikák illetve azok konkrét alkalmazása.
Hogy az esetleges rejtett tartalmi összefüggéseket is fel lehessen deríteni, a web térkép
dokumentumain a DBSCAN algoritmus segítségével, a dokumentumok klaszterezésre
kerülnek. Így további összetartozó csoportokat tudunk felderíteni és megjeleníteni a térképen.
A program fejlesztése során egy további alkalmazási módot is sikerült felderíteni. A
program kiválóan alkalmaz az egyes site-ok tartalombeli homogenitásának a vizsgálatára,
melynek segítségével vizuálisan is láthatóvá válik, hogy mely oldalak tartoznak tartalmilag
leginkább egy oldaloz, és melyek azok az oldalak amelyek kilógnak a sorból.
3
Tartalomjegyzék
Előszó ......................................................................................................................................... 2
Súlyozási sémák a vektortér modellben ................................................................................. 4
Szótövezés .................................................................................................................................. 6
STOPWORD .............................................................................................................................. 7
Bitmap index: ......................................................................................................................... 8
Invertált dokumentum index: ................................................................................................. 9
A programban használt adatszerkezetek: ............................................................................. 11
Internetes Keresőprogramok működése ................................................................................... 13
A Google bemutatása ........................................................................................................... 13
Googlebot, Web Crawler .................................................................................................. 13
Google Indexer ................................................................................................................. 14
Querry processor, avagy a Lekérdező komponens ........................................................... 15
PageRank Számítása ........................................................................................................ 15
A keresés folyamata ......................................................................................................... 17
A program felépítése ................................................................................................................ 18
A rendszer felépítése: ........................................................................................................... 18
Dokumentumok begyűjtéséért és feldolgozásáért felelős alrendszer: .............................. 18
Dokumentumok tárolásáért és távolságának meghatározásáért felelős alrendszer .......... 19
Adattároló alrendszer ....................................................................................................... 20
Térkép készítő és megjelenítő alrendszer ......................................................................... 20
Térképkészítő algoritmus ......................................................................................................... 21
Az algoritmus működése: ..................................................................................................... 22
Webes tartalom klaszterezése ................................................................................................... 24
DBSCAN algoritmus bemutatása ......................................................................................... 25
DBSCAN paramétereinek dinamikus meghatározása .......................................................... 27
DBSCAN algoritmus általánosítása ..................................................................................... 28
Az iteratív keresés folyamata ........................................................................................... 28
Az elkészült program hatáskörének elemzése .......................................................................... 31
Konkrét példa a webtérkép alkalmazására ............................................................................... 33
Összegzés, kitekintés ................................................................................................................ 35
Függelék ................................................................................................................................... 36
Képek és ábrák jegyzéke .......................................................................................................... 37
Irodalomjegyzék, Hivatkozások ............................................................................................... 38
4
Vektortér modell
Már a 1960-as években felmerült az igény egy hatékony szöveg reprezentációt biztosító
modellre. Mely hatékonyan támogatja a keresést. Az első modell System for the Mechanical
Analysis and Retrieval of Text azaz a SMARTi volt. Ezen rendszer segítségével hatékonyan
lehetett keresni a különböző dokumentumok között, és alapja a vektortér modell volt.
A vektortér modell alapvető koncepciója hogy a dokumentumokat vektorként ábrázolja a
bennük található szavak alapján, melyek a vektor dimenzióját adják. A dokumentumtér egy
mátrixszal reprezentálható, aminek:
● sorai az egyedi szavak előfordulását
● oszlopai pedig az adott dokumentumot szimbolizálják
Legyen D egy dokumentum gyűjtemény melynek elemei dokumentum vektorok, az így kapott
gyűjtemény egy mátrix segítségével reprezentálható.
𝐷 = [
𝑑0,0 ⋯ 𝑑0,𝑗⋮ ⋱ ⋮𝑑𝑖,0 ⋯ 𝑑𝑖,𝑗
]
Természetesen a 0 és 1 reprezentáció helyett más megoldásokat is szoktak alkalmazni, mint
például 1 helyett az adott szó számosságát tüntetik fel a mátrixban.
Vegyük észre hogy
A vektortér modell sajátosságából fakadóan a szavak a sorrendiségüket elveszítik, az ilyen
modelleket BOW reprezentációnak hívják, azaz Bag Of Word, vagyis magyarul szózsák
modell.
Súlyozási sémák a vektortér modellben
5
Többféle súlyozás is létezik a vektortér modellii D mátrixának, az elemeinek a
meghatározására.
Ilyen módszerek:
● Bináris súlyozás: a legegyszerűbb súlyozási megoldás, hátránya hogy elvész a szavak
gyakorisága az adott modellben. Formája:
● Előfordulási gyakoriság alapú súlyozás: előnye hogy figyelembe veszi a szavak adott
dokumentumon belüli gyakoriságát. Hátrányként felróható hogy nem minden szó
esetén a gyakoriság határozza meg adott szó relevanciáját, hiszen számos esetben a
Zipf törvényiii
érvényesül, vagyis egy nyelv leggyakoribb szavai általában csak a
mondatszerkezet létrehozását szolgálják, és más jelentőségük nincs. Ezeket a szavakat
általában STOPWORDS ként említi a szakirodalom Melyeket sok esetben szűrni
szoktak.
● Logaritmikus súlyozás: Előnye hogy elnyomja a túl gyakori szavakat, amik nagy
valószínűséggel STOPWORD-ök ezáltal ha úgy tetszik, normalizálja az adott
dokumentum szógyakoriságait.
𝑑𝑖,𝑗 = { o 𝑘𝑖 , 𝑘𝑖
, 𝑒𝑔 𝑘 𝑡
● Term Frequecy (TF, szó gyakorisága a dokumentumban): Egy adott szó
gyakoriságánál azt vizsgálja, hogy a szó mekkora részét képzi a dokumentumnak. Ez a
módszer jól működik heterogén dokumentumhalmazok esetén is.
● Inverse Document Frequecy:(inverz gyakoriság alapú súlyozás): A Tf és
logaritmikus súlyozás kombinálása, mely rendelkezik mindkét módszer előnyeivel.
6
Szótövezés
Minden szövegbányászati alkalmazásban kulcsfontosságú szerepet játszik a szótövezés,
hiszen a különböző ragok, jelek és más nyelvi elemek eltávolítása a hatékonyság és
egyértelműség növelése szempontjából kifejezetten előnyös.
Mivel tartalom alapú a fejlesztett rendszer ezért nem jár információ veszteséggel a szótövezés,
csupán redukálja a problémateret, ahol a tartalmat meghatározó szavak egységes formába
kerülnek. A szótövezés után a szavak legkompaktabb formáját kapuk, továbbá szótövezés
nélkül az egyes szavak különböző formái a dokumentum vektortér modellben más és más
elemként szerepelnek. De a szótövezéssel kiküszöbölhetjük ezt a problémát.
A szótövezési technikáknak két fő fajtája van:
- Szabály alapú
- Adatbázis alapú
A szabály alapú szótövezők a szavak képzési szabályait tartalmazzák, melynek segítségével a
szabályokat visszavezetve megkaphatjuk az egyes szavak eredeti szótövét, illetve
ellenőrizhetjük, hogy helyes-e az adott szó.
Ennek a módszernek az előnye, hogy a szabályok segítségével egy általános megoldást lehet
kapni, relatíve kicsi információ tárolásával. A rendszer általánosan használható, ám
előfordulhat, hogy nem minden esetben szótövez helyesen. Ilyen szótövező például az angol
nyelven kiválóan működő Porter-féle szótövezőiv
.
Az adatbázis alapú szótövezők a szabályalapúak ellentétei, hiszen szabályok nélkül hatalmas
adatbázis segítségével dolgoznak, mely tartalmaz minden egyes ragozott szót, szótövét és más
nyelvtani szabályokat.
Ezen rendszerek az előnye, hogy gyors és pontos szótövezésre képesek.
Hátrányuk viszont hogy nem elég általánosak és relatíve hatalmas adatmennyiségekkel
dolgoznak.
A program készítése során mégis az adatbázis alapú szótövezést kellett választanom, hiszen a
magyar nyelv bonyolultsága miatt a szabályalapú szótövező rendszerekből nincs túl sok a
piacon, és amik megtalálhatóak azok csak fizetős formában érhetők el. Szerencsére létezik
egy ingyenes és nyílt forrású kezdeményezés is mely a BME-s Szószablya projekt. Ez a
7
projekt egy hatalmas adatbázist hozott létre szótövezésre, ami ingyenesen letölthető és
szabadon használható.
Mivel tekintélyes méretű ezért a benne szereplő gyakorisági számok alapján csak a
leggyakoribb szavak kerültek átemelésre. A hatalmas adatbázis redukálása céljából.
Az eredeti adatbázis több mint 2 millió ragozott szót tartalmaz. Amely tárigénye a program
hordozhatóságát jelentősen rontaná. Illetve a feldolgozási idők is nagymértékben
csökkennének. Ezért egy tervezési döntést kellett bevezetni a program fejlesztése során,
mégpedig hogy az adatbázisból a 100 000 leggyakoribb elem került átemelésre.
STOPWORD
A STOPWORD vnem más, mint azoknak a szavaknak a halmaza melyeket ki lehet szűrni
szövegből jelentősebb információcsökkenés nélkül. Tipikusan ezek a szavak csak a mondat
szerkezetének a kialakításához járulnak hozzá, de jelentésbeli funkciójuk nincs.
Minden nyelvnek megvannak a maga stopword-jei melyek szűrésével hatékonyságnövekedést
lehet elérni. Ezeknek a szavaknak a megtalálása rendkívül egyszerű, hiszen minden nyelvben
ezek fordulnak elő a legnagyobb gyakorisággal. A magyar nyelvben ezek a szavakvi
a
következőek:
a
az
egy
be
ki
le
fel
meg
el
át
rá
ide
oda
szét
össze
vissza
de
hát
és
vagy
hogy
van
lesz
volt
csak
nem
igen
mint
én
te
ő
mi
ti
ők
ön
Jól látszik, hogy e szavak jelentős része nem tartalmaz semmilyen extra információt a
dokumentumok kiértékelése szempontjából.
További előnye a stopword-ök szűrésének mikorosite-oknál illetve kisméretű
dokumentumoknál figyelhető, meg amikor is a szűrés után tényleg csak a lényegi információk
8
maradnak meg a feldolgozás után. Ezáltal az oldalak távolságát valóban csak a tartalom
befolyásolja.
Szöveg feldolgozást támogató reprezentációs modellek
A szöveg reprezentáció mindig is kulcsfontosságú momentum volt a szövegbányászatban,
hiszen egy jól megválasztott hatékony adatszerkezet nagyban segíti a feldolgozási és keresési
műveletek végrehajtását az adott halmazon.
A reprezentációs technikák közül több is kialakult a szövegbányászat múltja során, melyeknek
fejődését leginkább a hardver fejlődésével lehet összekapcsolni.
A két legelterjedtebb fizikai reprezentáció, a dokumentum vektortér modellhez a következő:
- bitmap index
- invertált index
Bitmap index:
Ez egy mátrix alapú reprezentációvii
, melynek sorai az egyes szavakat oszlopai pedig az egyes
dokumentumokat tartalmazzák. Természetesen az oszlopok és sorok jelentése az adott
tervezői elgondolástól függ.
Működése: Mivel bitmap alapú indexelésről van szó, a mátrix elemei 1 illetve 0 ahol az egy
azt jelzi, hogy az adott szó szerepel a dokumentumban a 0 pedig hogy nem.
Formája:
i szavaknak,
j dokumentumoknak felel meg.
Például:
9
D1 D2 D3
alma 1 0 1
körte 1 1 0
szilva 0 1 0
barack 1 0 1
Lehetséges keresési kérések lehetnek azok a dokumentumok ahol:
alma ÉS körte ÉS barack
(alma VAGY barack) ÉS körte
Előnye:
● gyors keresést biztosít (bináris műveletekkel tudunk szűrni)
● alacsony memóriaigény
Hátránya:
● nagy mennyiségű adatnál kezelhetetlenné válik
● ritka mátrixok problémája felvetődik (memóriaigény számítási költség)
● további hátrány még hogy csak azt tárolja, hogy adott dokumentumon belül szerepel-e
a keresett szó, tehát további költség hogy át kell vizsgálni a dokumentumot.
(O(dokumentum hossza))
● problémás hatalmas dokumentum halmazok esetén, a nagyméretű mátrixok tárolása
Mikor előnyös:
● kisméretű dokumentumhalmaz esetén
● olyan kereséseknél ahol csak a kulcsszó tartalmazása számít
Invertált dokumentum index:
Egy átgondoltabb szöveg reprezentációs technikaviii
, mely a bitmap reprezentációval szemben
láncolt listákat alkalmaz. Így a reprezentációtól függően nem csak azokat a dokumentumokat
10
tartalmazza, ahol szerepel az adott szó, hanem adott dokumentumon belül a szó
előfordulásának pozícióit is.
Felépítése:
Egyszerűbb reprezentáció, mely csak a szavak előfordulását tartalmazza:
1. ábra – szavak előfordulásának tárolása dokumentumbeli pozíció nélkül
Összetettebb reprezentáció, mely a szavak előfordulása mellett a dokumentumbeli pozíciókat
is tartalmazza:
2. ábra – szavak előfordulásának tárolása dokumentumbeli pozícióval
Ennél a reprezentációnál már a dokumentumon belüli előfordulások is le vannak tárolva, tehát
a keresés még inkább hatékonyabbá válik.
(i,j) i: melyik dokumentumban fordul elő a szó, j adott dokumentumon belül hol található.
Előnye:
● A keresés során könnyebb megtalálni egy adott dokumentumon belül a keresett
szavakat
● dinamikus memóriaallokálást tesz ehetővé
● figyelembe veszi a szavak számosságát is
11
● nagyméret dokumentumhalmaz esetén is működik
● A módszer tárigénye csökkenthető minimális számítási költséggel
Hátránya:
● A keresés sebessége lassabb
● A pointerek extra memóriát igényelnek
A programban használt adatszerkezetek:
A programban működése szempontjából követelmény a gyors működés, ennek következtében
az adatok gyors elérése. Ezért a programban számos helyen megjelennek a Hash függvényix
alapú módszerek, azaz hasító táblák alkalmazása.
Ezen adatszerkezetek nagy előnye az adatok azonnali elérése.
3. ábra - Hash tábla működése
Ennek egy speciális változatát a Dictionaryx generikus típust használja a program mely
tetszőleges adattípusból felépíthető és O(1) idő alatt bármely eleme elérhető. Ez egy olyan
speciális hash tábla mely kezeli az adatok túlcsordulását.
A generikus típusok további előnye hogy tetszőleges mélységben egymásba ágyazhatunk más
generikus típusokat is, melyből komplex struktúrákat alakíthatunk ki. Természetesen a
faszerűen felépített struktúra leveleiben konkrét típusoknak kell szerepelniük.
A Dictionary adatszerkezet egy kulcs-érték párost tartalmaz. A kulcs az adat eléréséhez
szükséges, az értékben pedig a letárolandó adatok szerepelnek.
Mivel számos esetben, kiváltképpen szavak számlálásánál a gyors elérés és értékmódosítás,
továbbá a rendezett könnyen visszakereshető struktúra a cél, ezért ez az adatszerkezet a
legmegfelelőbb a szövegbányászati célokra.
12
A program fontosabb területei ahol a Dictionary struktúra megjelenik:
Nyers dokumentumok tárolása (URLDokumentum adatai (szöveg,simenő linkek, …)
Szavak előfordulási gyakorisága (Szó[Dokumentum sorszáma, szó darabszáma az
aktuális dokumentumban])
Dokumentumok távolságának mátrix (URL1URL2Távolság)
Virtuális Dokumentumpontok távolságának mátrixa (URL1URL2Távolság)
Dokumentumok távolságának mérése
A dokumentumok hasonlóságát vagy különbözőségét hogy számszerűsíteni tudjuk,
valamilyen metrikát kell hozzá rendelnünk. Két dokumentum távolsága, ha nagy, akkor a két
dokumentum különbözik, míg ha kicsi a két dokumentum hasonló.
Többféle távolságmetrika, de ezek közül a leggyakoribbak a következőkxi
:
● Euklideszi távolság
● Négyzetes euklideszi távolság
● Manhattan távolság
● Maximum távolság
13
● Mahalanobis távolság
● Koszinusz hasonlóság
A gyakorlatban leginkább kedvelt és alkalmazott távolságmetrika az euklideszi távolság
illetve a koszinusz távolság (hasonlóság). A programban is az euklideszi távolságmetrika
szerepel, mivel az euklideszi távolságot lehet a legáltalánosabban alkalmazni a távolság
mérésére.
Internetes Keresőprogramok működése
A Google bemutatása
Napjainkban szinte már az interneten történő keresés szinonimájává vált a Google keresője, de sokan
nem tudják, hogy hogyan is működik ez a rendkívül egyszerűnek kinéző, ám meglehetősen bonyolult
rendszer.
A konkrét működésrexii
, három fő folyamat zajlik le a Google keresőjében, aminek a pontos találati
eredményeket köszönhetjük:
● Google bot, más néven Crawler ami begyűjti az interneten elérhető összes weboldalt
● Indexer, ez a folyamat bontja szét a weboldalakat szavaikra, majd indexeli azokat egy
hatalmas adatbázisban
● Query Processor, megvizsgálja a beadott keresési kulcsszavakat majd összehasonlítja a belső
adatbázisával, és visszaadja a legrelevánsabb találtatokat.
Googlebot, Web Crawler
A Crawler dolga a weboldalak begyűjtése a weben, a Google ezen komponense másodpercenként több
ezer oldalt tölt le párhuzamosan, majd továbbítja azt az Indexer felé.
14
De ne higgyük azt, hogy a Google minden oldalt megtalál és az egész internetet képes bejárni.
A Google az internet bejárását az oldalakon talált hivatkozások segítségével illetve korábbi
adatbázisban eltárolt címekkel járja be. Ha példádul egy új weboldalt készítünk a Google azt nem vagy
csak hosszabb idő után képes bejárni, hiszen ha nem mutat rá URL más módon kell az oldal címét
beszereznie.
A Google hogy ezt a hibát kivédje, engedi az oldalak manuális hozzáadását is a keresője számára
http://www.google.com/addurl.html).
A Google a meglátogatott oldalakon talált hivatkozásokat hozzáadja a bejárandó oldalak listájához,
majd ezután a következő oldalra ugrik ebben a listában és azzal is ugyanezt a folyamatot hajtja végre.
Vagyis:
● a bejárandó oldalak soráról egy oldalt kiválasztása
● oldal letöltése, tárolása majd továbbítása az Indexernek
● az oldalon talált hivatkozások hozzáadása a bejárandó oldalak sorához
Ezt a folyamatot nevezik deep web-nek elviekben ezzel a folyamattal az egész web bejárható feltéve,
ha minden oldalra találunk hivatkozást. De mivel az internet hatalmas és az erőforrások végesek ezért
a google se “látja” a teljes webet, hanem annak csak egy szignifikáns részét. Mivel ez a folyamat
rendkívül erőforrás igényes a Google csak havonta végzi el az oldalak begyűjtését, és egyben az
adatbázisa aktualizálását.
Hogy a felesleges erőforrás-pazarlást elkerülje a bejárandó elemek listáján eliminálja a duplikált
címeket, illetve hogy felesleges újra indexelés se történjen, a letöltött oldalakat összeveti a korábban
letöltött és letárolt változatukkal, és ha nincs eltérés, azaz az oldal nem változott akkor nem kell az
aktuális oldalhoz az indexeket újragenerálni.
Ahhoz hogy mégis aktuális legyen, a legnépszerűbb oldalakat, mint például hírportálok,
tőzsdeárfolyamok...stb. akár napi rendszerességgel vagy gyakrabban is letölti, és indexeli. Ezt a
folyamatot fresh crawl-nak az előzőt pedig deep crawl-nak nevezik.
E két folyamat megfelelő arányú kombinálásával mindig friss és hatékony keresés biztosít a
felhasználói számára.
Google Indexer
A korábban bemutatott Crawler a begyűjtött weboldalakat ennek a komponensnek továbbítja. Az
oldalakat az index adatbázisa tárolja el, majd indexeli azokat. Tehát tárolódik az oldal, majd ezt az
indexelő komponens szavanként kielemzi, és egy közös adatbázisba letárolja az összes szót és azok
előfordulási helyét. A szavak alfabetikus rendezés szerint tárolódnak és nem csak az tárolódik le, hogy
mely dokumentumban fordul elő, hanem az is hogy az adott dokumentumban mely helyeken szerepel.
15
(Invertált index) Ahhoz hogy tovább tudja, a hatékonyságát növelni a modulnak kihagyja az
úgynevezett stop word-öket, ezek olyan szavak melyek egy nyelvben nagyon gyakoriak, de jelentés
szempontjából nem jelentősek. Minden nyelvnek egyedi stop word listája van. Angolban például: the,
is, on ,or, of, how... . Ezeket a szavakat az indexelő komponens szűri, illetve van még pár technika,
amivel további teljesítménynövekedést illetve racionalizálást ér el, mint például: a fölösleges
whitespace karakterek eltávolítása, szavak kisbetűssé alakítása, és még számos egyebét technika, ami
javít a hatékonyságon.
Querry processor, avagy a Lekérdező komponens
A lekérdező modulnak számos része van a felhasználói felülettől a releváns oldalak megjelenítésével
bezárólag. Az egyik talán legfontosabb az egyedi algoritmusa, a PageRank, ennek az algoritmusnak
köszönheti a Google a sikerét, hiszen ez az algoritmus dönti el egy adott oldalról, hogy az mennyire
fontos számunkra. Az algoritmus egyik fő motívuma a tudományos publikációk fontosságának
meghatározásán alapszik, tehát minél többen hivatkoznak egy oldalra, annál fontosabb az az oldal. Az
algoritmus leglényegesebb motívuma ez, de számos részlete a mai napig üzleti titoknak minősül, és
titkos. A PageRank több mint száz kritériumot vesz figyelembe az oldalak rangsorolásánál, beleértve a
népszerűséget, az oldal méretét, az aktuális keresési trendeket, és még számos más dolgot.
PageRank Számítása
Az oldalak súlyát a Google a PageRankxiii
képlettel határozza meg, minél népszerűbb egy oldal annál
többen hivatkoznak rá, ezért annál nagyobb a presztízse és a relevanciája is, ha egy találati listában
szerepel. Mivel más oldalakra mutató linkek, egyfajta szavazást, emberi döntést képviselnek, ezáltal a
Google ezen koncepciója helyesen működik.
A hivatkozásokból minden oldal kap egy értéket mely minél nagyobb annál előkelőbb az oldal, viszont
az oldal továbbadhatja az értékét, ha hivatkozik más oldalakra, természetesen ilyenkor nem vész el a
teljes érték, hanem csak egy részét adja át.
De hogy megértsük hogyan is működik ez, nézzük meg azt a két képletet, amit a Google maga is
használ a PageRank kiszámításához.
Legyen:
M(i) az i. oldalra hivatkozó oldalak halmaza
PR(i) az i. oldal PageRank értéke
L(j) az j. oldalról kimenő hivatkozások száma
tegyük fel hogy minden oldal d értéket ad ahol 0 < d < 1 azaz 1 - d marad neki.
16
Van egy másik képlet is, ami a valószínűség számítás oldaláról közelíti meg a kérdést, ilyenkor a
PageRank értéke annak a valószínűsége, hogy valaki a linkeket használva közelíti meg az oldalt.
Egyes ajánlások szerint a d paraméter értékét rendszerint 0.85 körüli értékre állítják be.
Fontos probléma a képlet számítása során a ,,danglink link’’-ek problémája melyek általában
letöltendő fájlokra, és nem oldalakra mutatnak, de befolyásolják a PR értékét, ezért a rendszer szűri
ezeket a linkeket.
A PageRank számítása egy iteratív folyamat melyben a képletet többször meg kell ismételni, hogy a
kívánt eredményt megkapjuk, az iterációk során a képlet egyre pontosabb értéket ad az egyes
csomópontokra.
Nézzünk meg egy példát a PR érték kiszámítására:
Tanulási ráta d=0.85
PR(A)=PR(B)=PR(C)=1
4. ábra - minta a PageRank számításához
17
Iteráció PR(A) PR(B) PR(C) Összeg
0. 1 1 1 3
1. 1 1.85 0.15 3
2. 1.7225 1.1275 0.15 3
3. 1.108375 1.741625 0.15 3
4 1.63038125 1.21961875 0.15 3
... ... ... ... ...
30. 1.39539316985 1.45460683014 0.15 3
Kezdetben a kapott eredmények ingadoznak majd a számos iterációt követően megszületik a helyes
eredmény. Minél több iterációt hajtunk végre annál pontosabb eredményt kapunk.
A keresés folyamata
Amikor a felhasználó beír pár kulcsszót a Google oldalán akkor nem is gondolja, hogy a háttérben
számos feladat hajtódik végre a másodperc tört része alatt, de mi is történik ilyenkor?
A Google megnézi a beírt kulcsszavakat és kibővíti a keresési listát a szavak szinonimáját használva.
Alapvető esetben a kereséskor a beírt kulcsszavak esetén a Google az ÉS műveletet, vagyis a
metszetképzést veszi figyelembe, tehát elsődlegesen olyan találtatokat kínál fel, amelyekben minden
kulcsszó szerepel. Természetesen ez nem minden esetben működik tehát a kulcsszavak találatokbeli
előfordulása alapján is egy rangsort kell felállítania a keresőnek.
A releváns találatok kikeresésének a folyamata:
Organikus találati lista:
● A Google megvizsgálja a lokalizációt, tehát hogy milyen nyelven és milyen országból
keresünk, hiszen például a “foci” szó esetében Angliában és Amerikában is egy helyi lakosnak
más sport jut az eszébe.
● Következő lépésben megvizsgálja a személyes beállításokat és azt, hogy az adott IP címről
vagy az adott Google fiókkal rendelkező személy a múltban milyen kereséseket futtatott le
● Ezután a PageRank figyelembevételével előtérbe hozza az “erősebb” oldalakat
● A keresés túl sok oldalt hoz fel, akkor tovább rangsorolja ezeket úgy hogy a minél frissebb,
naprakészebb oldalak nagyobb súlyt kapnak
● Az ugyanarról a domain névről származó magas találati súlyú oldalakat csoportosítja, ha
minden egyes oldal magas súllyal rendelkezik
● A fent felsorolt szűrők után elkészül a normál találati lista
18
A program felépítése
A program felépítését a keresőmotorok logikája és működése ihlette az oldalak begyűjtésénél.
A feldolgozás során pedig az szövegbányászati módszerek kerültek az előtérbe.
A rendszer felépítése:
5. ábra - A program felépítése
A programot négy fontosabb részre lehet osztani:
Dokumentumok begyűjtéséért és feldolgozásáért felelős alrendszer
Dokumentumok tárolásáért és távolságának meghatározásáért felelős alrendszer
Adattároló alrendszer
Térkép készítő és megjelenítő alrendszer
Alrendszerek bemutatása:
Dokumentumok begyűjtéséért és feldolgozásáért felelős alrendszer:
Két fő osztályból áll Harvester és Refinery ez a két osztály felelős a weben található oldalak
felderítéséért letöltéséért és feldolgozásért.
Harvester: Az osztály a példányosítás során egy linket kér be, mely egy kiindulási pont. Ezen
a kiindulási ponton keresztül egy szélességi kereséssel gyűjti be a weben található linkeket és
tartalmukat.
19
A folyamat egy listát használ, mely melynek a végére beilleszti az újonnan talált linkeket,
amennyiben a link már szerepel a listában, abban az esetben nem fog bekerülni a struktúrába.
A linkek begyűjtésével párhuzamosan egy másik szálon elindul a az oldalak begyűjtése is.
Refinery: Ez az osztály felelős a Harvester által begyűjtött linkek tartalmának a letöltésért és
konvertálásáért sima egyszerű szöveges, plain text formátumba. Ez a folyamat lényegében
egy egyszerű HTML to Text konverzió melyben a HTML tag-ek scriptek és stílusok
eltávolításra kerülnek és csak a szöveg marad meg. A szótövező osztály segítségével itt
történik meg a szavak egyszerűbb alakra történő hozása, ami után a STOPWORD szűrés
következik. Ennek az eredményeként megkapjuk a tiszta és nyers szöveget.
6. ábra - Adatok begyűjtésének a folyamata
Stemmer: Ez az osztály felelős a szavak szótövezésért, körülbelül a leggyakoribb 100 000
szót tartalmazza a szószablya projektből, melyeket szerializálva perzisztens módon tárol. A
központi adatszerkezet itt is egy Dictionary mely azonnali elérést biztosít a szótövező
számára.
Dokumentumok tárolásáért és távolságának meghatározásáért felelős alrendszer
Segédosztályok halmaza mely a dokumentumok fontosabb adatainak eltárolását illetve a
köztük lévő távolságok meghatározását segíti.
Document: Olyan segédosztály mely adatstruktúraként funkcionál, tárolja az egyes oldalak
címét, ami egyedi azonosítóként funkcionál illetve az oldal szövegét, az oldalból kifelé
mutató hivatkozások listáját valamint hogy az oldalt sikerült-e letölteni a begyűjtési folyamat
során.
20
DocumentDistance: Az Euklideszi távolságmetrikát figyelembe véve kiszámolja az oldalak
egymáshoz mért távolságát, és tárolja azokat a Storage osztály dokumentum távolság
mátrixában.
A távolságmérés a Storage osztály dokumentum mátrixa alapján történik, ahol a számítás a
következőképpen zajlik:
- Az távolságszámító algoritmus kigyűjti a közös szavak listáját melyre kiszámolja a
távolságmetrikát
- Ha a két dokumentumban vannak eltérő szavak, akkor azokra a képlet 0-t és az eltérő szavak
számosságát tartalmazná. Ez egy fölösleges négyzetre emelést és gyökvonást jelentene ezért a
program egyszerűen a különbségek számosságát hozzáadja a távolság metrikához.
√ 2 2 = √ 2 =
Adattároló alrendszer
Ez az alrendszer egyetlen osztály, a Storage osztályt tartalmazza. Az osztály lényege hogy a
begyűjtött adatokat perzisztens módon tárolja, és az alkalmazásban ezek az adatok bárhol, és
azonnal rendelkezésre álljanak.
Storage: Feladata az adatok perzisztens tárolása, mely szerializáció segítségével valósul meg.
A program indulásakor a már meg lévő adatok betöltődnek illetve a programból való
kilépéskor, ha időközbe bővült az adatbázis, akkor az új adatokkal együtt lementésre
kerülnek a már meglévő adatok.
Az osztály a következő adatokat tárolja:
- Dokumentumok (URL, Dokumentumok szövege, Oldalból kimutató hivatkozások listája,
Sikeresen letöltődött-e az oldal)
- Bejárandó linkek listája (URL)
- Dokumentum mátrix (A szavak dokumentumok szerinti előfordulásának számossága, URL
illetve szavak szerint indexelve)
- Dokumentumok távolságának mátrixa (Két oldal címével indexelve a két oldal közötti
távolságot adja, Euklideszi távolság metrika szerint)
- Számított távolság mátrix (A térképen elhelyezett pontok távolságának mátrixa)
- Dokumentum pontok listája( A térképen megjeleníteni kívánt pontok listája, mely tárolja a
pontok (x,y) koordinátáját, és a hozzá kötődő URL-t)
Térkép készítő és megjelenítő alrendszer
21
Ez az alrendszer felelős a térkép elkészítéséért és megjelenítéséért. Két osztályt tartalmaz
mely az előbb említett két funkciót valósítja meg.
ViewModel: Ez az osztály generálja le a megjelenítésre szánt dokumentum csomópontokat
melyek az egyes dokumentumokat, weboldalakat szimbolizálják. Továbbá egy algoritmus a
weboldalak távolsága alapján elkészíti a térképet, aminek konkrét működése egy másik
fejezet tárgya.
Drawing: A megjelenítésért felelős osztály mely kirajzolja, és méretezi a térképet. Ebben az
osztály azonosítja a dokumentumokat koordinátájuk alapján mely a megjelenítés
szempontjából fontos.
DBSCAN: A dolgozatban bemutatásra kerülő általánosított DBSCAN algoritmus
végrehajtásáért felelős osztály.
Térképkészítő algoritmus
A weboldalak letöltése után a program kiszámolja a weboldalak egymáshoz viszonyított
távolságát, ami az Euklideszi távolságmérési metrika alapján történik.
Tehát kiindulási állapotként rendelkezésünkre állnak a weboldalak távolságai mátrixos
formában:
[
𝐷1,1 ⋯ 𝐷1,𝑛⋮ ⋱ ⋮
𝐷𝑚,1 ⋯ 𝐷𝑚,𝑛
]
ahol a mátrix oszlopai és sorai az egyes dokumentumok közötti távolságot szimbolizálják.
Tehát a Di,j Az i. és a j. dokumentum távolságát szimbolizálja.
Mivel a térképek kétdimenziósak szoktak lenni, illetve az emberi agy is kétdimenziós ábrákat
preferálja legjobban ezért a készített térkép is síkban készült.
Tehát az algoritmusnak készítenie kellett egydimenziós adatsorból egy kétdimenziósat.
Így hát át kellett gondolni, hogy hogyan is lehet egy dimenziós adatokból kétdimenziósat
csinálni.
Ennél a pontnál a fizikából sikerült ötletet meríteni, a következő képen:
Adott n darab pont a síkban melyeknek adott távolságokra kell elhelyezkedniük. Kezdetben a
pontokat véletlenszerűen helyezzük el a síkba majd a pontok között a távolsággal arányos
taszító illetve vonzó erő lép fel.
- Ha a pontok közötti távolság kisebb, mint az aktuális helyzetben akkor taszító erő
- Ha pedig a pontok közötti távolság nagyobb, mint az aktuális helyzet akkor pedig vonzó erő
22
lép fel.
Tehát a pontok közötti távolságokból erőket lehet számítani melyek a rendszer pontjait,
elmozgatják.
𝐹→𝑒=∑
𝐹→𝑖
𝑛
𝑖=0
A pontokra gyakorolt eredő erők elmozdítják a pontot egy olyan helyre ahol az adott pont
egyensúlyban van a többivel. De mivel n darab pontunk van ezért ezt minden egyes pontra
meg kell ismételni.
Mivel a korrekciók során a már beállított pontjaink is elmozdulnak, ezért az algoritmust addig
kell ismételni, amíg az elmozdulásuk értéke egy kellően kicsi 𝜀 távolság alá csökken.
7. ábra - Dokumentumpontok árendeződése a kiszámított erők által
Az algoritmus működése:
Adott: n darab dokumentum és azok távolságából képzett mátrix.
Várt eredmény: n darab dokumentumhoz tartozó (x,y) koordináta a síkban
Az algoritmus működéséhez szükségünk van a valós távolságokra, melyet a dokumentumok
tartalom szerint meghatározott távolsága ad meg, ez az algoritmus egyik bemenő adata, mely
egy mátrix a továbbiakban jelöljük TR-et (azaz a valós távolságok mátrixa).
𝑇𝑅 = [
𝐷1,1 ⋯ 𝐷1,𝑛⋮ ⋱ ⋮
𝐷1,𝑚 ⋯ 𝐷𝑚,𝑛
]
Di,j Az i. és a j. dokumentum távolságát szimbolizálja.
Továbbá szükség van a TS mátrixra is mely a pontok síkban lévő aktuális távolságát mutatja,
azt a távolságot az (x,y) koordináták segítségével szintén az Euklideszi távolság metrika
alapján számítjuk.
𝑇𝑆 = [
𝑆1,1 ⋯ 𝑆1,𝑛⋮ ⋱ ⋮𝑆1,𝑚 ⋯ 𝑆𝑚,𝑛
]
23
Si,j Az i. és a j. Dokumentum távolságát szimbolizálja.
Végül szükségünk van az erőhatásokat szimbolizáló TC-re azaz a korrekciós mátrixra mely a
TR és a TS közötti távolság arányát, vagyis az egymásra ható erőket mutatja.
Kiszámítása:
𝑇𝑅 =
[ 𝐷1,1
𝑆1,1⋯
𝐷1,𝑛
𝑆1,𝑛
⋮ ⋱ ⋮𝐷1,𝑚
𝑆1,𝑚⋯
𝐷𝑚,𝑛
𝑆𝑚,𝑛]
=[
𝐶1,1 ⋯ 𝐶1,𝑛⋮ ⋱ ⋮𝐶1,𝑚 ⋯ 𝐶𝑚,𝑛
]
Ci,j Az i. és a j. dokumentum közötti korrekció mértékét szimbolizálja.
Ha Ci,j < 1 akkor a jelenlegi távolság túl nagy ezért az algoritmus csökkenti a távolságot.
Ha Ci,j>1 akkor a jelenlegi távolság túl kicsi ezért az algoritmus növeli a távolságot.
Ha Ci,j = 1 akkor nem kell korrigálni az aktuális távolságot.
Az algoritmus működése során a pontok mozgását legjobban a TC mátrix korábbi illetve
aktuális elemenkénti összegének különbsége mutatja, ha ez a távolság elér egy küszöbértéket,
akkor az algoritmus leáll.
Vagyis a
Leállási feltétel: ∑ 𝒊∑ 𝑗 𝑇𝐶𝑒𝑙ő𝑧ő – ∑ 𝑖 ∑ 𝑗 𝑇𝐶𝑎𝑘𝑡𝑢á𝑙𝑖𝑠 < 𝜀 akkor az algoritmus leáll.
Az algoritmus működése:
DO
{
FOR (i: 0 -> n)
{
TS kiszámítása;
FOR (j:0-> n)
TC kiszámítása;
Pontok korrigálása a TC mátrixszal:
HA (i!=j) AKKOR
{
x[j]=(x[i]-x[j])* TC[i,j];
y[j]=(y[i]-y[j])* TC[i,j];
}
}
24
}
WHILE (∑ 𝒊∑ 𝑗 (𝑇𝐶𝑒𝑙ő𝑧ő) –∑ 𝑖 ∑ 𝑗 (𝑇𝐶𝑎𝑘𝑡𝑢á𝑙𝑖𝑠 ) < 𝜀)
Az algoritmus költsége:
C = 2n3+n
2
Az algoritmus hatékonyságágának növelése:
Mivel az algoritmus mátrixokkal dolgozik ezért a számítási költség a legegyszerűbb esetben is
négyzetes. Mivel az algoritmushoz felhasznált mátrixok négyzetesek és a főátlóra
szimmetrikusak ezért: Az algoritmus hatékonyságának számításköltségének csökkentése
érdekében elég csak a főátló feletti elemeket kiszámítani azt algoritmushoz, hiszen a főátló
alatti részek ugyanazok.
Az algoritmus új költsége: 𝐶 =2𝑛3+𝑛2
2
Webes tartalom klaszterezése
A TDK dolgozat írása során igényként felmerült az adatok gépi csoportosítása, avagy
klaszterezése. Mivel nagy adatmennyiségeknél átláthatatlanná válnak az adatok. Ezért
elengedhetetlen az adatok klaszterezése a könnyebb áttekinthetőség végett.
Ha a felhasználó egy adott témában keres a dokumentum vektortér modell
távolságmetrikájával, és a klaszterezés segítségével könnyen megtalálhatja a számára fontos
adatokat, oldalakat.
A klaszterezés koncepciója hogy a hasonló dokumentumokat egy csoportba igyekszik
gyűjteni. Két dokumentum esetén pedig minél több a közös sző a két dokumentumban annál
hasonlóbbak, és annál kisebb a távolságuk az adott dokumentumoknak.
Mivel a webes adatok nagyon heterogének ezért olyan klaszterezési eljárást kellett választani,
amely képes az egyéni klaszteralakzatok felismerésére illetve a zajok kezelésére is.
A választásom a sűrűség alapú klaszterező eljárásokra esett melyek képesek az egyéni
klaszteralakzatok felismerésére, és a zajok kezelésére is.
25
Ezen elvű algoritmusok közül a DBSCAN algoritmusra esett a választás a működési
hatékonysága és jó klaszterezési képességi miatt.
DBSCAN algoritmus bemutatása
Az algoritmust 1996-ban fejlesztették ki nagyméretű zajos adatbázisok klaszterezésérexiv
. Ez
egy sűrűség alapú eljárás mely a dokumentumok vektortérbeli sűrűségén alapszik, vagyis
ahogy a sűrűségük (távolságuk) alapján összefüggő dokumentum csoportokat észlel, azokat
egy klaszterbe sorolja.
8. ábra - Egyedi klaszteralakzatok felderítése DBSCAN algoritmus segítségével
Az algoritmus működéséhez elengedhetetlen két fontos paraméter megadása:
- EPS legnagyobb megengedett dokumentumtávolság
- Minimum Points (MinPtr) magelem minimális szomszédsága
Az algoritmus fontosabb elemei
- Magelem: olyan elem melytől EPS távolságra legalább MinPts számú pont található.
- Közbenső elem: a magelemből kiinduló egymástól legfeljebb EPS távolságba pontok
halmazának egy eleme.
- Szélső elem: a magelemtől EPS távolságon belőli pontok láncolatán elérhető olyan elem,
amelyből már más elemre nem indul hivatkozás.
- Külső elem: olyan elem, amely az megadott paraméterek alapján nem sorolható semmilyen
csoportba, azaz zaj.
Az algoritmus tulajdonságai:
Előnyök:
nem használ rácsot a sűrűség meghatározásához
26
gyors, és alacsony számításigény
tetszőleges alakzatok felismerése
zajok hatékony kezelése, szűrése
Hátrányok:
EPS és MinPts paraméterek körülményes meghatározása
Egyenletes eloszlású minta esetén egy klaszterbe olvaszt, vagy mindent
különálló klaszternek (azaz zajnak)
Az algoritmus működése:
- A csoportosítandó elemek átvizsgálása magelemek után kutatva
- Magelemek ellenőrzése EPS és MinPts alapján
- Magelemhez tarozó csoportok kiépítése, a magelemből kiindulva, EPS távolságonkénti
pontok beolvasztásával
Pszeudo kód:
DBSCAN(D, EPS, MinPtr)
C=0 //Klaszter sorszáma
ForEach (P in D)
MagelemekKeresése(P,D,Eps,MinPtr, C)
SzomszédokKeresése(P, D, Eps)
Gyűjtsük ki P azon szomszédait D-ből melyek kissebbek EPS-től
MagelemekKeresése(P,D,Eps,MinPtr, C)
N=SzomszédokKeresése(P, D, Eps)
Ha Méret(N)>=Minptr akkor
C=C+1;
megjelölés magelemként (C indexel)
a klaszter elemeinek rekurzív kigyűjtése, a magelemből kiindulva
Az algoritmus költsége: 𝑂( ∙ o ( )
27
DBSCAN paramétereinek dinamikus meghatározása
A klaszterezés során általános problémaként jelentkezik, hogy az adott dokumentum
vektortérben lévő elemeket hány csoportra, klaszterre osszuk fel. Mivel a döntés nem hozható
meg abszurd módon ezért számos technika és ötlet született ennek a meghatározására.
Az első és legegyszerűbb megoldás a klaszterezési „ököl” szabályxv
, azaz egy adott
vektortérben a klaszterek száma az alábbi képlettel határozható meg:
𝑘 ≈ √
2
Ez a képlet viszonylak jó iránymutatás a klaszterek számának meghatározására.
Mivel ez az szabály csak egy durva közelítést ad, ezért számos más ötlet is született a
megfelelő klaszterszámok meghatározására.
Egy másik elterjedt koncepció a „Elbow method”xvi
a nevét a klaszterezés során készített
diagram alakjáról kapta.
9. ábra - Elbow method szemléltetése
A görbe egy íj húrjára hasonlít ahol az optimális klaszterszámot a görbében bekövetkezett
törés adja meg. (Ahol feszítik a „húrt” ott vannak az ideális paraméterek.)
28
DBSCAN algoritmus általánosítása
A DBSCAN algoritmus működéséhez két paraméter beállítása kulcsfontosságú. Ezeknek a
paramétereknek az értéke határozza meg a klaszterek számát.
Ha egy függvényként tekintünk, a két paraméterre az alábbi határértékelet kapjuk
Eps Minimum Points
(Minpts) Klaszterek száma Megjegyzés
0 > 0 0 Azaz minden pont zaj lesz.
0 = 0 n Azaz minden pontból
klaszter lesz
0 ≤ Minpts < n 1 Egy nagy klaszterré olvadnak össze a pontok
A kérdés tehát e határok között hogyan tudjuk megadni az algoritmusnak a lehető
legoptimálisabb paramétereket.
A legkézenfekvőbb megoldás az optimális klaszterszám eléréséhez az algoritmuskülönböző
paraméterekkel történő futtatása.
A paramétereket a hatékonyság érdekében a lehető legszűkebb tartományban kell tartani. De
mik is ezek a tartományok:
Min(Vektortér elemei)<Epsilon<Max(Vektortér elemei)
0<Minimum points<n/k
ahol n az elemek száma és k a klaszterezési ökölszabállyal megkapott szám.
A paraméterek azt a tartományt határozzák meg melyben a megoldás biztosan fog szerepelni.
Az iteratív keresés folyamata
Ahhoz hogy ez kétparaméteres algoritmust a paramétereitől függetlenné tudjuk tenni számos
iterációt, kell lefuttatni a fent definiált tartományok között.
29
Az iteratív keresés jóval megnöveli a költséget, de cserébe meghatározza a két ismeretlen
paramétert az Epsilon-t és a MinPts-t.
A keresés költségét leginkább befolyásoló tényező az Epsilon léptékének a meghatározása.
Ennek az étéknek a nagysága után lehet felderíteni az egyes klasztereket.
A lépték 1000 iteráció esetén már jó közelítést ad az adott problémára.
Az iteratív keresés előtt fontos meghatározni néhány elemet melyek segítik a hatékony
működést. Ezek az elemek:
- Legkisebb távolság a dokumentum távolságok mátrixában
- Legnagyobb távolság a dokumentum távolságok mátrixában
- 𝑛
𝑘 ami a klaszterezési ökölszabály alapján kapható meg
A keresés során minden egyes iterációban lefuttatjuk a DBSCAN algoritmus majd kigyűjtjük
annak az értékeit.
Az iterációk számát a két paraméter szerint futtatjuk:
Az Eps paramétert a legkisebb és legnagyobb távolságérték között léptetjük a következő
léptékkel:
𝑙 𝑝𝑡 𝑘 =max(𝐷𝐷𝑀) −min (𝐷𝐷𝑀)
𝐼𝑡𝑒𝑟á𝑐𝑖ó𝑠 𝑓𝑒𝑙 𝑜 𝑡á𝑠
Ahol a DDM: Document Distance Matrix azaz a dokumentumok távolságának mátrixa
A MinPts paramétert pedig 1-től a
𝑘 - ig léptetjük
Hogy további hatékonyságbeli javulást érjünk el azt algoritmus futtatása során, definiálnunk
kell egy fontos feltételt, ami az esetleges zsákutcákat kizárja a keresésből.
Ez a probléma a nem megfelelően megválasztott paraméterek esetén az algoritmus egy nagy
szuperklaszterbe igyekszik olvasztani a pontokat.
Ha ezeket a feltételeket teljesítünk, akkor a keresési algoritmus költsége jelentős mértékben
redukálható.
Ilyen feltétek mellett a költség közel azonos az iterációk számával.
~ 𝑖𝑡𝑒𝑟á𝑐𝑖ó𝑠 𝑓𝑒𝑙 𝑜 𝑡á𝑠 ∙ 𝑂( ∙ o ( )
30
Algoritmus:
IterativeSearch(resolution)
FOR MinPts1..(n/k) lépték:1
FOR EPS Min(DDM)..Max(DDM) Lépték: Max(DDM)-Min(DDM)/Resolution
DBSCAN(D, Eps, MinPts)
Klaszterezési adatok kigyűjtése
Belső ciklus leállási feltételeinek vizsgálata
Leggyakoribb klaszterméret megkeresése
Visszatérés a leggyakoribb klaszterméret paramétereivel.
A DBSCAN algoritmus használata során a tapasztalatok azt mutatják, hogy azt iteratív
keresés során a klaszterek számának az alakulása normál eloszlást követ. Ez az eloszlás függ
az elemek számától illetve az iteratív keresés léptékétől.
10. ábra - klaszterek számának gyakorisági eloszlása
Az ábrán látható diagram X tengelye a klaszterek számát mutatja, míg az Y tengely pedig az
egyes klaszterek esetén hány iterációban jött ki az adott klaszterszám.
0
500
1000
1500
2000
2500
3000
1 4 7 10 13 16 19 22 25 28 31 34 37 40 43 46 49 52 55 58 61 64 67 70
10 000 kisérlet elvégzése után kapott gyakoriságok eloszlása
31
Jelen diagram egy 72 elemű mintahalmazról készül, amelynél jól látszik, hogy a klaszterezési
ökölszabály jól közelíti a klaszterek számát.
√72
2= 6
A különböző minták klaszterezése során arra a következtetésre jutottam hogy minél finomabb
léptéket választok Epszilonnak az iteratív keresés során a fent definiált tartományban, annál a
kapott statisztika annál jobban közelíti az ökölszabály szerint kapott értéket.
Az elkészült program hatáskörének elemzése
Az elkészült program segítségével jól átláthatóvá válnak az egyes oldalak kapcsolati illetve
tartalombeli viszonyai. Ezáltal nem csak egy kulcsszavak alapján történő szűrést lehet
elvégezni, hanem vizuálisan az oldalak tartalombeli viszonya is jól látszik. Ezáltal kivallóan
szemléltetve az egyes oldalak hasonlóságát illetve távolságát.
A vizualizáció lévén könnyedén meg lehet határozni a tartalombeli határokat, a térkép
segítségével, mely nagyban segíti az adott tématerület iránt érdeklődő felhasználóknak a
további témához tartozó oldalak megtekintését, felderítését.
A webtérkép szempontjából kétféle hatáskört kell megvizsgálni:
- az egyik a lokális (azaz a site-ok szintjén történő térképkészítés)
- globális (azaz egy nagy kiterjedésű „internet méretű” térkép készítési )
feldolgozási szintet kell megvizsgálnunk.
A lokális szinten történő elemzés tipikusan egy site-ra vonatkozik, azaz egy weboldal
aloldalainak viszonyát deríti fel. Ebben az esetben az elemzés világosan megmutatja,
32
11. ábra - szemléltető kép a programból
hogy az adott oldal mennyire homogén illetve milyen tartalomterületekre különöl el, és
melyek azok az oldalak, amik nem illenek ezekbe a tartalmakba. Azonban nem csak a nem
odaillő oldalakat vizsgálhatjuk meg, hanem például az egyes oldalkategóriák kialakítását is jól
támogathatjuk a webtérkép segítségével. Alapesetben egy nagyméretű portálnál mindig is
problémát jelent a megfelelő navigációs kategóriák meghatározása illetve azok megfelelő
alkalmazása. Ám ha vizuálisan jól elkülöníthető csoportokat látunk a térképen, az
egyértelműen jelzi, hogy hol vannak az egyes tartalombeli kategóriák határai. További rejtett
összefüggések tárhatók fel ilyen módon a DBSCAN algoritmus használatával, melynek
segítségével automatikusan meghatározásra kerülnek az egyes csoportok, vagyis leendő
kategóriák.
A globális alkalmazási hatáskör igen nagy kihívást jelent, mivel hatalmas mennyiségű adat áll
a rendelkezésünkre. Egyetlen megkötés talán az, hogy a tatalom alapú metrika csak egy adott
nyelven belül működik megfelelőn. Tehát többnyelvűség esetén az elemzés nem megfelelően
fog működni. Mivel akár mennyire is különbözőek két nyelv szavai mimig lesznek olyan
alaki átfedések melyeket a rendszer félreértelmez illetve minden nyelvhez másfajta szótövezőt
kell alkalmazni.
További problémát jelent még hogy egy adott nyelvterületű weboldalak száma hatalmas, ami
hihetetlen mértékű tárkapacitást és számítási erőforrást igényel egy webtérkép elkészítéséhez.
33
Csak a magyar nyelvű .hu domain Google által ismert oldalainak a száma közel 100 millió
oldalt számlál, amiből egyenesen következik, hogy egy ilyen méretű térkép készítéséhez
hihetetlen nagy erőforrásokra van szükség, melyet egy normál teljesítményű asztali gép nem
tud kiszolgálni, vagy ha igen akkor hihetetlenül magas számítási idő és tárterület árán, ami
pedig elrontja az adatok naprakészségét.
Közelítő számítások egy magyar nyelvű webtérkép elkészítéséhez:
A .hu domain alatt 98 400 000 oldal találhatóxvii
A weben található oldalak átlagos mérete 320KBxviii
Ebből következik, hogy egy ilyen térkép tárigénye: 29.32 TB
Konkrét példa a webtérkép alkalmazására
A program szemléltetését, a Miskolci Egyetem: Általános
informatikai tanszékxix
honlapjának feltérképezésével és
kielemzésével mutatom be. Ahogyan az ábrákból is jól
látszik egy erősen központosított oldalról van szó, melynél
a hivatkozások egy oldalba futnak be, ez az oldal pedig a
főoldal. Ez egy egyszerű és erős koncepció miszerint a
felhasználó mindent el tud érni a főoldalról, ám a nagy
hátránya hogy egy oldalon, a rengeteg hivatkozás
átláthatatlanná teszi a rendszert.
További megfigyelésként az látszik, hogy az oldal
viszonylag egységes, homogén tartalmat mutat az oldalak
többségét nézve. Ez az egység a keresőmotorok
rangsoroló algoritmusának szempontjából is előnyös, hiszen a keresőmotoroknál nagyban
számít az oldal egységes tartalma, ami a találati listán
történő előrelépést jelent.
A központi tartalmak egy egységben koncentrálódnak,
melyből csak az eltérő tartalmú oldalak térnek el.
Ezek az oldalak a következőek:
Munkatársak: Ez az oldal csak egy képet tartalmaz,
melynél az oktatók fejére kattintva el lehet érni az az
oktatók oldalait.
Az informatikai intézet szolgáltatásai: az
informatika intézet szolgáltatásait bemutató aloldal
Számítógép terem használati szabályok: a termek
használati szabályai.
Info klub: ezeknél a tartalmaknál jól látszik, hogy
34
eltérnek a tanszék általános dokumentumaitól, tehát ezeket érdemes egy külön kategóriába
kiemelni.
Továbbá az oldal az alábbi kulcsszavakra fókuszál, ezek szerepelnek a belső magban:
start
page
miskolci
egyetem
gépészmérn
öki
kar
doktori
iskola
neptun
iit
home
tanszék
munkatárs
oktatás
kutatás
hallgató
kapcsolat
infoklub
általános
információ
történet
alapítvány
hírek
esemény
2010
barabás
elek
halász
hadházi
kocsis
kovács
krizsán
mileff
pance
smid
szűcs
wagner
5
2009
informatikus
bsc
gyakorlat
téma
laborok
felszereltség
szolgáltatás
használati
szabályzat
in102
órarendje
in103a
in103b
in104
faq
gyakori
kérdés
projektorok
foglaltsága
oktatók
kutatók
oktatók
doktorandus
zok
rendszergaz
dák
demonstráto
rok
baksáné
e
p
t
ficsór
l
kecskeméti
g
sz
z
mészáros
m
répási
salánki
j
gy
tanáraink
tóth
drótos
d
vincze
é
képzés
tárgy
kiírások
letölthető
anyag
projekt
feladatok
szakdolgoza
tok
komplex
feladat
éves
diplomamun
kák
msc
szakmai
gyakorlat
szigorlat
záróvizsgák
felvételi
záróvizsga
műsz
inf
ősz
tavasz
geial337b
2008
2007
tdk
kutatási
projektek
fejlesztési
munka
szaktanács
szervezeti
működés
ergo
bibamus
kép
galériák
oktatási
cég
Ezekre a szavakra mindenképpen kilelhet hegyezni egy estleges keresőoptimalizálást azaz
SEOxx
-t. A keresőszavakból jól látszik hogy az oldal tartalma teljes mértékben lefedi a a hozzá
tartozó tanszéket. Azaz szerepelnek az ott dolgozó munkatársak nevei, a fontosabb feladatok,
tárgyak, termek…stb. Vagyis az oldalon lényeges információk találhatóak meg, fölösleges
nem odaillő tartalmak pedig nem. Az oldal homogenitás szempontjából is egységes képet
mutat, tehát tartalmilag egy jól felépített oldalról van szó.
A program támogatja továbbá a kulcsszavakra történő szűrést is.
12. ábra - Kulcsszavakra történő szűrés a program segítségével
Valamint a dokumentumok közös tartalomi metszetének előállítását:
35
13. ábra Tartalmi metszetek kiértékelése
Összegzés, kitekintés
A tartalom alapú webtérkép egy jövőbeli kereséséi alternatíváját körvonalazza elénk, egy
tisztán tartalom alapján történő összefüggések, és tartalmi távolságok alapján készült
webtérkép nagyban megkönnyítené az internetes oldalak közötti navigációt és a web tartalmi
áttekintését. Ám mivel az internet méretei túlmutatnak egy normál asztali számítógép
kapacitásán, sőt egy fejlettebb szerver feldolgozási képességein is, ezért csak a Google-höz
hasonló számítási és tárkapacitási igényekkel rendelkező cégek lesznek csak képesek egy
ilyen webtérkép megvalósítására.
Addig is a webtérkép alkalmazása csak kisméretű problématerek kezelésére lesz elegendő,
mint például oldalak tartalmi összefüggéseinek, homogenitásának vizsgálata. Ez igencsak kis
szelete az internetnek, ám mégis sok rejtett összefüggés és következtetést tudunk levonni az
egyes oldalak elemzése által. Melyek nagyban megkönnyítik az oldalt szerkesztő személyek
munkáját.
A webtérkép jelenlegi formájában egyfajta eszközként, toolként szolgálhat a web helyek
szerkesztőinek, adminisztrátorainak, hogy oldalukat hogyan tudnák minél jobban
egységesíteni és az egyes kategóriákat-szekciókat kialakítani.
További használati alternatívaként megemlíteném, hogy a térkép kiválóan alkalmas egy
modern oldaltérkép készítésére, mely nemcsak az elérhető oldalakat hanem azok tartalmi
viszonyait is ábrázolja.
A TDK dolgozat további produktuma a DBSCAN algoritmus automatizálása, mely számos
helyen kiválóan alkalmazható, bonyolultan meghatározható klaszterezési paraméterek nélkül.
Tökéletes alternatívát jelentve zajos összetett adathalmazokra.
36
Függelék
14. ábra - Képek a programból 1.
15. ábra - Képek a programból 2.
37
Képek és ábrák jegyzéke
1. ábra – szavak előfordulásának tárolása dokumentumbeli pozíció nélkül ............................ 10 2. ábra – szavak előfordulásának tárolása dokumentumbeli pozícióval .................................. 10 3. ábra - Hash tábla működése ................................................................................................. 11 4. ábra - minta a PageRank számításához ................................................................................ 16 5. ábra - A program felépítése .................................................................................................. 18
6. ábra - Adatok begyűjtésének a folyamata ............................................................................ 19 7. ábra - Dokumentumpontok árendeződése a kiszámított erők által....................................... 22 8. ábra - Egyedi klaszteralakzatok felderítése DBSCAN algoritmus segítségével .................. 25
9. ábra - Elbow method szemléltetése ...................................................................................... 27 10. ábra - klaszterek számának gyakorisági eloszlása .............................................................. 30 11. ábra - szemléltető kép a programból ................................................................................. 32 12. ábra - Kulcsszavakra történő szűrés a program segítségével ............................................. 34 13. ábra Tartalmi metszetek kiértékelése.................................................................................. 35
14. ábra - Képek a programból 1. ............................................................................................. 36
15. ábra - Képek a programból 2. ............................................................................................. 36
38
Irodalomjegyzék, Hivatkozások
Könyvek:
[ 1.] Tikk Domonkos: Szövegbányászat
[ 2.] Trey Nash C# 2008
[ 3.] SAMS: Joe Mayo C# 3.0 with the .NET Framework 3.5
[ 4.] Kovács László: Adatelemzési és adatbányászati módszerek jegyzet
[ 5.] Kovács László: Szövegbányászat és dokumentumkezelés
Internetes források:
[ 1.] http://www.googleguide.com/google_works.html
[ 2.] http://ppcblog.com/how-google-works/
[ 3.] http://www.google.com/howgoogleworks/
[ 4.] http://www.microsoft.com/net/
[ 5.] http://dev.mysql.com/doc/
[ 6.] http://mokk.bme.hu/projektek/szoszablya
[ 7.] http://en.wikipedia.org/wiki/Determining_the_number_of_clusters_in_a_data_set
[ 8.] http://en.wikipedia.org/wiki/DBSCAN
39
Hivatkozások:
i http://en.wikipedia.org/wiki/SMART_Information_Retrieval_System
ii Tikk Domonkos: Szövegbányászat
iii http://szovegbanyaszat.typotex.hu/content/html/ch2zipf/ch2zipf.html
iv http://tartarus.org/~martin/PorterStemmer/
v http://en.wikipedia.org/wiki/Stopword
vi http://www.ranks.nl/stopwords/hungarian.html
vii http://en.wikipedia.org/wiki/Bitmap_index
viii Information Retrieval: Implementing and Evaluating Search Engines. Cambridge
ix Kovács László: Adatbázisok tervezésének és kezelésének módszertana
x http://msdn.microsoft.com/en-us/library/xfhwa508.aspx
xi Tikk Domonkos: Szövegbányászat
xii http://www.googleguide.com/google_works.html
http://ppcblog.com/how-google-works/
http://www.google.com/howgoogleworks/
xiii http://www.webworkshop.net/pagerank.html
xiv http://rgm2.lab.nig.ac.jp/RGM2/R_man-2.9.0/library/fpc/man/dbscan.html
xv Kanti Mardia et al. (1979). Multivariate Analysis. Academic Press
xvi Kanti Mardia et al. (1979). Multivariate Analysis. Academic Press
xvii http://www.google.hu/search?sourceid=chrome&ie=UTF-8&q=site:.hu
xviii http://searchengineland.com/google-web-report-average-page-size-320-kb-46316
xix http://www.iit.uni-miskolc.hu/iitweb/opencms/department/index.html
xx http://www.seotools.hu/