Upload
others
View
66
Download
0
Embed Size (px)
Citation preview
SVEUČILIŠTE U ZAGREBU
FAKULTET ORGANIZACIJE I INFORMATIKE
VARAŽDIN
Andrea Danzante
AGENTI ZA RUDARENJE WEBA
ZAVRŠNI RAD
Varaždin, 2017
SVEUČILIŠTE U ZAGREBU
FAKULTET ORGANIZACIJE I INFORMATIKE
VARAŽDIN
Andrea Danzante
Matični broj: 43350/14-R
Smjer: Informacijski sustavi
AGENTI ZA RUDARENJE WEBA
ZAVRŠNI RAD
Mentor:
Doc. dr. sc. Markus Schatten
Varaždin, veljača 2017.
Sadržaj
1. Uvod ................................................................................................................................... 1
2. Rudarenje webom .............................................................................................................. 5
2.1. Web structure rudarenje .............................................................................................. 6
2.2. Web usage rudarenje ................................................................................................... 8
2.3. Web content rudarenje .............................................................................................. 12
3. Agentno rudarenje webom ............................................................................................... 14
3.1. Agenti za rudarenje webom....................................................................................... 14
3.2. Alat za rudarenje ....................................................................................................... 14
3.4. Struktura i pohrana podataka..................................................................................... 15
3.5. Izvor podataka ........................................................................................................... 16
3.5.1. Struktura web mjesta.......................................................................................... 17
3.5.2. Struktura stranica ............................................................................................... 17
3.5.3. Prikupljeni podaci .............................................................................................. 19
3.6. Prikupljanje podataka ................................................................................................ 22
3.6.1. Ucitaj CSV (operator tipa Read CSV) ............................................................... 22
3.6.2. Dohvati podatke (potproces tipa Loop Values) ................................................. 22
3.6.2.1. Obradi ulazni link ....................................................................................... 23
3.6.3. Spoji podatke (operator tipa Append) ................................................................ 29
3.6.4. Ocisti podatke (potproces tipa Subprocess) ....................................................... 29
3.6.5. Pohrani u CSV (operator tipa Write CSV) ........................................................ 30
4. Zaključak.......................................................................................................................... 31
1
1. Uvod
U svakodnevnom govoru sve više ljudi koristi riječi Internet i web kao sinonime bez
poznavanja njihova značenja. Iako su oba pojma jako povezana, oni ne predstavljaju istu stvar
već svaki od njih reprezentira jedan aspekt povezanosti računala i ljudi te razmjene informacija
korištenjem računalne tehnologije.
Internet je računalna mreža koja spaja milijune računala diljem svijeta (Kurose i Ross, 2013).
Sama definicija interneta fokusirana je na tehničku stranu te podrazumijeva računala odnosno
sklopovlje koje omogućava ostvarivanje veze te čini mrežu. Rastom broja računala nastajalo
je sve više manjih mreža koje su potom povezivane u veće mreže, a veće mreže su potom
povezivane u još veće što dovodi do jedne velike mreže u kojoj su svi povezani međusobno,
Interneta (Beal, 2016).
World Wide Web (znan samo kao web) podrazumijeva način pristupa podacima preko samog
medija, to jest Interneta (Beal, 2016). U početku, Internet je koristila vojska te se potom proširio
i na edukacijske ustanove poput sveučilišta. Krajem 80-ih te početkom 90-ih godina prošloga
stoljeća Tim-Berners Lee na temelju saznanja svojih prethodnika razvija HTML programskog
jezika (engl. Hyper Text Markup Language) i HTTP protokola (engl. Hyper Text Transfer
Protocol) koji čine okosnicu stvaranja modernog weba koji poznajemo (Lee, 1989).
Prema navedenim definicijama i objašnjenjima vidimo da je razlika između Interneta i weba u
tome što Internet predstavlja samu mrežu odnosno sklopovlje, a web programsku podršku za
razmjenu podataka preko sklopovlja. Još jedna razlika Interneta i weba je ta da web ne može
biti realiziran bez Interneta, dok Internet bez weba može te se koristi za prijenos podataka u
različitim oblicima i protokolima poput: email-a (engl. Simple Mail Transfer Protocol - SMTP,
engl. Post Office Protovol - POP3, engl. Internet Message Access Protocol- IMAP…),
razmjene podatka (engl. File Transfer Protocol - FTP) te brze razmjene poruka (engl. Instant
messaging) (Beal, 2016).
Počeci nastanka gore opisanog načina razmjene podataka započeo je u ožujku 1989. Tim-
Berners Lee svojim djelom “Information management: A proposal” (Lee, 1989). Web je bio
osmišljen kao usluga koja je omogućavala razmjenu svih vrsta podataka koristeći HTML
2
potpomognut HTTP protokolom uz korištenje identificiranih veza odnosno URL (engl.
Uniform Resource Locators).
Slika 1. Osnovni primjer HTML jezika
HTML jezik programski je jezik oznaka koji služi za prezentaciju sadržaja u obliku web
stranica. Kao što je prikazano na slici iznad, osnovni pojam jezika su oznake (engl. tag), a
njihova namjena je strukturiranje podataka koji se nalaze unutar otvarajuće (npr. <p>) i
zatvarajuće (npr. </p>) oznake.
Slika 2. Primjer korištenja HTTP protokola (preuzeto s: https://www.tutorialspoint.com/http/http_message_examples.htm)
HTTP protokol koristi se za razmjenu HTML stranica, to jest hipertekstualnih dokumenata
korištenjem Interneta. U samoj komunikaciji sudjeluju korisnik i server te uz pomoć unaprijed
definiranih poruka komuniciraju te razmjenjuju poruke (Kurose i Ross, 2013). Kao što je
prikazano na slici iznad, klijent šalje zahtjev (engl. Client request) za stranicom slanjem
potrebnih informacija te samim zahtjevom koji je prikazan u prvoj liniji. Server odgovara (engl.
3
Server response) na zahtjev slanjem podataka u HTML obliku te porukom sa statusom je li
pronađena stranica ili je došlo do greške.
Hipertekstualni dokumenti pisani su u gore opisanom jeziku HTML, a mogli su sadržavati
slike, audio i video zapise te tekst što je uvelike pojednostavilo razmjenu podataka. Prijenos se
odvijao preko spomenutog HTTP protokola uz pomoć servera koji je distribuirao sadržaj
korisnicima. Uz sve navedeno Tim-Berners Lee zaslužan je za uvođenje hiperpoveznice (engl.
Hyperlink) ili u to vrijeme poznatije kao hipertekst (engl. Hypertext) (Lee, 1989).
Hiperpoveznice činile su osnovu za novi sustav povezanih informacija (engl. Linked
information system) koji je skalabilan neovisno o količini informacija koju mora prezentirati i
dostaviti, a također bez gubitka informacija što je bio najveći problem u to vrijeme (Lee, 1989).
Od trenutka kad je prihvaćen prijedlog Tim-Berners Leea pa sve do danas, web je u
konstantnom razvoju te raste iz dana u dan. Dosad su zabilježene tri podjele weba kroz
razdoblje koje predstavljaju tri ere weba, a one su (Naik i Shivalingaiah, 2014):
• web 1.0 – sami počeci weba i prva pojava hipertekstualnih dokumenata. Ovu eru
obilježile su web stranice koje su bile samo za čitanje (engl. Read-Only Web).
Interakcija s korisnikom nije bila u prvom planu već su ljudi direktno pristupali serveru
samo radi informacija.
• web 2.0 – era u kojoj se trenutno nalazimo. Karakteristika web 2.0 je interakcija
korisnika s web stranicama, točnije, korisnici čitaju i sami kreiraju sadržaj (engl. Read-
Write). Ljudi su ubrzo uvidjeli prednosti weba te više web nije korišten samo za pristup
i čitanje podacima već su se na njega prebacivala poslovanja, pokrenute su kompanije
te se nove mogućnosti otvaraju svakim danom.
• web 3.0 – era za koju se smatra da će biti ostvarena u bliskoj budućnosti. Kako opisuju
stručnjaci, web 3.0 nova je verzija weba koja se nakon godina prikupljanja podataka
preko interaktivnih sučelja sada usredotočuje na pozadinske procese (engl. Backend
Processes) te na korištenje baza podataka i prikupljenih informacija. Ova era donijet će
nova saznanja i nove informacije koje će biti dostupne svima i omogućene pomoću
umjetne inteligencije.
Svaka era razvoja weba donosi svoje prednosti i uzbuđenja, ali kao glavni aspekt weba u ovom
radu proučavat će se web 2.0 prvenstveno zbog toga što je trenutno aktivan te je, kao što kažu
Schatten, Ševa, and Okreša Đurić (2015), postao najveći i najdostupniji repozitorij u povijesti
o ljudskom ponašanju. Razvitkom weba nastale su društvene mreže i razna web mjesta za
4
razmjenu informacija koje su srž ove verzije te je svakim danom sve više korisnika tih
društvenih mreža o kojima se bilježi velika količina podataka.
U uvodu su pojašnjene osnovne razlike Interneta i weba, što točno predstavlja web te koji
aspekti weba su detaljnije proučeni u radu. Nastavak sadrži detaljniji opis rudarenja webom
(engl. Web mining) te objašnjava kako se rudarenje provodi u praksi koristeći agente.
5
2. Rudarenje webom
Opis rudarenja webom ponuđen je na stranicama Technopedia, a preuzeo sam ga zato što u
jednoj rečenici navodi osnove web rudarenja. Citat je preuzet s stranice
https://www.techopedia.com/definition/15634/web-mining , a glasi:
„Web mining is the process of using data mining techniques and algorithms to extract
information directly from the Web by extracting it from Web documents and services, Web
content, hyperlinks and server logs“.
Kao što definicija na engleskom kaže, rudarenje webom proces je u kojemu se pomoću raznih
tehnika i algoritama direktno pristupa informacijama na webu. Riječ proces tu se nalazi zato
što postoji više aktivnosti/operacija koji se izvod od trenutka početka pretrage pa do dobivanja
traženih informacija odnosno koje naše računalo i ostala računala u mreži izvedu. Informacije
koje smo zatražili dobivamo tako što računalo pronalazi web stranice koje su srodne našem
upitu ili zadovoljavaju upit te potom preuzima web dokumente, web sadržaj, a po potrebi
pristupa hiperpoveznicama (Kurose i Ross, 2013). Iako web rudarenje na prvu izgleda kao
pretraživanje teksta unutar stranice, to nije tako. Prilikom rudarenja u obzir se moraju uzeti i
hiperpoveznice koje nisu običan tekst, već veza na novu stranicu. Primjenom hiperpoveznica
razbijena je linearnost čitanja stranice te preko jedne stranice možemo dospjeti na drugu, treću
i tako dalje, što algoritmi za web rudarenje moraju savladati i vratiti nama korisne informacije.
Upravo zbog nedostatka linearnosti postoje četiri zadatka koja se izvode i dovode do podataka
(Costa, M.G. i Gong, 2005)(Dinuca, 2010):
1. Pronalazak resursa (engl. Resource finding) – prikupljanje izvora podataka u obliku
web dokumenata direktno s weba ili lokalnim preuzimanjem.
2. Pred-procesiranje i odabir informacija (engl. Information selection and pre-
processing) – podrazumijeva proučavanje strukture web dokumenata te pronalazak
podataka koje želimo dohvatiti sa stranice.
3. Generalizacija (engl. Generalization) – na temelju jedne stranice određen je položaj
podataka na web dokumentu te na temelju tih informacija možemo sa svih web
dokumenata istog ili sličnog formata dohvatiti podatke.
4. Analiza (engl. Analysis) – na temelju prikupljenih podataka uz prisustvo čovjeka
dobivaju se informacije te stvaraju uzorci.
6
„The goal of Web mining is to look for patterns in Web data by collecting and analyzing
information in order to gain insight into trends, the industry and users in general.“
Navedeni citat također je preuzet sa stranice Technopedia, a zajedno s prvim nalazi se na linku:
https://www.techopedia.com/definition/15634/web-mining. Samim rastom Interneta povećava
se broj korisnika koji zahtijevaju informacije, ali ujedno i donose nove u interakciji s web
mjestima i ostalim korisnicima. Upravo je zbog prethodno navedenog problema čitanja
hipertekstualne datoteke (korištenje hiperpoveznica) teže pratiti tijek čitanja korisnika, ali taj
problem riješen je pomoću kreiranja i pronalaženja uzoraka u web podacima (Costa, M.G. i
Gong, 2005). Analizirajući i prikupljajući podatke o korisnikovim kretanjima po web stranici
dobivamo uvid u trendove korisnika, a taj uvid moguć je praćenjem sadržaja stranica te
bilježenjem posjećenih (Costa, M.G. i Gong, 2005)(Cooley, Mobasher i Srivastava,
1997)(Srivastava i ostali, 2016).
Definicija web rudarenja uključuje podjelu na tri kategorije od kojih jedna prati strukturu
između web stranica što čini strukturalno rudarenje (engl. Structure mining), druga kategorija
na temelju uvida u trendove i zanimanja korisnika prikuplja podatke o korištenju te čini srž
rudanja podataka korištenja (engl. Usage mining), a oblik rudarenja fokusiran je na sadržaj web
stranice što opisuje rudarenje sadržaja (engl. Content mining) (Technopedia, 2017). U nastavku
ovog poglavlja detaljnije su opisane sve kategorije web rudarenja.
2.1. Web structure rudarenje
Rudarenje strukturom weba ili web structure rudarenje fokusirano je na proučavanje veza
između web mjesta, web stranica, hiperpoveznica i web stranica ili web mjesta na drugoj strani
tih veza. Cilj ovog rudarenja je kreirati nove veze na temelju sadržaja i trenutnih poveznica
čineći mapu mjesta (engl. Site map) koja prezentira veze između web stranica te ubrzava
pronalazak informacija (Dinuca, 2010).
Analiziranje strukture weba i povećanje količine podataka za pretraživanje dovelo je do novog
područja pretraživanja rudarenja vezama (engl. Link mining) koje se usko povezuje s web
structure rudarenjem, te je čak postalo i sinonim za njega zbog istog načina djelovanja - oba
proučavaju strukturu i način povezivanja web stanica i web mjesta (Getoor, 2003). Rudarenje
vezama nadograđuje samo web structure rudarenje i prilagođava ga većim količinama podataka
uvođenjem sve više hiperpoveznica koje su različitih struktura i formi. Ovaj tip rudarenja ima
sljedeće zadaće koje obavlja kako bi omogućio efikasno i brzo pretraživanje i organiziranje
web stranica i web mjesta (Getoor, 2003):
7
1) Klasifikacija bazirana na vezama (engl. LinkBased Classification) – glavna točka ove
klasifikacije je predviđanje kategorije web stranica na temelju riječi, sadržaja,
postojećih veza te HTML oznaka (Costa, M.G. i Gong, 2005). Primjer koji najbolje
opisuje klasifikaciju temeljenu na vezama je klasifikacija web stranica (engl. web-page
classification) (Getoor, 2003) čija je namjena povezati stranice koje sadrže ključne
riječi, sadržaje, citate ili ostale oznake koje su na svim web stranicama. Web structure
rudarenje ovaj je korak izvodilo tako da je prema atributima određivalo kojoj kategoriji
(klasifikaciji) web stranica ili web mjesto pripada te se na temelju toga povezivala u
strukturu. Rudarenje vezama unaprijedilo je proces tako da se više ne gleda samo atribut
već se uz njega pregledavaju hiperpoveznice te web stranice na krajevima tih
hiperpoveznica kako bi se upotpunila slika o web mjestu i dodijelila u pravu strukturu
na pravo mjesto (Getoor, 2003).
2) Analiza klastera bazirana na vezama (engl. LinkBased Cluster Analysis) – temelj
ove analize je klaster, odnosno pronalazak podklasa web stranica sa zajedničkim
sadržajem (Costa, M.G. i Gong, 2005)(Getoor, 2003). Za razliku od prije spomenute
Klasifikacije bazirane na vezama u kojoj su u obzir uzimane postojeće veze, atributi i
ključne riječi, u Analizi klastera baziranoj na vezama u obzir ulazi samo sadržaj web
stranice čime algoritmi nisu ograničeni velikom količinom parametara te je lakše otkriti
nove uzorke i veze između stranica (Getoor, 2003). Analiza radi na principu pronalaska
hubs-a (stranica koje su povezane na najviše stranica) te se prema njihovom sadržaju
kreiraju klasteri i istražuju moguće veze među sadržajima koje nude pronađene stranice
(Getoor, 2003).
3) Identifikacija tipa veze (engl. Identifying Link Type) – kao što postoje odnosi (veze)
među ljudima tako postoje i među stranicama te nas prilikom pronalaska informacija
zanima koja je veza bolja i koja vodi do „boljih“ informacija (Getoor, 2003).
Identifikacijom tipa veza možemo omogućiti lakše kretanje kroz strukturu zato što veze
možemo označiti kao veze za navigaciju, veze za reklamiranja itd. čime ćemo uštedjeti
vrijeme pretrage jer iz strukture možemo isključiti, na primjer, sve veze na reklame
(Getoor, 2003).
4) Predviđanje čvrstoće veze (engl. Predicting Link Strength) – čvrstoća veze pojam je
koji određuje „važnost“ stranice u strukturi. Svaka veza može imati zadanu jačinu
odnosno težinu, a ona može biti određena raznim algoritmima (npr. PageRank), brojem
stranica koje su vezane za promatranu stranicu ili brojem izlaznih veza promatrane web
stranice (Getoor, 2003).
8
5) Broj veza (engl. Link Cardinality) –brojem veza web stranice možemo odrediti koji je
položaj stranice u strukturi. Stranice s većim brojem veza prema van čine prije
spomenute hubs stranice koje imaju veću važnost naspram ostalih stranica. Broj veza
prema promatranoj web stranici ukazuje da je web stranica autoritativna, to jest da
sigurno sadrži potvrđene podatke i informacije (Getoor, 2003).
6) Povezivanje zapisa (engl. Record Linkage) – neke veze i zapisi koji su povezani
nemaju jedinstveni identifikator što može dovesti do problema pri dohvaćanju podataka
(Getoor, 2003). Problem nastaje kada su dva slična web objekta povezana na isti objekt
na nekoj web stranici. Kako se to ne bi događalo, pri kreiranju veza ne možemo
povezivati objekte i stranice samo na temelju atributa već moramo razmotriti i ostale
veze na tom objektu kako bismo uspješno odredili strukturu (Getoor, 2003).
Prema svemu dosad napisanom u ovom poglavlju možemo uočiti da je web structure rudarenje
veoma važno prilikom dohvaćanja podataka. Struktura među stranicama čini temelj web
mjesta, ubrzava pretraživanje pretraživačima, olakšava kretanje korisnicima što je velika
prednost za vlasnike web mjesta, pogotovo ako su to poslovanja bazirana na webu. Uz sve veći
broj informacija, korisniku je važno brzo i jednostavno dostaviti podatke koji su mu potrebni,
a dobra struktura upravo to omogućava.
2.2. Web usage rudarenje
Web usage rudarenje vrsta je rudarenja webom koja na web serveru dohvaća podatke o
korisnikovim pristupanjima web stranicama (Cooley, Mobasher i Srivastava, 1997) te je stoga
Rudarenje podacima korištenja weba prijevod koji najbolje opisuje ovu vrstu rudarenja.
Rudarenje podacima korištenja weba primjena je tehnika rudarenja za otkrivanje uzorka
korištenja i pristupanja web stranicama u svrhu poboljšanja web mjesta i rada web aplikacija
(Srivastava i ostali, 2016).
Temelj ovog rudarenja čine podaci o korisnicima, to jest o njihovim pristupima svim podacima
i web stranicama unutar web mjesta ili onima koje se nalaze na određenom serveru. Podaci
korištenja weba, odnosno web mjesta, pohranjuju se na serveru u: dnevnik pristupa (engl.
access log) i dnevnik preporuke (engl. Referrer logs) (Cooley, Mobasher i Srivastava, 1997),
a uz sve navedene izvore informacija postoji još jedan jednako važan - korisnička sesija (engl.
user session) (Srivastava i ostali, 2016). Prethodno navedeni izvori podataka nalaze se na
9
serverskoj strani i spadaju pod podatke prikupljene na serveru (engl. Server Level Collection),
a uz to postoje još i podaci prikupljeni na korisničkoj strani (engl. Client Level Collection) koji
podrazumijevaju prikupljanje podataka pomoću JavaScript i Java apleta koji uz pomoć
pretraživača prikupljaju podatke (Srivastava i ostali, 2016). Treći način prikupljanja podataka
je prikupljanje podataka na proxy poslužitelju (engl. Proxy Level Collection ) što je slično
prikupljanju podataka na serveru jer je proxy poslužitelj server između web servera sa web
stranicom i klijenta (Srivastava i ostali, 2016).
Web usage rudarenje, odnosno samo prikupljanje informacija za analizu korištenja stranica,
dobiva se provođenjem tri koraka koja navode J. Srivastava, R. Cooley, M. Deshpande, P. Tan
u svom djelu Web Usage Mining: Discovery and Applications of Usage Patterns from Web
(Srivastava i ostali, 2016):
1. Predprocesiranje (engl. Preprocessing)
a. Procesiranje korištenja (engl. usage processing) je najkompliciranije
procesiranje korišteno pri web usage rudarenju zato što ukoliko ne postoje zapisi o
aktivnostima korisnika na stranici, procesiranje se vrši preko IP adresa. Prilikom
dohvaćanja podataka o korištenju pomoću IP adresa, klijenta (pretraživača) te
servera koji prati korisnika, javljaju se sljedeći problemi (Srivastava i ostali, 2016):
i. Jedna IP adresa/Više sesija prema serveru (engl. Single IP
Address/Multiple Server Sessions) – sam web sastoji se od više ISP-a
(engl. Internet Service Provider) koji imaju proxy poslužitelje preko
kojih korisnik može pristupiti webu. Zbog velikog broja proxy servera
korisnik može tokom vremena pristupati različitim proxy serverima što
podrazumijeva da jedan korisnik ima više serverskih sesija što dovodi
do problema prilikom identificiranja korisnika.
ii. Više IP adresa/Više sesija prema serveru (engl. Multiple IP
Address/Multiple Server Session) – neki poslužitelji mogu svakom
zahtjevu korisnika pridodati nasumičnu IP adresu, samim time isto
računalo pristupa istoj stranici, ali preko različitih IP adresa što opet
dovodi do problema praćenja aktivnosti (korištenja).
iii. Više IP adresa/Jedan korisnik (engl. Multiple IP Address/Single User)
– isti korisnik može pristupiti stranici s različitih računala, a s obzirom
na to da svako računalo ima svoju IP adresu opet dolazi do problema pri
praćenju korisnika.
10
iv. Više agenta/Jedan korisnik (engl. Multiple Agents/Single User) – ako
jedan korisnik s istog računala pristupa istoj stranici, ali preko različitih
pretraživača, on također ima različite IP adrese što nije pogodno za
praćenje korištenja stranice.
b. Procesiranje sadržaja (engl. content processing) vrsta je procesiranja u kojem se
svi tekstovi, slike, skripte i forme prebacuju u oblik pogodan web usage rudarenju
(Srivastava i ostali, 2016). Prebacivanje ili, bolje rečeno, formiranje oblika
pogodnog za pretraživanje uključuje grupiranje sadržaja web stranica, točnije
klasifikaciju i klasteriranje. Klasifikacija i klasteriranje opisani su kasnije kod
otkrivanja uzorka (engl. Patern discovery), a za trenutno razumijevanje sadržaja
dovoljno je znati da i klasifikacija i klasteriranje imaju isti cilj, a to je grupiranje
srodnog, sličnog ili istog sadržaja . Content procesiranje značajno je pri web usage
rudarenju kako bi se moglo istraživati kojim sadržajima, to jest vrstama sadržaja
korisnik pristupa i prema tome stvaramo zapise u bazi podataka na serveru
(Srivastava i ostali, 2016).
c. Procesiranje strukture (engl. structure processing) ostvaruje se nakon što su
pomoću procesiranja korištenja i procesiranja sadržaja stranice dobivene
informacije. Web stranice već su povezane hiperlinkovima (hypertext-ovi) što
olakšava samo procesiranje jer postoji struktura koja se može istraživati, no
problem predstavljaju web stranice na drugoj strani veze koje mogu imati drugačiju
strukturu i zahtijevati drugačiju sesiju (Srivastava i ostali, 2016).
2. Otkrivanje Uzorka (engl. Pattern Discovery ) (Srivastava i ostali, 2016):
a. Statistička Analiza (engl. Statistical Analysis) – podaci iz sesije koriste se za razne
deskriptivne analize te podataka poput broja posjeta, duljine trajanja, duljine puta
i raznih drugih brojčanih podataka mogu se izračunati podaci poput prosjeka
posjeta, prosječno trajanje posjete stranici itd..
b. Pravila povezivanja (engl. Association Rules) – opisuju vezu između stranica koje
su najčešće posjećene jedna za drugom u jednoj serverskoj sesiji, ali ne moraju biti
povezane hiperpoveznicama. Upravo proučavanje ovakvih veza može dovesti do
stvaranja novih hiperpoveznica i izmjene u strukturi web mjesta.
c. Klasteriranje (engl. Clustering) – iako je spomenuto u više navrata u prethodnom
dijelu rada sada će biti razjašnjeno. Klaster čini grupa web stranica ili web objekata
koji su povezani sadržajem u jednu grupu (Johnson i Kumar Gupta, 2012). Prilikom
11
klasteriranja postoje dvije vrste klastera, ovisno o sadržaju koji je promatran
(Srivastava i ostali, 2016):
i. Klasteri prema korištenju (engl. usage cluster) čine grupu web
stranica ili objekata koji su srodni po podacima o korištenju. Uzorci koji
se često pojavljuju i povezuju nekoliko stranica mogu biti grupirani u
klaster.
ii. Klasteri prema stranicama (engl. page cluster) su klasični klasteri koji
podrazumijevaju grupiranje web stranica prema srodnom sadržaju.
d. Klasifikacija (engl. Classification) – način povezivanja sličan klasteriranju, ali u
ovom slučaju podaci se mapiraju u klase (engl. class) srodnog sadržaja (Srivastava
i ostali, 2016). Na temelju sadržaja web stranice grupirane su u navedene klase, a
svaka klasa sadrži opis kreiran iz sažetaka i ključnih riječi stranice koji opisuje sve
web stranice unutar nje.
e. Sekvencijalni uzorci (engl. Sequential Patterns) – sekvenca podrazumijeva
sortirani skup podataka (Masseglia, Teisseire i Poncelet, 2005). Na temelju
podataka dobivenih praćenjem korisnika stvara se sekvencijalni uzorak o
korisniku, a on može sadržavati kupljene predmete ukoliko se radi o web kupnji ili
posjećene web stranice (Masseglia, Teisseire i Poncelet, 2005).
f. Modeliranje ovisnosti (engl. Dependency Modeling) – podrazumijeva kreiranje
modela koji reprezentira kretanje korisnika kroz web mjesto. Prikupljanjem
podataka o korištenju kreiraju se modeli koji se potom usavršavaju i predstavljaju
jedan uzorak korištenja.
3. Analiziranje Uzorka (engl. Pattern Analysis) – nakon što su uzorci uspostavljeni, oni
se proučavaju pomoću alata za vizualizaciju i analizu te također korištenjem zapisnika
korisnika i aktivnosti kako bi se provela potpuna analiza za daljnji rad i proučavanje
(Cooley, Mobasher i Srivastava, 1997). U ovom koraku eliminiraju se nepotrebni uzorci
te samom analizom omogućujemo daljnji radi u kojem structure rudarenje može
pristupiti već analiziranim i spremnim uzorcima i spojiti ih u strukture (Srivastava i
ostali, 2016).
Prikupljanje podataka o korisniku donosi velike količine podataka iz kojih vlasnici web mjesta
mogu dobiti uvid u korištenje i pristupanje web stranicama te interese korisnika. Vlasnici web
mjesta prikupljaju podatke o korištenju radi poboljšanja samog web mjesta u pogledu sadržaja
i stranicama koje su najpopularnije, to jest imaju najviše posjeta ili se korisnici najdulje
12
zadržavaju na njoj, ali do problema dolazi u pogledu privatnosti na webu (Cooley, Mobasher i
Srivastava, 1997). Problem privatnosti na webu (engl. Privacy Isseus) osjetljiva je tema iz
razloga što nisu jasno definirana i regulirana pravila koja kontroliraju praćenje korisnika
prilikom pristupanja web mjestu ili web stranici što je dovelo do inicijative World Wide Web
Consortiuma (W3C) za kreiranjem protokola imena Platform For Privacy Preferences koji će
očuvati privatnost korisnika, a vlasnicima omogućiti praćenje korisnika (Cooley, Mobasher i
Srivastava, 1997).
2.3. Web content rudarenje
Web content rudarenje ili rudarenje sadržaja weba proces je pretraživanja weba preko sadržaja
web dokumenata i web stranica (Johnson i Kumar Gupta, 2012). Ovaj oblik rudarenja dobavlja
podatke sa web dokumenata i web stranica, ali problem je u tome što postoji velika količina
podataka koje je potrebno procesuirati, a većina informacija je polustrukturirana jer je
prilagođena krajnjim korisnicima (ljudima), a ne pretraživačima i računalima općenito (Liu i
Chang, 2004). U svrhu pristupanja polustrukturiranim podacima kreirani su razni alati, točnije
agenti koji, ovisno o postavkama i opsegu, mogu rudariti danim web stranicama i web mjestima
(Cooley, Mobasher i Srivastava, 1997).
Rudarenje sadržaja weba također kao i prethodno spomenute vrste rudarenja ima svoju podjelu
koja sadrži dva pristupa ovisno o vrsti i izvoru podataka (Johnson i Kumar Gupta,
2012)(Cooley, Mobasher i Srivastava, 1997):
1) Pristup orijentiran na agenta (engl. Agent Based Approach)
i. Pametni pretraživač (engl. Intelligente Search Agent) – pojedini web agenti
(pretraživači) razvijeni su tako da koriste karakteristike same domene (web
stranice) i korisnikov profil kako bi interpretirali, organizirali i prilagodili
pronađene podatke korisniku (Cooley, Mobasher i Srivastava, 1997)(Johnson i
Kumar Gupta, 2012).
ii. Filtriranje/Kategoriziranje Informacija (engl. Information Filtering/
Categorization) – vrsta agenata koji na temelju definiranih instrukcija
pretražuju i dohvaćaju podatke (Johnson i Kumar Gupta, 2012). Neki agenti
ovog tipa rade na principu dohvaćanja podataka preko linkova i klastera koji
13
nude ključne riječi prema kojima se potom nastavlja dalje rudarenje i
prikupljanje podataka (Cooley, Mobasher i Srivastava, 1997).
iii. Personalizirani Web Agenti (engl. Personalized Web Agents) – web
pretraživači (agenti) prate sklonosti i interese korisnika te na temelju njih
svakim sljedećim pretraživanjem weba rezultati će biti sve točniji i
personalizirani samom korisniku (Johnson i Kumar Gupta, 2012)(Cooley,
Mobasher i Srivastava, 1997).
2) Pristup Bazi Podataka (engl. Database Approach)
i. Višerazinska Baza Podataka (engl. Multilevel Database) – ideja ovakve baze
podataka je da se sastoji od više razina kod kojih su na najnižoj razini spremljeni
polustrukturirani podaci u raznim web repozitorijima poput hiperpoveznica,
dok se na višim razinama nalaze meta podaci koji su organizirani u relacije ili
objektno orijentirane baze podataka te samim time generaliziraju podatke
spremljene u nižim slojevima (Cooley, Mobasher i Srivastava, 1997).
ii. Sistem Web Upita (engl. Web Query System) – većina web upita koristi upite
već općeprihvaćenih upitnih jezika poput npr. SQL-a te ih proširuju
strukturalnim informacijama web stranica, procesiranjem govornog jezika koji
se koristi kod pretraživanja weba (Cooley, Mobasher i Srivastava, 1997).
14
3. Agentno rudarenje webom
U ovom poglavlju cijeli teorijski dio prezentiran kroz rad provodi se u praksu. Kroz nekoliko
potpoglavlja objašnjeno je što je agent, koji alati su potrebni za rad te kako se koriste, zatim
što je početni izvor podataka i kako dolazimo do detaljnijih podataka za obradu te na kraju
prezentacija podataka i informacija. Svi koraci procesa dohvaćanja, obrade i rudarenja
relevantnih podataka izvedeni su u alatu Rapid Miner i objašnjeni i nadopunjeni slikama.
3.1. Agenti za rudarenje webom
Autori Inamdar i Shinde (2008) u svom djelu „An Agent Based Intelligent Search Engine
System For Web Mining“ navode da se agenti koriste za provođenje operacija i aktivnosti u
ime korisnika računalnog sustava. Navedeni opis funkcionalnosti agenta povezan s web
rudarenjem možemo reći da agent u ime korisnika pretražuje odnosno rudari za traženim
podacima u ime korisnika računala. Izuzev toga što je funkcionalnost agenta, sama definicija
agenata kaže da su to programi, aplikacije ili alati koji na temelju ulaznih parametara pretražuju
web te dohvaćaju tražene podatke (Cooley, Mobasher i Srivastava, 1997). Prema autorima
Cooley, Mobasher and Srivastava (1997) postoje tri vrste agenata koje su podjeljene na temelju
izlaznih podataka i razini autonomnosti opisane su u potpoglavlju o web content rudarenju.
3.2. Alat za rudarenje
Alat korišten u ovom završnom radu je Rapid Miner Studio. Rapid Miner Studio je visoko
funkcionalni alat sposoban za prikupljanje, obradu i prezentaciju, ne samo jednostavnih, već i
složenih statističkih i prediktivnih modela (RapidMiner, 2017). Iako ovaj alat nudi veliki broj
mogućnosti za pisanje završnog rada dovoljne će biti i jednostavne mogućnosti dohvaćanja
podataka preko URL linkova te obrada, čišćenje i organizacija relevantnih podataka za daljnji
rad. Na tržištu alata za web crawling i web mining postoje velike mogućnosti koje su rame uz
rame s Rapid Minerom, ali za pisanje završnog rada ovaj alat je više nego dovoljan te je
jednostavan za korištenje ukoliko se korisnik prvi put susreće s njme. Pri odabiru ovog alata
ponajviše su utjecali mentor koji je preporučio alat, te pozitivne recenzije vanjskih korisnika
koje su dale vrlo objektivna i opširna mišljenja o alatu. Prema korisnicima stranice G2 Crowd
alat je opisan kao dovoljno jednostavan za početnike, ali dovoljno opširan i složen za srednja i
veća poslovanja (G2 Crowd, 2017).
15
3.3. Potrebna znanja (jezici izraza)
Za potrebe razumijevanja odvijanja operatora i potprocesa u RapidMineru potrebno je
poznavati dva formalna jezika: XML jezik putanja (engl. XML Path Language ili XPath) te
Regularne izraze (engl. Regular Expression ili RegEx).
XPath jezik je izraza čija je glavna namjena adresiranje čvorova (engl. node) unutar XML 1.0
ili XML 1.1 dokumenata (Robie i ostali, 2014). Ovaj jezik funkcionira na principu hijerarhije
koju pruža XML svojim standardima i normama za pisanje, a samim time primjenjiv je i na
HTML dokumentima. HTML dokumenti u principu su isti kao i XML osim što XML ima
stroža pravila vezana uz zatvarajuće oznake te dopušta kreiranje vlastitih oznaka. XML je
kreiran u svrhu prijenosa informacija, dok je HTML jezik za prikaz istih (XML Objective,
2013), ali prilikom rudarenja agenti ne vide razliku već samo pristupaju podacima na kraju
putanja zadanih XPath-om.
RegEx jezik je uzoraka čija je namjena provjera i izdvajanje alfanumeričkih znakova.
Regularni izrazi rade na principu jednog izraza, to jest uzorka koji određeni znakovi ili skup
znakova moraju zadovoljiti. Ovisno o namjeni i samom uzorku, određenim uzorkom možemo
također izdvojiti sve znakove koji zadovoljavaju dani izraz iz ostatka znakova ili većeg teksta
(Goyvaerts, 2017).
3.4. Struktura i pohrana podataka
Zbog velikog broja primjene i propisanih standarda pisanja u ovom radu, svi ulazni i izlazni
podaci procesa Rapid Miner Studia nalaze se u CSV datotekama. CSV (engl. Comma-
Separated Values) tekstualna je datoteka za pohranu tabličnih podataka u zadanom formatu.
Datoteke ovog formata karakterizira nekolicina jednostavnih pravila koja nisu strogo
propisana, ali većina autora prati sljedeće smjernice implementacije CSV datoteke
(Shafranovich, 2005):
• Svaki red podataka koji završava oznakom za novi red (CRLF –engl. Carrige Return
Line Feed) smatra se jednom cjelinom podataka o danom entitetu
• Red koji nema oznaku za novi red smatra se zadnjim redom s podacima
• Datoteka može i ne mora uključivati naslovni red koji tumači strukturu CSV datoteke
• U svakom redu vrijednosti mogu biti odvojene zarezom (engl. Comma) ili točka
zarezom (engl. Semicolon).
16
Dvije CSV datoteke korištene u ovom radu su ulazna, koja sadrži početne linkove te izlazna s
finalnim rezultatima. Ulazna CSV datoteka „Linkovi.csv“ sadrži 12 početnih linkova na
temelju kojih su dohvaćeni ostali podaci, dok izlazna datoteka „Rezultati.csv“ sadrži rezultate
svih procesa Rapid Miner Studia. Na slici 3. i 4. prikazane su strukture svi ili dio podataka iz
obje CSV datoteke.
Slika 3. Linkovi.csv datoteka
Slika 4. Rezultati.csv datoteka
3.5. Izvor podataka
Web mjesto koje je korišteno u ovom završnom radu kao izvor podataka je stranica Stack
Overflow . Stack Overflow je web mjesto tipa pitanje-odgovor (engl. question and answer site),
a primarni cilj je spojiti korisnike koji traže odgovore s korisnicima koji mogu ponuditi
odgovor na dano pitanje. Struktura ovog web mjesta sastoji se od tri razine koje su prikazane
na grafu 1 te s kojih su prikupljeni podaci.
17
3.5.1. Struktura web mjesta
Prva razina web mjesta Stack Overflow je stranica s oznakama (engl. tag) dostupna na linku:
https://stackoverflow.com/tags . Svaka oznaka sadrži pitanja za dano područje, a klikom na
samu oznaku otvara se druga razina dostupna na linkovima koji sadrže ključne riječi
…/questions/tagged/… ?sort=frequent kao na primjer link za pitanja na temu javascript:
https://stackoverflow.com/questions/tagged/javascript?sort=frequent . Pristupom stranici
izlistana su sva često postavljena pitanja koja sadrže danu oznaku sortirana po broju glasova.
Klikom na jedno od pitanja iz ponuđene kategorije otvara se stranica koja sadrži ključne riječi
… /questions/id_pitanja/naslov_pitanja, od kojih prva predstavlja pitanja, druga ključna riječ
je ID pitanja te na kraju je naslov samog pitanja. Primjer linka za pristup zadnjoj razini strukture
izgleda poput sljedećeg: https://stackoverflow.com/questions/111102/how-do-javascript-
closures-work .
3.5.2. Struktura stranica
Podaci s prve razine strukture web mjesta Stack Overflow dostavljeni su direktno u Rapid
Miner Studio preko ulazne CSV datoteke „Linkovi.csv“. Ulazna datoteka sadrži 12 linkova
(URL poveznica) preko kojih su dohvaćeni daljnji podaci za rad, a svaki red predstavlja novi
zapis, to jest jedan link. Na slici ispod prikazan je izgled stranice s oznakama s koje je
nasumično odabrano navedenih 12 linkova.
3. razina
2. razina
1. razina
Oznaga(tag)
Pitanje (question)
Odgovor (Answer)
Odgovor (Answer)
Pitanje (question)
Odgovor (Answer)
Odgovor (Answer)
Slika 5. Hijerarhija stranice Stackoverflow
18
Slika 6. Stranica s oznakama (tagovima)
Druga razina web mjesta predstavlja stranice s pitanjima, a za prikupljanje podataka potrebna
je stranica poput: https://stackoverflow.com/questions/tagged/javascript?sort=frequent koja
sadrži sva pitanja vezana uz danu oznaku, a izgled same stranice prikazan je na slici ispod.
Slika 7. Stranica s pitanjima
Zadnja i najvažnija razina s koje dolaze skoro svi podaci za rad je stranica s pitanjem i
odgovorima. Na slici ispod prikazana je jedna od stranica s pitanjem, a pristup takvim
stranicama moguć je preko linka koji sadrži ključnu riječ …/questions/ te potom ID stranice s
pitanjem i naslov pitanja. Primjer jedne takve stranice je sljedeći:
19
https://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-
asynchronous-call, a izgled same stranice prikazan je na slici ispod.
Slika 8. Stranica s pitanjem i odgovorima
Klikom na desnu tipku miša i pregledom elemenata na stranici možemo odrediti koji su
elementi važni te s kojih dohvaćamo podatke. Pomnijim proučavanjem određeni su elementi
koji će se zapisivati i koristiti u daljnjoj obradi.
3.5.3. Prikupljeni podaci
Na svakoj od 12 stranica iz ulazne CSV datoteke prikupljat će se sljedeći atributi neovisno o
tome radi li se o pitanju ili odgovorima na pitanje:
• Poveznica (URL engl. Uniform Resource Locator) – link ili poveznica pomoću koje
možemo pristupiti jedinstveno identificiranom podatku (u ovom slučaju pitanju ili
odgovoru na pitanje). Ova vrijednost prikuplja se automatski pomoću potprocesa
Process Documents From Web.
• ID pitanja - jedinstveni identifikator pitanja, to jest same stranice na kojoj se nalazi
pitanje i odgovori na dano pitanje. ID pitanja dobiven je preko regularnog izraza
(https:\/\/stackoverflow.com\/questions\/(\d+)\/.+) iz samog URL-a stranice te svaki red
u CSV datoteci „Rezultati.csv“ sadrži ID pitanja kako bismo sadržaj pitanja i sadržaj
odgovora mogli povezati sa stranicom.
• Vrsta – ovisno o tome radi li se o odgovoru ili pitanju stupac će sadržavati oznaku
(pitanje/odgovor), a podatke o tome prikuplja sam RapidMiner preko potprocesa
Dohvati pitanje i Dohvati odgovor koji su opisani kasnije.
20
• ID sadržaja – jedinstveni identifikator sadržaja odnosno pitanja i odgovora na danoj
stranici. ID sadržaja pitanja dohvaćen je iz div oznake s ID atributom question, dok ID-
u odgovora možemo pristupiti preko oznake div s klasom answer. Atributi koji sadrže
navedene podatke su data-questionid i dana-answerid te su vidljivi na slikama 9 i 10.
Slika 9. Meta podaci o pitanju
Slika 10. Meta podaci o komentaru
• Naslov – naslov pitanja dohvaća se iz div oznake na slici dolje, dok naslovi odgovora
nisu zadani već korisnik može koristeći oznaku h1 zadati samostalno naslov.
Slika 11. Naslov pitanja
Slika 12. Naslov odgovora
• Sadržaj – sadržaj pitanja ili odgovora nalazi se na različitim lokacijama te će pristup
samom sadržaju biti drugačiji za svaku vrstu podataka, no zajednička im je oznaka i
atribut oznake. Pomoću oznake div s klasom post-text možemo pristupiti sadržaju
pitanja i odgovora.
Slika 13.Sadržaj pitanja ili dogovora
• ID autora – sadrži jedinstveni identifikacijski broj korisnika, a direktno se ne može
doći do ID-a korisnika. Pomoću a oznake učahurene unutar div oznake možemo doći
do linka preko kojeg se pristupa stranici korisnika, a u tom linku nalazi se i ID korisnika
koji ćemo potom očistiti i izvući iz linka.
• Autor – sadrži podatke o korisniku koji je objavio komentar ili pitanje. Podacima o
autoru možemo pristupiti direktno unutar oznake a učahurene unutar div oznake.
Slika 14. ID i ime autora
21
• Datum vrijeme objave – datum i vrijeme objave pitanja ili odgovora zadan je na
stranici odmah ispod sadržaja uz podatke o autoru objavljenog sadržaja.
Slika 15. Datum i vrijeme objave na stranici
• Oznake (engl. tagovi) – predstavljaju oznake koje je korisnik dodijelio pitanju.
Slika 16. Korisničke oznake na pitanju
• Glasovi – na stranici je moguće pitanju ili odgovoru dati pozitivan ili negativan glas.
Svaki glas nosi jedan bod te bodovno stanje može otići u plus ili minus.
Slika 17. Glasovi na pitanju ili odgovor
Svi podaci prikupljaju se pomoću prethodno opisanog alata Rapid Miner Studia, a pohranjeni
su u CSV datoteku. Na kraju izvođenja procesa alat prezentira sve u obliku tablice prikazane
na sljedećoj slici. Na slici 17 redom su vidljivi svi navedeni atributi u stupcima s
pripadajućim vrijednostima, a podaci koji nisu pronađeni, to jest ne nalaze se na stranici,
označeni su ? (upitnikom) radi prezentacije.
Slika 18. Rezultati Rapid Miner procesa
22
3.6. Prikupljanje podataka
Kako bismo iz prethodno prezentirane strukture dobili podatke za daljnju obradu u alatu Rapid
Miner Studio moramo kreirati proces koji će kao ulazni parametar imati „Linkovi.csv“ datoteku
te kao izlazni parametar podatke spremne za daljnji rad u obliku datoteke „Rezultati.csv“. Svaki
proces sastoji se od operatora koji mogu, ali i ne moraju, imati ulazni tok podataka (text, URL,
web stranice…). U samom procesu postoje dvije vrste operatora:
• obični operatori nedjeljivi su operatori koji imaju zadanu funkcionalnost, ali parametre
koje korisnik može prilagoditi svojim potrebama
• potprocesi (engl. subprocess) su kompleksni operatori koji se sastoje od više običnih
operatora. Svaki potproces jedinstven je samim time što ga korisnik sastavlja po svojim
potrebama i funkcionalnostima koje mu trebaju u radu.
Glavni proces koji se koristi u ovom radu prikazan je na slici 15, a rađen je prema Schatten,
Ševa, i Okreša Đurić (2015).
Slika 19. Glavni proces u radu
Prikazani proces sastoji se od četiri operatora i dva potprocesa, a sva imena dana su radi lakšeg
razumijevanja. Redom prikazani dijelovi procesa su:
3.6.1. Ucitaj CSV (operator tipa Read CSV)
Početni operator koji kao ulazni parametar ima CSV datoteku s 12 linkova. U prijašnjim
poglavljima objašnjeno je što je CSV datoteka i kojih 12 linkova se nalazi u njoj stoga je za
ovaj operator dovoljno reći da uz pomoć Import Configuration Wizard-a učitamo dani CSV.
Dodatne postavke nisu potrebne za dani operator.
3.6.2. Dohvati podatke (potproces tipa Loop Values)
Glavni je potproces kreiran prema Schatten, Ševa i Okreša Đurić (2015) uz vlastite postavke
parametara te čini srž ovog praktičnog dijela rada. U jednoj rečenici objašnjeno, ovaj potproces
iterira kroz vrijednosti, to jest dobivene linkove prethodnog operatora te nad njima provodi
operacije dohvaćanja podataka.
23
Slika 20. Parametri potprocesa Dohvati podatke
Navedeni potproces Dohvati podatke ima dva parametra koji su potrebni za njegovo odvijanje.
Oba parametra prikazana su na slici 18, a pojašnjena u daljnjem tekstu:
• Atribut (engl. attribute) – na temelju ulaznog parametra koji može imati više atributa u
ovom parametru možemo odabrati koji atribut će se koristiti u iteracijama i dalje
obrađivati unutar samog potprocesa.
• Macro – najvažniji parametar ovog potprocesa zato što omogućava pristup
vrijednostima trenutne iteracije preko jedne varijable. Pomoću macro varijable u našem
slučaju imena trenutni_link pristupat ćemo trenutnom linku unutar samog potprocesa
Dohvati podatke te će svi operatori korištenjem %{trenutni_link} moći pristupiti
vrijednosti.
3.6.2.1.Obradi ulazni link
Slika 21. Detaljni pregled potprocesa Dohvati podatke
Potproces Obradi ulazni link tipa je Process Documents From Web i kreiran je prema Schatten,
Ševa i Okreša Đurić (2015) uz vlastite postavke parametara i podataka koji se dohvaćaju.
24
Slika 22. Parametri potprocesa Obradi ulazni link
Obradi ulazni link na temelju prije spomenute macro vrijednosti (atribut url na slici 21)
dohvaća vrijednost trenutne iteracije te na temelju njega pristupa web stranici. Pravila
dohvaćanja stranica (engl. crawling rules) kojim linkovima ovaj potproces pristupa na danoj
web stranici te dohvaća određene stranice koje zadovoljavaju uvjete zadane prije spomenutim
regularnim izrazima. Od ostalih atributa parametara valja napomenuti da max page size
označava koliko će web stranica biti obrađeno, a postavljeno je 240 stranica što označava broj
stranica koji će biti preuzet i obrađen unutar potprocesa. Ostali parametri postavljeni su
unaprijed u alatu, ali serveri web mjesta Stackoverflow imaju zadan broj stranica kojima
korisnik može pristupiti u zadanom vremenu. Iz razloga što je zadan maksimalni broj pristup
u određenom vremenu, odgoda pristupa (engl. delay) postavljena je na 1000ms (1s) kako server
ne bi zabranio daljnja pristupanja. Ostali parametri označavaju najveću moguću veličinu
stranice (engl. max page size), broj veza po posužitelju te broj konkurentnih veza (engl. max
25
concurrent connections i engl. max connections per host). Zadnji parametar ime je agenta koji
je također postavljen unaprijed.
Primjena regularnih izraza vidljiva je u parametrima pravila dohvaćanja stranica koji dobiveni
link uspoređuju sa zadanim izrazima te ovisno o zadovoljenju uzorka i zadano akciji Rapid
Miner Studio sadrži tri načina primjene pravila:
• store_with_matching_url – na temelju regularnog izraza operator sve linkove koji
zadovoljavaju izraz pohranjuje za daljnju uporabu.
• store_with_matching_content – na temelju sadržaja regularnog izraza sadržaj s
pristupljenog linka testira se i ukoliko je zadovoljio, uzorak stranica se pohranjuje.
• follow_link_with_matching_url – na temelju regularnog izraza operator pristupa
linkovima koji zadovoljavaju izraz.
Pravila koja su potrebna za prikupljanje podataka u ovom završnom radu su
follow_link_with_matching_url i store_with_matching_url. Pravilo follow_link postavljeno je
da prati sve stranice koje sadrže u sebi riječ „stackoverflow“, dok stranice koje želimo obraditi
(store_with_matching_url) imaju zadan zaseban format koji uz riječ „stackoverflow“ mora
sadržavati i „questions“ te ID pitanja. Obradi ulazni link dohvaća 240 web stranica zato što je
12 linkova u početnom CSV-u i po 10 pitanja za svaki link. Radi lakšeg razumijevanja u
nastavku ovog teksta nalaze se kratka objašnjenja za pojedine elemente regularnih izraza:
• Operator . (točka) označava pojavljivanje bilo kojeg simbola osim simbola za novi red
(Goyvaerts, 2017)
• Operatori poput +, ? i * su kvantifikatori (engl. Quantifier) te označavaju broj
pojavljivanja znaka s njihove lijeve strane. Operator + označava da se znak pojavljuje
jednom ili više, ? jednom ili nijednom te * nula ili više puta (Goyvaerts, 2017)
• Operator \ (engl. backslash) operator je koji jedan znak sa svoje desne strane tumači
drugačije nego što bi on inače bio tumačen. U sljedećim primjerima korišten je na
primjer kod slova d u sredini i pri kraju izraza. Slovo d bez operatora \ bilo bi obično
d, ali u kombinaciji (\d) označava da se na navedenom mjestu mora nalaziti broj, a uz
sve to još je nakon toga operator + što sve skupa čini \d+ i označava da se na tom
mjestu mora nalaziti barem jedan ili više brojeva. Drugi primjer za ovaj operator je sa
? koji je, kao što je prije rečeno, kvantifikator, ali uz \ označava običan simbol upitnika.
(Goyvaerts, 2017)
26
Slika 23. Regularni izrazi za pravila dohvaćanja stranica
Potproces Obradi ulazni link u sebi sadrži još dva operatora i dva potprocesa prikazanih na
sljedećoj slici.
Slika 24. Unutrašnjost potprocesa Obradi ulazni link
Operator ID pitanja tipa je Extract Information čija je funkcionalnost na temelju zadanog
izraza dohvatiti podatke. U ovom slučaju postavke tipa upita (engl. query type) postavljene su
na regularne izraze te pomoću izraza https:\/\/stackoverflow.com\/questions\/(\d+)\/.+ i grupe
unutar zagrada dohvaćamo ID pitanja odnosno ID stranice s pitanjem.
Sljedeći operator je operator Racvanje odnosno Multiply koji nema posebnu namjenu već
grana tok kako bi se sljedeća dva potprocesa mogla istovremeno odviti.
Potprocesi Dohvati pitanje i Dohvati odgovori tipa su Cut Document što iz samog naziva
možemo zaključiti da izrezuje dio dokumenta. Razlika ovih potprocesa je ta što imaju
različite uvjete pomoću kojih su određene granice dokumenta (web stranice) koji su potrebni.
Dohvati pitanje pod parametrom tip upita im zadan Regular Region što je ustvari regularni
izraz s početnim i završnim uvjetom. Svi podaci odnosno dio dokumenta koji se nalazi
između početnog i završnog izraza uzima se te potom obrađuje unutar potprocesa. Na temelju
strukture stranice, dio dokumenta koji sadrži sve podatke o pitanju nalazi se između početne
<div class="inner-content"> oznake te završne početka oznake pitanja <div id="answers">.
Dohvati odgovor kao tip upita pomoću kojeg određuje dio dokumenta ima postavljen XPath
te uvjet //h:div[contains(concat(' ', @class, ' '), ' answer ')] koji u dokumentu na bilo kojoj
poziciji traži div koji sadrži u atributu klase riječ answer.
27
Na slikama 25 i 26 prikazani su svi XPath izrazi korišteni za dohvaćanje podataka s web
stranica. Za XPath nudi veliki broj mogućnosti i izraza kao i RegEx, ali za razumijevanje
predočenih opisani su samo korišteni znakovi i operatori:
• Operator h koristi se unutar parametara operatora Rapid Miner Studia kako bi se
naznačilo da se XPath koristi za HTML dokument, a ne inicijalno zamišljeni XML.
(Schatten, Ševa i Okreša Đurić, 2015)
• Operator // (dvostruka kosa crta) označava se sljedeći element (s desna) može nalaziti
na bilo kojoj poziciji u dokumentu. Preciznije rečeno zadana je relativna putanja
određene oznake. (Robie i ostali, 2014)
• Operatori [] (uglate zagrade) koriste se za pisanje uvjeta unutar izraza. Na prethodnoj
slici ovi operatori koriste se kad je potrebno naći oznaku koja sadrži određeni atribut
ili atribut s određenom vrijednošću, a može i sadržavati redni broj oznake ukoliko je
više istih. (Robie i ostali, 2014)
• Znak @ (et) skraćeni je zapis attribute:: odnosno označava atribut oznake. (Robie i
ostali, 2014) Na slikama iznad vidi se da je ovaj atribut korišten unutar prije
spomenutih uglatih zagrada u smislu uvjeta te prilikom dohvaćanja ID-a sadržaja
operator @ korišten je za direktno pristupanje vrijednosti atributa.
• Funkcija text() nalazi se na kraju putanje te vraća sadržaj koji se nalazi unutar oznaka
do kojih vodi ta putanja. (Robie i ostali, 2014)
• Funkcija concat() razdvaja string po zadanim parametrima. (Robie i ostali, 2014) Na
slikama iznad ova funkcija nalazi se kod pronalaska broja glasova za pitanja i
odgovore, a njezin je posao sve vrijednosti atributa klase odjeliti po razmaku.
• Funkcija contains() koristi se za provjeru postoji li u stringu određeni skup znakova.
(Robie i ostali, 2014) Primjer funkcija nalazi se na slikama iznad kod pronalaska
podataka o glasovima, a na temelju rezultata funkcije concat() provjerava sadrži li
ijedan riječ vote-count-post.
• Funkcija last() pronalazi zadnji čvor u nizu. (Robie i ostali, 2014) Navedena funkcija
koristi se prilikom dohvaćanja podataka o autoru sadržaja. Podaci o autoru koji je
uredio sadržaja nalaze se tik do podataka o autoru samog pitanja stoga prilikom
dohvaćanja autora pitanja morat ćemo dohvatiti zadnjeg u nizu navedenih autora
sadržaja. Uz mogućnost dva može postojati i sadržaj koji je kreiran od strane
zajednice (engl. Community Wiki) koji unutar div oznake o detaljima autora sadrži
dvije a oznake, od kojih ona zadnja u nizu je relevantna.
28
Slika 25. Postavke operatora XPath izrazi – pitanje
Slika 26. Postavke operatora XPath izrazi – odgovor
29
3.6.3. Spoji podatke (operator tipa Append)
Operator koji na kraju svake iteracije prethodnog potprocesa prikuplja podatke te ih dodaje „na
kraj“. Potprocesi tipa Loop Values u svakoj iteraciji kreira ExampleSet koji sadrži podatke
trenutne operacije, a operator tipa Append prikuplja sve ExampleSet-ove te ih spaja u jedan
spojeni ExampleSet.
3.6.4. Ocisti podatke (potproces tipa Subprocess)
Sam po sebi ovaj operator, točnije potproces nema neki veliki značaj. Potproces tipa
Subprocess operator je koji objedinjuje više operatora u jedan radi lakšeg rada i preglednosti.
U ovom slučaju ovaj potproces na temelju podataka dobivenih od prethodnog operatora čisti
podatke od nepotrebnih znakova i oznaka radi lakšeg rada i razumijevanja.
Slika 27. Operatori unutar potprocesa Ocisti podatke
Na slici iznad nalaze se operatori unutar potprocesa Ocisti podatke, svi operatori su tipa
Replace, osim zadnjeg koji je tipa Remove Duplicates. Posljednji operator niza operator je koji
ne zahtjeva posebne postavke jer ima jedan zadatak, a to je ukloniti zapise koji se ponavljaju.
Preostali operatori zamjenjuju skup znakova koji zadovoljava RegEx izraz danim novim
znakovima, a u ovom slučaju prazninom zato što želimo ukloniti nepotrebne znakove. Operator
Ukloni HTML oznake jedni radni na razini svih podataka te na temelju izraza
“|«|"|”|»|''|„|<[^>]*> uklanja sve HTML oznake. Preostali operatori tipa Replace rade svaki na
jednom zadanom stupcu, a oni su sljedeći:
• Ukloni praznine u sadrzaju pomoću izraza ^, |, $|\s{2,}|^\s uklanja sve praznine i nove
redove u sadržaju
• Ukloni delimitere u sadrzaju kao što i samo ime kaže uklanja sve delimitere (;) kako ne
bi nastala pomutnja unutar CSV datoteke.
• Ukloni praznine u oznakama uklanja sve praznine i nove redove u stupcu oznaka
pomoću izraza $|\s{2,}|^\s|\n te ih zamjenjuje s 4 prazna mjesta
• Posljednji operator imena Ocisti datum community sadrzaja korigira stupac datuma.
Ukoliko je neki sadržaj postavljen kao community content on nema podatke o autoru,
30
a datum je u drugačijem formatu stoga je potrebno izdvojiti datum iz teksta koji je
dohvaćen u stupcu.
3.6.5. Pohrani u CSV (operator tipa Write CSV)
Zadnji operator u nizu zaprima podatke spremne za rad te ih pohranjuje u CSV datoteku imena
„Rezultati.csv“.
31
4. Zaključak
U završnom radu opisano je web rudarenje te prezentirano kroz implementaciju agenta za
rudarenje web mjestom Stackoverflow. Prilikom pisanja rada, točnije izrade praktičnog dijela,
uvidio sam mnoge prednosti agenata za web rudarenje, ali i alata RapidMiner.
Pomoću vrlo dobro postavljenog agenta lagano se dolazi do traženih podataka, ali potrebna su
opsežna promatranja i proučavanja same strukture web mjesta i web stranica koje se dohvaćaju.
Same pripreme i izrada agenta za web rudarenje tekla je koracima koje navode i autori Costa,
M.G. i Gong (2005) te Dinuca (2010) u svojim djelima i to je sve započelo pronalaskom
resursa, odnosno web stranica s kojih će podaci biti prikupljeni. Sljedeći korak u izradi pred-
procesiranje i odabir informacija što uključuje prije spomenuto proučavanje strukture i točnih
informacija i podataka koje želimo dobiti s web stranice. Samim time što želimo da agent radi
na svim web stranicama web mjesta sljedeći korak bio je generalizacija što je uključilo
prilagođavanje operatora i potprocesa te puno pokušaja pokretanja i odgonetanja novih
struktura na web stranici. Završni korak je analiza koja se provodi na dobivenim podacima. U
radu u potpoglavlju o CSV-u prikazani su rezultati unutar alata RapidMiner kao i u samoj CSV
datoteci. CSV datoteka korištena je iz razloga što može pohraniti velike količine tabličnih
podataka koristeći delimiter za stupce i novi red za svaki red podataka što uvelike olakšava
spremanje, ali i danas većina programa omogućava učitavanje CSV datoteka i rad s njima.
Na temelju prikupljenih podataka nije moguć veliki broj analiza jer atributi koji su prikupljeni
sadrže podaci o pitanjima i odgovorima na ista. Na temelju glasova pitanja i odgovora moguće
je raditi analize, predviđanja i određivati koja oznaka na Stackoverflow web mjestu je
najpopularnija te ostala rangiranja. Uz glasove, analizama su podložni i atributi poput broja
oznaka pomoću kojih možemo odrediti kojem pitanju je najlakše pritupiti jer ima najviše
oznaka, a zadnja analiza je ona koja može rangirati pitanja po broju odgovora i to je moguće
zato što svaki red podataka sadrži ID pitanja (web stranice) s koje su prodaci preuzeti, dok
također svaki red ima i ID sadržaja, samim time odgovore možemo povezati s pitanjem preko
spomenutih ID-eva te dobiti brojke i odnose za rad.
Literatura
[1] Beal, V. (2016) The Difference Between the Internet and World Wide Web. Dostupno na:
http://www.webopedia.com/DidYouKnow/Internet/Web_vs_Internet.asp (Pristupljeno: 04.
svibanj 2017.).
[2] Cooley, R., Mobasher, B. i Srivastava, J. (1997) „Web mining: information and pattern
discovery on the World Wide Web“, IEEE International Conference on Tools with
Artificial Intelligence, (DECEMBER 1997), str. 558–567. doi: 10.1109/TAI.1997.632303.
[3] Costa, M.G., J. Da i Gong, Z. G. Z. (2005) „Web structure mining: an introduction“, 2005
IEEE International Conference on Information Acquisition, str. 590–595. doi:
10.1109/ICIA.2005.1635156.
[4] Dinuca, C. E. (2010) „Web structure mining“, Studies in Computational Intelligence,
311(4), str. 113–142. doi: 10.1007/978-3-642-14461-5_5.
[5] G2 Crowd (2017) G2 Crowd Rapid Miner Reviews. Dostupno na:
https://www.g2crowd.com/products/rapidminer-studio/reviews (Pristupljeno: 26. srpanj
2017.).
[6] Getoor, L. (2003) „Link mining: a new data mining challenge“, ACM SIGKDD
Explorations Newsletter, 5(1), str. 84–89. doi: 10.1145/959242.959253.
[7] Goyvaerts, J. (2017) Regular Expressions Tutorial. Dostupno na: http://www.regular-
expressions.info/tutorial.html (Pristupljeno: 31. srpanj 2017.).
[8] Inamdar, S. A. i Shinde, G. N. (2008) „An Agent Based Intelligent Search Engine System
For Web Mining“, Search, str. 1062–1065.
[9] Johnson, F. i Kumar Gupta, S. (2012) „Web Content Mining Techniques: A Survey“,
International Journal of Computer Applications, 47(11), str. 44–50. doi: 10.5120/7236-
0266.
[10] Kurose, J. F. i Ross, K. W. (2013) „Computer Networking A Top-Down Approach“,
Pearson, str. 889. doi: 10.1017/CBO9781107415324.004.
[11] Lee, T.-B. (1989) Information Management: A Proposal. Dostupno na:
https://www.w3.org/History/1989/proposal.html (Pristupljeno: 01. siječanj 2017.).
[12] Liu, B. i Chang, K. C.-C. (2004) „Editorial: Special Issue on Web Content Mining“,
ACM SiIGKDD Explorations Newsletters, 6(2), str. 1–4. doi: 10.1145/1046456.1046457.
[13] Masseglia, F., Teisseire, M. i Poncelet, P. (2005) „Sequential Pattern Mining“,
Encyclopedia of Data Warehousing and Mining, str. 1028–1032. doi:
10.1002/pmic.200700657.
[14] Naik, U. i Shivalingaiah, D. (2014) „Comparative Study of Web 1.0 , Web 2.0 and
Web 3.0“, 1(August), str. 13. doi: 10.13140/2.1.2287.2961.
[15] RapidMiner (2017) Rapid Miner Studio. Dostupno na:
https://rapidminer.com/products/studio/ (Pristupljeno: 26. srpanj 2017.).
[16] Robie, J. i ostali (2014) XML Path Language (XPath) 3.0, W3C. Dostupno na:
https://www.w3.org/TR/xpath-30/ (Pristupljeno: 01. siječanj 2017.).
[17] Schatten, M., Ševa, J. i Okreša Đurić, B. (2015) „Big Data Analytics and the Social
Web - A Tutorial for the Social Scientist“, str. 42.
[18] Shafranovich, Y. (2005) Common Format and MIME Type for Comma-Separated
Values (CSV) Files. Dostupno na: https://tools.ietf.org/html/rfc4180#page-2 (Pristupljeno:
30. srpanj 2017.).
[19] Srivastava, J. i ostali (2016) „Web Usage Mining : Discovery and Applications of
Usage Patterns from Web Data . Web Usage Mining : Discovery and Applications of
Usage Patterns from Web Data“, (JANUARY 2000).
[20] Technopedia (2017) Web Mining. Dostupno na:
https://www.techopedia.com/definition/15634/web-mining (Pristupljeno: 04. svibanj
2017.).
[21] XML Objective (2013) What is the difference between XML and HTML? Dostupno
na: http://www.xmlobjective.com/what-is-the-difference-between-xml-and-html/
(Pristupljeno: 01. siječanj 2017.).
Popis slika
Slika 1. Osnovni primjer HTML jezika ..................................................................................... 2
Slika 2. Primjer korištenja HTTP protokola (preuzeto s:
https://www.tutorialspoint.com/http/http_message_examples.htm) .......................................... 2
Slika 3. Linkovi.csv datoteka ................................................................................................... 16
Slika 4. Rezultati.csv datoteka ................................................................................................. 16
Slika 5. Hijerarhija stranice Stackoverflow ............................................................................. 17
Slika 6. Stranica s oznakama (tagovima) ................................................................................. 18
Slika 7. Stranica s pitanjima..................................................................................................... 18
Slika 8. Stranica s pitanjem i odgovorima ............................................................................... 19
Slika 9. Meta podaci o pitanju ................................................................................................. 20
Slika 10. Meta podaci o komentaru ......................................................................................... 20
Slika 11. Naslov pitanja ........................................................................................................... 20
Slika 12. Naslov odgovora ....................................................................................................... 20
Slika 13.Sadržaj pitanja ili dogovora ....................................................................................... 20
Slika 14. ID i ime autora .......................................................................................................... 20
Slika 15. Datum i vrijeme objave na stranici ........................................................................... 21
Slika 16. Korisničke oznake na pitanju.................................................................................... 21
Slika 17. Glasovi na pitanju ili odgovor .................................................................................. 21
Slika 18. Rezultati Rapid Miner procesa ................................................................................. 21
Slika 19. Glavni proces u radu ................................................................................................. 22
Slika 20. Parametri potprocesa Dohvati podatke ..................................................................... 23
Slika 21. Detaljni pregled potprocesa Dohvati podatke........................................................... 23
Slika 22. Parametri potprocesa Obradi ulazni link .................................................................. 24
Slika 23. Regularni izrazi za pravila dohvaćanja stranica ....................................................... 26
Slika 24. Unutrašnjost potprocesa Obradi ulazni link ............................................................. 26
Slika 25. Postavke operatora XPath izrazi – pitanje ................................................................ 28
Slika 26. Postavke operatora XPath izrazi – odgovor.............................................................. 28
Slika 27. Operatori unutar potprocesa Ocisti podatke ............................................................. 29