Upload
dragan-volkov
View
72
Download
9
Embed Size (px)
DESCRIPTION
fb
Citation preview
SVEUČILIŠTE U ZAGREBU
FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA
ZAVRŠNI RAD br. 2404
RANGIRANJE PRIJATELJA U
DRUŠTVENOJ MREŽI FACEBOOK
ZASNOVANO NA KORISNIČKIM
PROFILIMA
Vanda Viljanac
Zagreb, lipanj 2012.
Sadržaj
Uvod ...................................................................................................................................... 1
1. Sustavi za preporučivanje .............................................................................................. 2
1.1. Preporučivanje zasnovano na suradnji .................................................................. 3
1.2. Preporučivanje zasnovano na sličnosti .................................................................. 4
1.3. Hibridno preporučivanje ........................................................................................ 5
1.4. Primjeri preporučiteljskih sustava ......................................................................... 6
1.4.1. Amazon .......................................................................................................... 6
1.4.2. Google ........................................................................................................... 7
2. Preporučivanje u društvenim mrežama ......................................................................... 9
2.1. Preporučivanje u društvenoj mreži Facebook ..................................................... 10
2.2. Rangiranje u društvenoj mreži Facebook kao oblik preporučivanja ................... 11
3. Model sustava Rangiranje prijatelja i algoritam za izračun ....................................... 13
3.1. Model sustava Rangiranje prijatelja ................................................................... 13
3.2. Algoritam pridjeljivanja težina ............................................................................ 14
3.3. Baza podataka korisnikovih prijatelja ................................................................. 16
3.4. Arhitektura aplikacije za statičko rangiranje prijatelja ........................................ 18
4. Programska izvedba aplikacije za statičko rangiranje prijatelja .................................. 19
4.1. Programski jezik PHP .......................................................................................... 22
4.2. Baza podataka MySQL ........................................................................................ 23
5. Scenarij korištenja aplikacije za statičko rangiranje prijatelja .................................... 24
Zaključak ............................................................................................................................. 27
Literatura ............................................................................................................................. 28
Sažetak ................................................................................................................................. 29
Summary .............................................................................................................................. 30
Skraćenice ............................................................................................................................ 31
1
Uvod
Razvojem Interneta i popularizacijom društvenih mreža virtualna prijateljstva dobivaju na
važnosti. Danas, samo jednim klikom miša stvaramo novo poznanstvo pa prolaskom
vremena postajemo povezani s preko nekoliko stotina ljudi. U ovom moru internetskih
prijateljstava teško je pratiti tko nam je sličan, s kim bismo se mogli slagati, te s kim
dijelimo zajedničke interese. Jedno od mogućih rješenja ovog problema predstavljeno je u
ovom završnom radu razvojem programske potpore koja preporučuje prijatelje.
Preporučiteljski sustavi već su uobičajena pojava na internetskim stranicama te obuhvaćaju
mnogo područja i načina preporučivanja. Njihova zadaća jest pronalaženje odgovarajućih
podataka u mreži na temelju korisnikovih preferencija. Grana preporučivanja koja je u
području interesa ovog rada jest rangiranje. Po prvi puta susrećemo se sa sustavom koji
preporučuje osobe umjesto predmeta, glazbe ili filmova. Ovakav sustav radi na principu
društvenog grafa čiji je korijen korisnik, a grane predstavljaju prijateljstvo i posjeduju
određene težine. Rangiranje prijatelja i dodjeljivanje težinskih karakteristika obavlja se na
temelju statičkih podataka na njihovim profilima. Pod pojmom statički podatci
podrazumijevamo informacije na korisničkom profilu koje se ne mijenjaju, ili se vrlo
rijetko mijenjaju kao što su primjerice najdraže knjige, filmovi, mjesto stanovanja ili
brandovi.
U prvom poglavlju objašnjen je pojam preporučiteljskog sustava i način na koji
funkcionira, te su predstavljeni najpoznatiji primjeri. U drugom poglavlju opisano je
rangiranje kao podvrsta preporučivanja te je napravljen osvrt na rangiranje u Facebook
mreži. U trećem poglavlju razrađen je algoritam za pridjeljivanje težina kao i izgled
društvenog grafa. Pridodani su nacrti i opisana je baza podataka. U četvrtom poglavlju
objašnjena je programska izvedba u jeziku PHP (Hypertext Preprocesor), dani su ključni
dijelovi koda kako bi se pojasnila osnovna struktura programa. U petom poglavlju dan je
primjer mogućeg scenarija upotrebe te su priložene slike s ekrana dok je aplikacija u
izvedbi.
2
1. Sustavi za preporučivanje
Najvažnija zadaća preporučitelja je pomoć korisniku pri odabiru. Korisnici su često
suočeni s nepregledno velikom ponudom koja ih zastrašuje, zbunjuje i čini nepovjerljivima
dok su prodavači suočeni s problemom marketinga i prezentacije velikog broja proizvoda.
Pošto je u ljudskom procesu donošenja odluka kritična komponenta upravo primanje
savjeta od pouzdanog izvora osmišljeni su sustavi za preporučivanje koji olakšavaju posao
kupcima i prodavačima.
Kada se opisana situacija primjeni na Internet možemo reći da je osnovna zadaća sustava
za preporučivanje specifična tehnika filtriranja informacija sa svrhom pronalaska i
prezentacije informacijskog predmeta (knjige, glazba, filmovi, slike, itd.) koji bi mogao
zanimati korisnika. Dakle, preporučiteljski sustav sugerira korisniku koje stavke još nije
koristio, a mogle bi biti od njegova interesa i trebao bi ih pregledati. Ukoliko preporučitelj
uistinu pruži korisne informacije kupac stvara povjerenje prema sustavu i ostaje njegov
vjeran korisnik.
Preporučiteljski sustavi razlikuju se u načinu na koji analiziraju informacije, a poznajemo
tri osnovna načina [1] :
Preporučivanje zasnovano na suradnji (engl. collaborative recommendation) –
preporučuje predmete na temelju korisnikovog prošlog ponašanja ;
Preporučivanje zasnovano na sadržaju (engl. content-based recommendation) –
preporučuje na temelju sličnih predmeta;
Hibridno preporučivanje (engl. hybrid recommendation) – kombinacija prethodno
navedenih stilova.
3
1.1. Preporučivanje zasnovano na suradnji
Sustav za preporučivanje zasnovan na suradnji sakuplja povratne informacije korisnika
koji ocjenjuje objekte, povezuje korisnike kojima se manifestiraju sličnosti u ocjenjivanju
te iskorištava te informacije pri preporučivanju predmeta [2]. Ovakvo preporučivanje
naziva se još i personalizirano preporučivanje. Ukratko, korisnicima se preporučuju
predmeti koji su odgovarali korisnicima koji su im bili slični. Ako je na primjer osoba A
imala isto mišljenje kao osoba B o nekom predmetu, onda je veća vjerojatnost da će osoba
A imati isto mišljenje kao i osoba B o nekom drugom predmetu [3]. Personalizirano
preporučivanje koristi algoritam koji računa sličnost između dva korisnika, i stvara
predviđanje uzimajući prosjek svih ocjena. Taj algoritam je definiran izrazom (1) :
ieIieI
yiyxix
ieI yiyxix
rrrr
rrrryxsim
2
,
2
,
,,
)()(
))((),( ,
(1)
gdje je Ixy set predmeta koji su ocijenili korisnik X i Y.
Kada su se prethodno navedena predviđanja primijenila na milijune ljudi rezultati nisu bili
dobri zbog složenosti algoritma za potragu sličnih korisnika i preduguog vremena izvedbe.
Kao alternativa smišljena je metoda podatkovnog filtriranja podataka (engl. Item based
collaborative filtering) koja umjesto traženja sličnih korisnika traži predmet B koji je
sličan predmetu A, a ocijenili su ga dobrim korisnici koji su ocijenili i predmet A i predmet
B.
Dvije osnovne kategorije sustava za personalizirano preporučivanje su:
Sustavi zasnovani na memoriji – ovakav mehanizam koristio se u početcima
preporučiteljskih sustava, jednostavan je za implementaciju i vrlo efektivan. Koristi
memoriju tj. bazu podataka iz koje statičkim funkcijama izračunava k najsličnijih
korisnika iz čijih se zapisa aktivnom korisniku preporučuju predmeti;
Sustavi zasnovani na modelu – ovakav mehanizam izgrađuje model na temelju
korisnikovih prethodnih radnji koji analizira predmete te predviđa mogućnost
sviđanja tog predmeta korisniku.
4
1.2. Preporučivanje zasnovano na sličnosti
Metode ovakvog preporučivanja zasnovane su na opisu i karakteristikama predmeta te na
profilu korisnikovih interesa pa ih ne zanimaju druge specifikacije o korisniku [2]. Drugim
riječima, algoritmi preporučivanja zasnovanog na sličnosti preporučuju predmete koji su
slični onima koji su se sviđali korisniku u prošlosti. Sustav kreira profil korisnika
(engl. content-based profile) koji se sastoji od modela korisnikovih preferencija i od
korisnikovih prošlih radnji. Model korisnikovih preferencija predstavlja korisnikove
interese i izračunava se iz njegovih prošlih radnji pod koje spadaju ocjenjivanje predmeta
ili pregledavanje predmeta. Reprezentacija predmeta jest uglavnom tekstualni opis
predmeta koji nazivamo njegovim meta podatkom i može se prikazati vektorom (2) :
, (2)
gdje je wt,d težina neke karakteristike t u dokumentu d. Nakon što su definirane dvije
najvažnije stavke profil predmeta i profil korisnika, metoda kojom se izračunavaju
najsličniji predmeti naziva se metoda najbližeg susjeda. Prilagodljiva je za strukturirane i
za nestrukturirane podatke jer ih sprema u memoriju iz koje kasnije uzima potrebne
informacije. Kada klasificira novi predmet metoda ga usporedi sa svim predmetima iz
memorije koristeći funkciju sličnosti i odredi mu k ''najbližih susjeda''. Numerička
vrijednost novog predmeta izvedena je iz pronađenih najbližih susjeda. Sličnost između
dva predmeta izračunava se kosinusnom kuta između njihovih vektora kako prikazuje izraz
(3) :
(3)
Usprkos jednostavnosti algoritma njegova se performansa pokazala konkurentnom s
performansama mnogo kompleksnijih algoritama.
TdNddd www ,,2,1 ,,, v
21
21
vv
vv cos
5
1.3. Hibridno preporučivanje
Svi prethodno opisani algoritmi djelotvorni su samo u određenim okolnostima i imaju
poteškoće pri prepoznavanju suptilnosti u sadržaju. Iz ovog razloga razvijeni su hibridni
sustavi za preporučivanje koji su kombinacija preporučivanja zasnovanog na sadržaju i
preporučivanja zasnovanog na suradnji te nadomještaju njihove nedostatke [4]. Oni
analiziraju podatke na temelju usporedbe sličnosti predmeta koje je korisnik u prošlosti
pregledavao i ocjenjivao te na temelju akcija sličnih korisnika. Postoje razne kombinacije
hibridnog preporučivanja, a ovdje će biti predstavljene najkorištenije (Tablica 1.1).
Tablica 1.1 Metode hibridnog preporučivanja
Metoda Opis
Težinska
Ocijene različitih tehnika preporučivanja
kombiniraju se zajedno kako bi se dobila
jedinstvena preporuka.
Izmjenična Sistem izmjenjuje metode preporučivanja
ovisno o trenutnoj situaciji
Miješana Nekoliko tehnika preporučivanja prisutno je
u isto vrijeme.
Kombinacija obilježja Obilježja različitih preporučiteljskih sustava
spojeni su u isti preporučiteljski algoritam.
Kaskada Jedan sustav preporučivanja usavršava
drugi.
Meta-razina Model jednog sustava preporučivanja koristi
se kao ulaz za model drugog sustava.
6
1.4. Primjeri preporučiteljskih sustava
Preporučiteljski sustavi postali su izuzetno korišteni zadnjih godina. Svaka veća
internetska stranica čiji poslužitelj čuva velike količine podataka ima integrirani
preporučiteljski sustav koji korisnicima pomaže pri pregledavanju podataka. U nastavku
opisan je način rada popularnih internetskih stranica koje koriste preporučiteljske sustave.
1.4.1. Amazon
Amazon.com jedna je od najpoznatijih internetskih stranica koja se bavi elektroničkom
trgovinom. Svoje preporučivanje temelji na hibridnom preporučivanju koje se uglavnom
bazira na filtriranju zasnovanom na sadržaju. Amazonov sustav preporučivanja vrlo je
sofisticiran ali je u svojoj srži temeljen na individualnom ponašanju korisnika ili samom
predmetu i ponašanju drugih korisnika. Kada korisnik pregledava internetsku stranicu
kompanije Amazon sustav pamti njegove preglede i na temelju njih preporučuje nove
predmete koje bi korisnik mogao pogledati [5]. Ovakav slučaj prikazan je na slici (Slika
1.1) gdje se na lijevoj strani nalazi popis pregledanih predmeta, dok se na desnoj nalazi
popis predmeta koje su korisniku preporučene. Možemo primjetiti sličnost u naslovima
između pregledanih i preporučenih predmeta. Primjerice pregledani predmet je knjiga
naziva „Preporučiteljski sustavi“ (engl. recommender systems), a preporučeni knjiga
„Algoritmi inteligentne mreže“ (engl. algorithms of the intelligent web).
Slika 1.1 Podatkovno filtriranje
7
Ukoliko korisnik ima vremena i želi personaliziranju preporuku može otvoriti korisnički
račun i ispuniti anketu o svojim interesima. Na ovaj način sustav može mnogo lakše i
točnije preporučiti predmete korisniku jer ima više informacija o njegovim preferencijama.
1.4.2. Google
Jedna od najuspješnijih kompanija današnjice, Google, koristi preporučiteljski sustav kako
bi pospješio svoj jezgreni proizvod – tražilicu.
Google to radi na dva načina:
1. Prilagođava rezultat pretrage na temelju prošlih pretraga i lokacije korisnika
2. Kada je korisnik prijavljen sa svojim korisničkim računom filtriranje se provodi
uzimajući u obzir cjelokupnu web povijest
Google koristi korisnikovu lokaciju i povijest pretraživanja da bi učinio svoje rezultate
pretrage snažnijima. Dok se ovakav pristup pretrazi smatra personaliziranim postoje još
dva tipa preporučivanja u Googleu:
1. Googleov algoritam pretraživanja naziva Rang Stranica (engl. page rank ) koristi
preporučivanje zasnovano na suradnji kada rangira stranice koje je izbacila
tražilica ovisno o tome tko daje poveznicu na određenu stranicu;
2. Google također koristi i preporučivanje zasnovano na sadržaju kod Jeste li mislili
(engl. did you mean) opcije. Ova usluga pokušava ispraviti korisnika ukoliko je
pogriješio kada je upisivao traženi pojam. Način rada možemo vidjeti na slici
(Slika 1.2) gdje je korisnik pogriješio kada je upisao riječi ''google searche ''
umjesto ''google search''.
Osim kod tražilice preporučiteljski sustavi koriste se i u opcijama kao što su Google
novosti (eng. google news) i Google internetskoj kupnji (eng. froggle).
8
Slika 1.2 Usluga Googleove tražilice „Did you mean“
9
2. Preporučivanje u društvenim mrežama
Društvene mreže, po prirodi, sadrže velike količine privatnih informacija o korisniku. Neki
detalji mogu biti javno dostupni, dok su neki skriveni i poznati samo drugim korisnicima
mreže. Ove informacije vrlo su korisne sustavima za preporučivanje kako bi nadvladali
početni problem kada sustav još nema nikakvih saznanja o korisnikovim preferencijama.
Na slici (Slika 2.1) prikazane su vodeće mreže i njihov način preporučivanja. Sve
društvene mreže koriste kombinaciju klasičnih načina preporučivanja i kombiniraju izvore
informacija pomoću kojih vrše rangiranje.
Slika 2.1 Mapiranje društvenih mreža s klasičnim načinima preporučivanja [6]
U procesu preporučivanja postoji još jedan problem koji društvene mreže s lakoćom
rješavaju – kojim korisnicima vjerovati. Društvene veze mogu poslužiti kao indikator
povjerenja među korisnicima što je vrlo bitno jer je povjerenje važan faktor u procesu
preporučivanja. Facebookove društvene veze su prijateljstva među korisnicima, dok na
Twitteru korisnik ostvaruje društvene veze prema ljudima koje slijedi (engl. follow) [6].
10
Preporučivanje zasnovano na sličnosti treba skup izraza koji opisuju objekt sviđanja. Ovi
izrazi mogu biti izdvojeni iz Facebookovih fan stranica, iz dodatnih statusnih linija ili iz
postova na zidu.
2.1. Preporučivanje u društvenoj mreži Facebook
U društvenoj mreži Facebook razvijene su mnoge aplikacije za preporučivanje. Među
najpoznatijima su : „Ljudi koje možda poznaješ“ (engl. people you may know),
„Preporučene stranice“ (engl. recommended pages) i „Igre koje bi ti se mogle sviđati“
(engl. games you may like). Sve su izvedene uglavnom pomoću preporučivanja koje je
zasnovano na suradnji.
Na Facebooku korisnici izričito objavljuju svoje interese preko profila, fan stranica,
lajkova i statusa zbog čega saznavanje njihovih preferencija ne predstavlja problem. Kada
korisnik lajka fan stranicu branda Levis to za preporučiteljski sustav automatski znači da ju
je on ocijenio kao poželjnu. Uzmimo za primjer sustav koji personalizirano preporučuje
muzeje nekog grada koje bi korisnik mogao posjetiti. Sustav uzima u obzir sve relevantne
podatke s korisnikovog profila i daje rezultat [7]. Ako korisnik XY radi u jedinici za
maritimna arheološka istraživanja onda je vrlo vjerojatno da će ga zanimati izložba
brodskih olupina. Prikaz ovog slučaja je na slici (Slika 2.2).
Slika 2.2 Primjer preporučiteljskog sustava na Facebooku
11
Osim aplikacija za preporučivanje Facebook je uveo novitet naziva „Preporučiteljski
element za stranice“ (engl. recommendations feature for pages) koji omogućuje korisniku
da doda svoje odobrenje nekoj stranici na Facebookovoj mreži [8]. Osim odobrenja
korisnik može stranicu i negativno ocijeniti, tako da je ono što on zapravo daje kritika, a ne
preporuka. Kritika može biti tekstualna ili samo u obliku lajka što je prikazano na slici
(Slika 2.3).
Slika 2.3 Preporučiteljski element za stranice
2.2. Rangiranje u društvenoj mreži Facebook kao oblik
preporučivanja
Rangiranje prijatelja u Facebooku kao ideja nije novost jer već postoje implementirane
usluge i aplikacije koje rangiraju prijatelje. Usluga ''Ljudi koje možda poznaješ'' predlaže
korisniku s kim bi mogao postati prijatelj. Osoba koju usluga predloži prijatelj je s velikim
brojem korisnikovih prijatelja. Primjer rada usluge prikazan je na slici (Slika 2.4).
Slika 2.4 Facebookova usluga „Ljudi koje možda poznaješ“
12
Usluga ''Moji najbolji prijatelji'' (engl. my top friends) prati s kim je korisnik nedavno
imao najviše interakcija i na temelju tih informacija radi rang listu. Interakcije se odnose
na zajedničke slike, posjećene događaje, komentare, postove, a bitna je njihova kvaliteta i
količina. Ako korisnik učestalo posjećuje profil npr. svoje biše djevojke onda se ona
pomiče prema gore na listi najboljih prijatelja i tako postaje stalna postava na njegovom
zidu novosti (engl. news feed). Naime, novosti u mreži jako je puno pa se uzima u obzir da
korisnika najviše zanimaju akcije njegovih najboljih prijatelja, te se one i prikazuju na zidu
novosti. Prvih deset prijatelja s ljestvice pojavljuju se na lijevoj strani korisnikovog profila
(Slika 2.5).
Slika 2.5 Prijatelji prikazani na profilu
13
3. Model sustava Rangiranje prijatelja i algoritam
za izračun
Svaki preporučiteljski sustav najbolje se može opisati njegovim modelom i algoritmom za
izračun težina pomoću kojih se objekti rangiraju. U nadolazećim poglavljima biti će
objašnjen model i algoritam sustava Rangiranje prijatelja koji je razvijen u sklopu ovog
rada.
3.1. Model sustava Rangiranje prijatelja
Društveni graf [9] jedan je od najvažnijih pojmova za ovaj završni rad. Utemeljen je 2007.
godine na Facebookovoj konferenciji kada je upotrebljen kako bi objasnio Facebookovu
platformu koja prikazuje način na koji su korisnici mreže povezani. Facebookov društveni
graf je graf u kojem korisnici predstavljaju čvorove, a linije koje ih povezuju predstavljaju
prijateljstva što možemo vidjeti i na slici (Slika 3.1).
Slika 3.1 Facebookov društveni graf
14
Model rangiranja prijatelja u radu također je izveden pomoću društvenog grafa s malim
razlikama u odnosu na Facebookov graf. U centru grafa nalazi se korisnik koji pokreće
aplikaciju, a ostatak čine njegovi prijatelji s kojima je on povezan linijama koje
predstavljaju prijateljstvo. Linijama su pridijeljene određene težine na temelju sličnosti
korisnika i njegovog prijatelja, a čini ih cijeli broj veći ili jednak nuli. Na slici (Slika 3.2)
možemo vidjeti prikaz takvog grafa gdje su crvenom bojom označene linije, a brojevima
težine.
Slika 3.2 Društveni graf korišten u aplikaciji rangiranja prijatelja pomoću statičkih podataka
3.2. Algoritam pridjeljivanja težina
Težina na liniji koja povezuje dva korisnika simbolizira njihovu sličnost, a pridjeljuje se na
temelju jednostavnog algoritma. U bazi podataka za svaku osobu s kojom se uspoređuje
trenutni korisnik spremljeni su podatci koji su prikazani u tablici (Tablica 3.1).
15
Tablica 3.1 Podatci o korisniku koji se nalaze u bazi podataka
1071902702 ID
Vanda Viljanac ime i prezime
Zagreb, Croatia mjesto i država stanovanja
FER obrazovanje
2014 godina završetka fakulteta
name = myFERhoodie
id = 27874766221397
category = Clothing
name = Gone With The Wind
category = Movie
id = 264315306995027
name = Ericsson Nikola Tesla
Summer Camp
category = Education
id = 281014878641387
name = Street Style Seconds
category = Author
id = 180312698694826
. . .
Popis imena svih stranica koje se
korisniku sviđaju, njihove kategorije
i njihov ID.
Svi spremljeni podatci statički su podatci s profila korisnika što znači da se mijenjaju vrlo
rijetko. To su korisnikovo mjesto stanovanja, ustanova obrazovanja, njegovi najdraži
filmovi, knjige, predmeti, glumci ili autori. Dva najvažnija parametra za dodjeljivanje
težina su mjesto stanovanja i obrazovanje. Ako su oni jednaki za uspoređivane korisnike
onda težinskoj vrijednosti donose 2 boda. Ukoliko dvije osobe žive na istom području i
16
studiraju na istom fakultetu znači da imaju mnogo sličnosti. Ako se obama korisnicima
koje algoritam uspoređuje sviđaju iste stranice tj. ako imaju iste interese onda se težinska
vrijednost uvećava za 1 bod (Tablica 3.2).
Tablica 3.2 Dodijeljivanje bodova s obzirom na atribute korisničkog profila
Atribut korisničkog profila Težine
Mjesto stanovanja 2 boda
Obrazovanje 2 boda
Stranice 1 bod
Kada je dodjeljivanje težina završeno osobe čija linija ima najviše težine nalaze se na vrhu
liste najboljih prijatelja. Ovakva analiza sličnosti ne pokazuje s kim korisnik ima najviše
interakcija već s kim korisnik ima najviše zajedničkih interesa. Rezultati ovakve analize ne
moraju biti očekivani.
3.3. Baza podataka korisnikovih prijatelja
Kako bi bilo moguće uspoređivati korisnika s njegovim prijateljima potrebno je napraviti
bazu podataka koja će čuvati osnovne informacije o tim prijateljima. Facebook ne
dozvoljava pojedinom korisniku dohvat podataka s profila njegovih prijatelja, već samo
dohvat vlastitih podataka. Kako bi se ovaj problem riješio, pri svakom pokretanju
aplikacije podatci trenutnog korisnika spremaju se u bazu. Što više ljudi to učini, baza će
biti bogatija i analiza će biti temeljitija. Radi smanjivanja vremena izvedbe aplikacije baza
je napravljena što jednostavnijom. Sastoji se od dvije tablice:
Korisnik – sastoji se od onoliko n-torki koliko ima korisnika;
Stranice – popis svih stranica koje se sviđaju svim korisnicima, sadrži puno više n-
torki.
17
Na slici (Slika 3.3) prikazan je reklacijski model baze podataka.
Slika 3.3 Relacijski model baze podataka
U nastavku su prikazane tablice Korisnik (Tablica 3.3) i Stranice (Tablica 3.4) s atributima
i primjeri podataka iz baze.
Tablica 3.3 Korisnik
Korisnik
Id Name Location school_name education_year
1071902702 Vanda Viljanac Zagreb, Croatia FER 2014
Tablica 3.4 Stranice
Broj zapisa za svaku osobu u relaciji Stranice neće iznositi preko 500 u svrhu ubrzanja
izvođenja. Ključ prve relacije je atribut id, dok je ključ druge relacije data_id i Kid, a
strani ključ je Kid. Baza podataka je izvedena u programskom paketu XAMPP u MySQL
sustavu za upravljanje bazama podataka.
Stranice
Kid data_id data_name category
1071902702 191379734236969 Jack Nicholson Actor/director
18
3.4. Arhitektura aplikacije za statičko rangiranje prijatelja
Aplikacija napravljena u sklopu ovog završnog rada dio je jedne veće aplikacije koja se
sastoji od više elemenata. U većoj aplikaciji rangiranje se obavlja unutar dvije društvene
mreže Facebook i Twitter, a može biti statičko i dinamičko. Osim statičkog rangiranja s
kojim smo se već upoznali, dinamičko rangiranje obavlja se na temelju dinamičkih akcija
korisnika. Dinamičke akcije neprestano se mijenjaju i odnose se na profilne statuse,
komentare ili zajedničke slike [10]. Aplikacija koja rangira prijatelje u društvenoj mreži
Twitter to obavlja na temelju statičkih i dinamičkih podataka [11]. Arhitektura tog sustava
prikazana je na slici (Slika 3.4), gdje je s crvenom bojom označena je aplikacija statičkog
rangiranja izrađena u sklopu ovog završnog rada. Možemo primjetiti kako klijent preko
Interneta šalje HTTP (HyperText Transfer Protocol) zahtjev poslužitelju koji u memoriji
čuva aplikaciju i podatke u bazi podataka.
Slika 3.4 Arhitektura aplikacije čiji je dio aplikacija za statičko rangiranje prijatelja
19
4. Programska izvedba aplikacije za statičko
rangiranje prijatelja
Napravljena aplikacija je web aplikacija izvedena u programskom jeziku PHP uz pomoć
baze podataka MySQL. Ključan dio izvedbe čini Facebookov API koji omogućuje
programerima čitanje i pisanje podataka u Facebook mrežu. API je skup definiranih
naredbi koje programeri slijede da se mogu služiti uslugama i resursima Facebooka.
Predstavlja jednostavan pogled na društveni graf koji jednoznačno prikazuje objekte (slike,
događaje, stranice) i veze među njima (prijateljstva, dijeljeni sadržaj, oznake na slikama).
Na početku razvoja potrebno je registrirati aplikaciju u Facebook mreži i definirati sebe
kao Facebook programera (engl. developer ) (Slika 4.1).
Slika 4.1 Registracija aplikacije
Nakon ovog koraka, slijedi programski razvoj i dohvaćanje podataka. Za svako područje
dohvata potrebno je od korisnika zatražiti dozvolu (npr. dozvola za dohvaćanje podataka sa
zida, dozvola za čitanje poruka iz inboxa). Pogledajmo primjer koji je korišten u aplikaciji
za statičko rangiranje podataka.
20
$permission = "user_about_me, read_friendlists, user_likes";
$auth_url="http://www.facebook.com/dialog/oauth?client_id=".$app_id.
"&redirect_uri=" . urlencode($canvas_page) . "&scope=" . $permission;
Ispis 4.1 – Dozvole za pristup podatcima
U svrhu ove aplikacije bili su nam potrebni osnovni podatci o korisniku
(user_about_me), lista njegovih prijatelja (read_friendlists) i popis njegovih
lajkova (user_likes).
Kada korisnik dozvoli pristup podatcima potrebno ih je dohvatiti pomoću tokena.
$user = $facebook->api('/me');
$user = $facebook->api('/me/likes');
Ispis 4.2 – Tokeni za pristup podatcima
Nakon što su podatci spremljeni u varijable nužno ih je prenijeti u bazu podataka.
$host="localhost";
$username="root";
$password="";
$database="Facebook";
$table="korisnik"; //tablica korisnik
mysql_connect("$host", "$username", "$password") or die (mysql_error());
echo "connected ";
mysql_query("INSERT INTO
$table(id,name,location,school_name,education_year) VALUES
('$me_id','$me_name','$me_loc','$me_school','$me_year' )") or die
(mysql_error());
Ispis 4.3 – Povezivanje s bazom podataka i upisivanje zapisa
21
Kada se u bazi nalaze podatci o nekoliko osoba možemo poćeti s dohvaćanjem podataka iz
baze i uspoređivanjem. U ispisu (Ispis 4.5) uspoređujemo lokaciju i fakultet korisnika i
njegovog prijatelja, dok u ispisu (Ispis 4.6) uspoređujemo korisnikove lajkove i lajkove
njegovog prijatelja.
$data = mysql_query("SELECT * FROM $table") or die(mysql_error());
$info = mysql_fetch_array( $data );
Ispis 4.4 – Dohvaćanje iz baze
while($info = mysql_fetch_array( $data )) //svi zapisi iz baze
{
if($info['id']!=$user['id']) //zapis nije o trenutnom korisniku
{
$korisnik[$info['id']]=0; // inicijalna vrijednost težine
If(trim($info['location']==trim($user['location']['name']))
{ // ako su na istoj lokaciji
$korisnik[$info['id']]= $korisnik[$info['id']]+2;
}
if(trim($info['school_name'])==trim($user['education']['0']['school']['na
me']))
{ // ako su na istom fakultetu
$korisnik[$info['id']]= $korisnik[$info['id']]+2;
}
}
Ispis 4.5 Uspoređivanje lokacije i fakulteta
22
foreach( $korisnik as $key => $value){
$data = mysql_query("SELECT data_id FROM $table WHERE Kid=$key " )or
die(mysql_error()); //dohvaćanje svih lajkova
while($info = mysql_fetch_array($data )){
for ($counter = 0; $counter <=count($user_likes['data'])-1; $counter +=
1){ // ako su lajkovi jednaki
if($info['data_id']==$user_likes['data'][$counter]['id'])
$korisnik[$key]++;
}}}
Ispis 4.6 Uspoređivanje lajkova
4.1. Programski jezik PHP
PHP (Hypertext Preprocesor ) je objektno orijentiran skriptni jezik za dinamičko
generiranje web stranica. Drugim riječima, PHP je jezik pomoću kojeg je moguće kreirati
HTML stranicu na poslužitelju prije nego što se ona, popunjena dinamičkim sadržajem,
pošalje klijentu. Ovim načinom generiranja sadržaja klijent ne zna što se događa na
poslužitelju, već može vidjeti samo rezultat rada aplikacije u obliku HTML koda. PHP je
jedan od najpopularnijih i najmoćnijih skriptnih jezika trenutno na tržištu. Broj siteova koji
koriste PHP raste iz dana u dan, a broj tvrtki koje žele primijeniti PHP na svojim siteovima
je još veći. PHP je izvrstan jer pomoću njega s nevjerojatnom lakoćom moguće stvoriti
opširnu web aplikaciju s velikim količinama podataka. Jezik je otvorenog koda što znači da
svatko tko želi može skinuti izvorne PHP kodove pisane u C-u i, ukoliko ih razumije, može
ih mijenjati po svojoj volji te dodavati nove funkcije. Prednost PHP-a nad ostalim jezicima
jest njegova podrška za baratanje širokom paletom baza podataka. Podržava sve
popularnije baze podataka kao što su MySQL, PostgreSQL, dBase ili Oracle. Sintaktički je
sličan drugim jezicima poput C-a ili Perla, te je bogat funkcijama za manipuliranje mnogo
23
različitih tipova sadržaja poput slika ili flasheva. U nastavku biti će pokazan primjer
jednostavne PHP skripte koja ispisuje „Hello World!“
<?php
echo 'Hello World!';
?>
Ispis 4.6 Ispis teksta „Hello World“
4.2. Baza podataka MySQL
MySQL je poslužitelj baza podataka. Drugim riječima, radi se o softveru kojem se može
pristupiti preko mreže na sličan način kao i web poslužiteljima, s tom razlikom da se
MySQL-u obično pristupa pomoću korisničkog imena i lozinke [12]. Baze MySQL su
relacijskog tipa, koji se pokazao kao najbolji način skladištenja i pretraživanja velikih
količina podataka. U suštini predstavljaju osnovu svakog informacijskog sustava, tj. temelj
svakog poslovnog subjekta koji svoje poslovanje bazira na dostupnosti kvalitetnih i brzih
informacija.
24
5. Scenarij korištenja aplikacije za statičko
rangiranje prijatelja
U scenariju prikazan je primjer korištenja aplikacije za statičko rangiranje prijatelja u
drštevoj mreži Facebook koja je izrađena u sklopu ovog završnog rada.
Ako korisnik ima velik broj prijatelja u svojoj društvenoj mreži, a želi saznati s kim ima
najviše zajedničkih interesa u području glazbe, filmova i literature pokrenuti će ovu
aplikaciju i dobiti odgovor na svoje pitanje.
Korisnik za početak mora otvoriti web-preglednik i upisati internetsku adresu aplikacije ili
kliknuti na ovu poveznicu: https://apps.facebook.com/vandaviljanac/ (Slika 4.1). Kada se
aplikacija pokrene otvara se početna stranica na kojoj korisnik može odabrati želi li
rangiranje u Facebook ili Twitter mreži (Slika 5.1).
Slika 5.1 Početna stranica
Odabirom rangiranja u Facebook mreži otvara se novi prozor u kojem korisnik bira želi li
statičko ili dinamičko rangiranje (Slika 5.2).
25
Slika 5.2 Odabir vrste rangiranja
Odabirom statičkog rangiranja otvara se prozor u kojem korisnik mora dozvoliti pristup
svojim podatcima (Slika 5.3).
Slika 5.3 Logiraj se
Nakon što korisnik da dozvolu za pristup podatcima, aplikacija izvrši svoj posao i rangira
prijatelje iz baze na način prikazan na slici (Slika 5.4).
26
Slika 5.4 Rezultati rangiranja
27
Zaključak
Osnovna zadaća preporučiteljskih sustava na Internetu jest olakšavanje korisnicima da
donesu odluku o odabiru unutar velikih i složenih skupova podataka. Kada se
preporučiteljski sustavi integriraju u društvene mreže postoji mnogo područja primjene jer
se društvene mreže sastoje od velike količine informacija. U ovom radu obrađena je jedna
mogućnosti integracije razvojem aplikacije koja rangira prijatelje u društvenoj mreži
Facebook te ih na taj način i preporučuje. Iako aplikacije ove vrste već postoje, razvijena
aplikacija u jednom pogledu razlikuje se od ostalih. Naime, najčešći način rangiranja
prijatelja izvodi se na temelju količine interakcije s korisnikom pa rezultate takve analize
korisnik može predvidjeti. Aplikacija razvijena u ovom završnom radu rangira korisnikove
prijatelje na temelju njihovih zajedničkih interesa pa bi ovakva analiza mogla korisniku
dati neočekivane rezultate. Upravo su različitost i inovativnost oni faktori koji izdvajaju
aplikaciju od drugih te ju na taj način čine dobrim materijalom za razvoj i primjenu.
Budući da su danas društvene mreže s Facebookom na vrhu internetski fenomen koji
koristi preko 900 milijuna ljudi, ulaganje u njihov razvoj potrebno je i uvijek isplativo.
Aplikacija je u ovoj fazi razvoja još uvijek jednostavna i moguće ju je unaprijediti na
nekoliko načina. Prvenstveno, moguće je poboljšati algoritam računanja težina koji za sada
linearno povećava težine za svaki zajednički interes korisnika i njegovog prijatelja.
Poboljšanje je moguće izvesti približavajući algoritam računanja algoritmima iz hibridnih
preporučiteljskih sustava. Zatim, moguće je ubrzati proces izvođenja aplikacije
optimizacijom koda jer je za sada relativno spor. Na kraju, moguće je dodati detaljnije
informacije u ispisu analize sličnosti poput popisa zajedničkih predmeta interesa.
28
Literatura
[1] F. Ricci, Recommender Systems Handbook, London, 2011.
[2] P. Melville, V. Sindhwani, Recommender Systems, IBM Research Center, 2011
[3] L. Humski, “Problem monotonije u listama preporuke”, Seminar, Sveučilište u
Zagrebu, Fakultet Elektrotehnike i Računarstva, Zagreb 2010
[4] A. Jandras, “Postupci preporučivanja i preporučiteljski sustavi”, Diplomski seminar,
Sveučilište u Zagrebu, Fakultet Elektrotehnike i Računarstva, Zagreb 2011
[5] M. Augustinović, “Preporučivanje zasnovano na društvenoj umreženosti korisnika”
Završni rad, Sveučilište u Zagrebu, Fakultet Elektrotehnike i Računarstva, Zagreb
2011
[6] A.Tiroshi, T. Kuflik, J. Kay and B. Kummerfeld, Recommender Systems and the
Social Web, School of Information Technologies, University of Sydney, Australia
2011, web-izvor: http://www.wis.ewi.tudelft.nl/aum2011/paper1.pdf
[7] P. Bonhard, M.A. Sasse, 'Knowing me, knowing you’ — using profiles and social
networking to improve recommender system, u časopisu: BT Technology Journal,
2006, Vol. 24, 84-98.
[8] HyperArts Web Design, Facebook’s new Recommendations feature for pages, June
2011, web-izvor: https://www.facebook.com/notes/hyperarts-web-design/facebooks-
new-recommendations-feature-for-pages/10150267767840844
[9] F.E. Walter, Battistion S., Schweitzer F., A model of a trust-based recommendation
system on a social network, u časopisu: Autonomous Agents and Multi-Agent
Systems, 2008, Vol. 16, 57–74.
[10] M. Šitum, “Rangiranje prijatelja u društvenoj mreži Facebook zasnovano na
korisničkim akcijama”, Završni rad, Sveučilište u Zagrebu, Fakultet Elektrotehnike i
Računarstva, Zagreb 2012
[11] Z. Matošević, “Rangiranje prijatelja u web-zasnovanoj društvenoj mreži”, Završni
rad, Sveučilište u Zagrebu, Fakultet Elektrotehnike i Računarstva, Zagreb 2012
[12] K. Barrett, MySQL hight performance, March 2009, web-avaliable:
http://fyi.oreilly.com/2009/03/read-an-excerpt-from-high-perf.html
29
Sažetak
Ovaj rad obrađuje temu rangiranja prijatelja u društvenoj mreži Facebook koje je
zasnovano na korisničkim profilima. Na početku rada definirani su preporučiteljski sustavi
te su navedeni primjeri njihove primjene. Zatim je opisano preporučivanje u društvenim
mrežama s naglaskom na preporučivanje u Facebooku. Objašnjeno je i rangiranje kao
podvrsta preporučivanja. Opisan je model, algoritam računanja težina i način izvedbe
aplikacije razvijene u svrhu ovog rada. Programska izvedba aplikacije objašnjena je uz
pomoć ključnih djelova koda. Na kraju dan je scenarij i uputstva za upotrebu aplikacije.
30
Summary
Ranking friends on the Facebook social network based on their user profiles
This thesis discusses ranking of friends on the Facebook social networ based on their user
profiles. In the beginning of this work the Recommender Systems are defined and the
examples of the ways they can be used are listed. Next, the process of recommending
friends in social networks is described with the special emphasis on the recommending on
Facebook. Ranking is defined as a type of recommendation. The model, algorithm that
calculates the values and the execution of the application developed for the purpose of this
work is described. Program implementation is interpreted with the most important code
snippets. In the end the script and instructions for the use of this application are given.
31
Skraćenice
PHP Hypertext Preprocessor hipertekstualni skriptni jezik
API Application Programming Interface aplikacijsko programsko sučelje
HTML Hypertext Markup Language hipertekstualni jezik za označavanje
HTTP HyperText Transfer Protocol protokol za prijenos informacija na
webu
32
Privitak A: Upute za pokretanje aplikacije
U privitku biti će opisano pokretanje aplikacije na poslužitelju gdje se može manipulirati i
bazom podataka.
Za početak potrebno je instalirati programski paket XAMPP koji služi za imitiranje
poslužitelja, ali na lokalnom računalu. Programski paket sadrži Apache, MySQL, Mercury
i Tomcat od kojih će nam biti potrebne samo prve dvije tehnologije. Kada instaliramo
XAMPP potrebno je pokrenuti web-poslužitelj Apache i bazu podataka MySQL klikom
na gumb start. Ukoliko je pokretanje uspjelo XAMPP program izgledati će kao na slici
(Slika 6.1).
Slika 6.1
U C:/ direktoriju potrebno je pronaći direktorij naziva xampp, zatim unutar njega direktorij
htdocs u koji je potrebno spremiti sve *.html i *.php datoteke koje se nalaze na priloženom
CD-u. Sljedeći korak jest pokretanje web-klijenta tj. preglednika u koji upišemo adresu
http://localhost/index.html. Ovim korakom aplikacija je pokrenuta.