You are on page 1of 35

SVEUILITE U ZAGREBU

FAKULTET ELEKTROTEHNIKE I RAUNARSTVA

ZAVRNI RAD br. 2404

RANGIRANJE PRIJATELJA U
DRUTVENOJ MREI FACEBOOK
ZASNOVANO NA KORISNIKIM
PROFILIMA
Vanda Viljanac

Zagreb, lipanj 2012.

Sadraj
Uvod ...................................................................................................................................... 1
1.

2.

3.

4.

5.

Sustavi za preporuivanje .............................................................................................. 2


1.1.

Preporuivanje zasnovano na suradnji .................................................................. 3

1.2.

Preporuivanje zasnovano na slinosti .................................................................. 4

1.3.

Hibridno preporuivanje ........................................................................................ 5

1.4.

Primjeri preporuiteljskih sustava ......................................................................... 6

1.4.1.

Amazon.......................................................................................................... 6

1.4.2.

Google ........................................................................................................... 7

Preporuivanje u drutvenim mreama ......................................................................... 9


2.1.

Preporuivanje u drutvenoj mrei Facebook ..................................................... 10

2.2.

Rangiranje u drutvenoj mrei Facebook kao oblik preporuivanja ................... 11

Model sustava Rangiranje prijatelja i algoritam za izraun ....................................... 13


3.1.

Model sustava Rangiranje prijatelja ................................................................... 13

3.2.

Algoritam pridjeljivanja teina ............................................................................ 14

3.3.

Baza podataka korisnikovih prijatelja ................................................................. 16

3.4.

Arhitektura aplikacije za statiko rangiranje prijatelja ........................................ 18

Programska izvedba aplikacije za statiko rangiranje prijatelja .................................. 19


4.1.

Programski jezik PHP.......................................................................................... 22

4.2.

Baza podataka MySQL........................................................................................ 23

Scenarij koritenja aplikacije za statiko rangiranje prijatelja .................................... 24

Zakljuak ............................................................................................................................. 27
Literatura ............................................................................................................................. 28
Saetak ................................................................................................................................. 29
Summary.............................................................................................................................. 30
Skraenice............................................................................................................................ 31

Uvod
Razvojem Interneta i popularizacijom drutvenih mrea virtualna prijateljstva dobivaju na
vanosti. Danas, samo jednim klikom mia stvaramo novo poznanstvo pa prolaskom
vremena postajemo povezani s preko nekoliko stotina ljudi. U ovom moru internetskih
prijateljstava teko je pratiti tko nam je slian, s kim bismo se mogli slagati, te s kim
dijelimo zajednike interese. Jedno od moguih rjeenja ovog problema predstavljeno je u
ovom zavrnom radu razvojem programske potpore koja preporuuje prijatelje.

Preporuiteljski sustavi ve su uobiajena pojava na internetskim stranicama te obuhvaaju


mnogo podruja i naina preporuivanja. Njihova zadaa jest pronalaenje odgovarajuih
podataka u mrei na temelju korisnikovih preferencija. Grana preporuivanja koja je u
podruju interesa ovog rada jest rangiranje. Po prvi puta susreemo se sa sustavom koji
preporuuje osobe umjesto predmeta, glazbe ili filmova. Ovakav sustav radi na principu
drutvenog grafa iji je korijen korisnik, a grane predstavljaju prijateljstvo i posjeduju
odreene teine. Rangiranje prijatelja i dodjeljivanje teinskih karakteristika obavlja se na
temelju statikih podataka na njihovim profilima. Pod pojmom statiki podatci
podrazumijevamo informacije na korisnikom profilu koje se ne mijenjaju, ili se vrlo
rijetko mijenjaju kao to su primjerice najdrae knjige, filmovi, mjesto stanovanja ili
brandovi.

U prvom poglavlju objanjen je pojam preporuiteljskog sustava i nain na koji


funkcionira, te su predstavljeni najpoznatiji primjeri. U drugom poglavlju opisano je
rangiranje kao podvrsta preporuivanja te je napravljen osvrt na rangiranje u Facebook
mrei. U treem poglavlju razraen je algoritam za pridjeljivanje teina kao i izgled
drutvenog grafa. Pridodani su nacrti i opisana je baza podataka. U etvrtom poglavlju
objanjena je programska izvedba u jeziku PHP (Hypertext Preprocesor), dani su kljuni
dijelovi koda kako bi se pojasnila osnovna struktura programa. U petom poglavlju dan je
primjer mogueg scenarija upotrebe te su priloene slike s ekrana dok je aplikacija u
izvedbi.
1

1. Sustavi za preporuivanje
Najvanija zadaa preporuitelja je pomo korisniku pri odabiru. Korisnici su esto
suoeni s nepregledno velikom ponudom koja ih zastrauje, zbunjuje i ini nepovjerljivima
dok su prodavai suoeni s problemom marketinga i prezentacije velikog broja proizvoda.
Poto je u ljudskom procesu donoenja odluka kritina komponenta upravo primanje
savjeta od pouzdanog izvora osmiljeni su sustavi za preporuivanje koji olakavaju posao
kupcima i prodavaima.

Kada se opisana situacija primjeni na Internet moemo rei da je osnovna zadaa sustava
za preporuivanje specifina tehnika filtriranja informacija sa svrhom pronalaska i
prezentacije informacijskog predmeta (knjige, glazba, filmovi, slike, itd.) koji bi mogao
zanimati korisnika. Dakle, preporuiteljski sustav sugerira korisniku koje stavke jo nije
koristio, a mogle bi biti od njegova interesa i trebao bi ih pregledati. Ukoliko preporuitelj
uistinu prui korisne informacije kupac stvara povjerenje prema sustavu i ostaje njegov
vjeran korisnik.

Preporuiteljski sustavi razlikuju se u nainu na koji analiziraju informacije, a poznajemo


tri osnovna naina [1] :

Preporuivanje zasnovano na suradnji

(engl. collaborative recommendation)

preporuuje predmete na temelju korisnikovog prolog ponaanja ;

Preporuivanje zasnovano na sadraju (engl. content-based recommendation)


preporuuje na temelju slinih predmeta;

Hibridno preporuivanje (engl. hybrid recommendation) kombinacija prethodno


navedenih stilova.

1.1. Preporuivanje zasnovano na suradnji


Sustav za preporuivanje zasnovan na suradnji sakuplja povratne informacije korisnika
koji ocjenjuje objekte, povezuje korisnike kojima se manifestiraju slinosti u ocjenjivanju
te iskoritava te informacije pri preporuivanju predmeta [2]. Ovakvo preporuivanje
naziva se jo i personalizirano

preporuivanje. Ukratko, korisnicima se preporuuju

predmeti koji su odgovarali korisnicima koji su im bili slini. Ako je na primjer osoba A
imala isto miljenje kao osoba B o nekom predmetu, onda je vea vjerojatnost da e osoba
A imati isto miljenje kao i osoba B o nekom drugom predmetu [3]. Personalizirano
preporuivanje koristi algoritam koji rauna slinost izmeu dva korisnika, i stvara
predvianje uzimajui prosjek svih ocjena. Taj algoritam je definiran izrazom (1) :
sim( x, y )

(r r )(r r )
(r r ) (r r )
x ,i

ieI

y ,i

ieI

x ,i

y ,i

,
2

(1)

ieI

gdje je Ixy set predmeta koji su ocijenili korisnik X i Y.

Kada su se prethodno navedena predvianja primijenila na milijune ljudi rezultati nisu bili
dobri zbog sloenosti algoritma za potragu slinih korisnika i preduguog vremena izvedbe.
Kao alternativa smiljena je metoda podatkovnog filtriranja podataka (engl. Item based
collaborative filtering) koja umjesto traenja slinih korisnika trai predmet B koji je
slian predmetu A, a ocijenili su ga dobrim korisnici koji su ocijenili i predmet A i predmet
B.

Dvije osnovne kategorije sustava za personalizirano preporuivanje su:

Sustavi zasnovani na memoriji ovakav mehanizam koristio se u poetcima


preporuiteljskih sustava, jednostavan je za implementaciju i vrlo efektivan. Koristi
memoriju tj. bazu podataka iz koje statikim funkcijama izraunava k najslinijih
korisnika iz ijih se zapisa aktivnom korisniku preporuuju predmeti;

Sustavi zasnovani na modelu ovakav mehanizam izgrauje model na temelju


korisnikovih prethodnih radnji koji analizira predmete te predvia mogunost
svianja tog predmeta korisniku.
3

1.2. Preporuivanje zasnovano na slinosti


Metode ovakvog preporuivanja zasnovane su na opisu i karakteristikama predmeta te na
profilu korisnikovih interesa pa ih ne zanimaju druge specifikacije o korisniku [2]. Drugim
rijeima, algoritmi preporuivanja zasnovanog na slinosti preporuuju predmete koji su
slini onima koji su se sviali korisniku u prolosti. Sustav kreira profil korisnika
(engl. content-based profile) koji se sastoji od modela korisnikovih preferencija i od
korisnikovih prolih radnji. Model korisnikovih preferencija predstavlja korisnikove
interese i izraunava se iz njegovih prolih radnji pod koje spadaju ocjenjivanje predmeta
ili pregledavanje predmeta. Reprezentacija predmeta jest uglavnom tekstualni opis
predmeta koji nazivamo njegovim meta podatkom i moe se prikazati vektorom (2) :

v d w1,d , w2,d ,, w, N ,d

(2)

gdje je wt,d teina neke karakteristike t u dokumentu d. Nakon to su definirane dvije


najvanije stavke

profil predmeta i profil korisnika, metoda kojom se izraunavaju

najsliniji predmeti naziva se metoda najblieg 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 koristei funkciju slinosti i odredi mu k ''najbliih susjeda''. Numerika
vrijednost novog predmeta izvedena je iz pronaenih najbliih susjeda. Slinost izmeu
dva predmeta izraunava se kosinusnom kuta izmeu njihovih vektora kako prikazuje izraz
(3) :

cos

v1 v 2
v1 v 2

(3)

Usprkos jednostavnosti algoritma njegova se performansa pokazala konkurentnom s


performansama mnogo kompleksnijih algoritama.
4

1.3. Hibridno preporuivanje


Svi prethodno opisani algoritmi djelotvorni su samo u odreenim okolnostima i imaju
potekoe pri prepoznavanju suptilnosti u sadraju. Iz ovog razloga razvijeni su hibridni
sustavi za preporuivanje koji su kombinacija preporuivanja zasnovanog na sadraju i
preporuivanja zasnovanog na suradnji te nadomjetaju njihove nedostatke [4]. Oni
analiziraju podatke na temelju usporedbe slinosti predmeta koje je korisnik u prolosti
pregledavao i ocjenjivao te na temelju akcija slinih korisnika. Postoje razne kombinacije
hibridnog preporuivanja, a ovdje e biti predstavljene najkoritenije (Tablica 1.1).

Tablica 1.1 Metode hibridnog preporuivanja

Metoda

Opis
Ocijene razliitih tehnika preporuivanja

Teinska

kombiniraju se zajedno kako bi se dobila


jedinstvena preporuka.

Izmjenina

Mijeana

Kombinacija obiljeja

Kaskada

Meta-razina

Sistem izmjenjuje metode preporuivanja


ovisno o trenutnoj situaciji
Nekoliko tehnika preporuivanja prisutno je
u isto vrijeme.
Obiljeja razliitih preporuiteljskih sustava
spojeni su u isti preporuiteljski algoritam.
Jedan

sustav

preporuivanja

usavrava

drugi.
Model jednog sustava preporuivanja koristi
se kao ulaz za model drugog sustava.

1.4. Primjeri preporuiteljskih sustava


Preporuiteljski sustavi postali su izuzetno koriteni zadnjih godina. Svaka vea
internetska stranica iji posluitelj uva velike koliine podataka ima integrirani
preporuiteljski sustav koji korisnicima pomae pri pregledavanju podataka. U nastavku
opisan je nain rada popularnih internetskih stranica koje koriste preporuiteljske sustave.

1.4.1.

Amazon

Amazon.com jedna je od najpoznatijih internetskih stranica koja se bavi elektronikom


trgovinom. Svoje preporuivanje temelji na hibridnom preporuivanju koje se uglavnom
bazira na filtriranju zasnovanom na sadraju. Amazonov sustav preporuivanja vrlo je
sofisticiran ali je u svojoj sri temeljen na individualnom ponaanju korisnika ili samom
predmetu i ponaanju drugih korisnika. Kada korisnik pregledava internetsku stranicu
kompanije Amazon sustav pamti njegove preglede i na temelju njih preporuuje nove
predmete koje bi korisnik mogao pogledati [5]. Ovakav sluaj 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 preporuene. Moemo primjetiti slinost u naslovima
izmeu pregledanih i preporuenih predmeta. Primjerice pregledani predmet je knjiga
naziva

Preporuiteljski sustavi (engl. recommender systems), a preporueni knjiga

Algoritmi inteligentne mree (engl. algorithms of the intelligent web).

Slika 1.1 Podatkovno filtriranje

Ukoliko korisnik ima vremena i eli personaliziranju preporuku moe otvoriti korisniki
raun i ispuniti anketu o svojim interesima. Na ovaj nain sustav moe mnogo lake i
tonije preporuiti predmete korisniku jer ima vie informacija o njegovim preferencijama.

1.4.2.

Google

Jedna od najuspjenijih kompanija dananjice, Google, koristi preporuiteljski sustav kako


bi pospjeio svoj jezgreni proizvod trailicu.
Google to radi na dva naina:
1. Prilagoava rezultat pretrage na temelju prolih pretraga i lokacije korisnika
2. Kada je korisnik prijavljen sa svojim korisnikim raunom filtriranje se provodi
uzimajui u obzir cjelokupnu web povijest
Google koristi korisnikovu lokaciju i povijest pretraivanja da bi uinio svoje rezultate
pretrage snanijima. Dok se ovakav pristup pretrazi smatra personaliziranim postoje jo
dva tipa preporuivanja u Googleu:
1. Googleov algoritam pretraivanja naziva Rang Stranica (engl. page rank ) koristi
preporuivanje zasnovano na suradnji kada rangira stranice koje

je izbacila

trailica ovisno o tome tko daje poveznicu na odreenu stranicu;


2. Google takoer koristi i preporuivanje zasnovano na sadraju kod Jeste li mislili
(engl. did you mean) opcije. Ova usluga pokuava ispraviti korisnika ukoliko je
pogrijeio kada je upisivao traeni pojam. Nain rada moemo vidjeti na slici
(Slika 1.2) gdje je korisnik pogrijeio kada je upisao rijei ''google searche ''
umjesto ''google search''.
Osim kod trailice preporuiteljski sustavi koriste se i u opcijama kao to su Google
novosti (eng. google news) i Google internetskoj kupnji (eng. froggle).

Slika 1.2 Usluga Googleove trailice Did you mean

2. Preporuivanje u drutvenim mreama


Drutvene mree, po prirodi, sadre velike koliine privatnih informacija o korisniku. Neki
detalji mogu biti javno dostupni, dok su neki skriveni i poznati samo drugim korisnicima
mree. Ove informacije vrlo su korisne sustavima za preporuivanje kako bi nadvladali
poetni problem kada sustav jo nema nikakvih saznanja o korisnikovim preferencijama.
Na slici (Slika 2.1)

prikazane su vodee mree i njihov nain preporuivanja. Sve

drutvene mree koriste kombinaciju klasinih naina preporuivanja i kombiniraju izvore


informacija pomou kojih vre rangiranje.

Slika 2.1 Mapiranje drutvenih mrea s klasinim nainima preporuivanja [6]

U procesu preporuivanja postoji jo jedan problem koji drutvene mree s lakoom


rjeavaju kojim korisnicima vjerovati. Drutvene veze mogu posluiti kao indikator
povjerenja meu korisnicima to je vrlo bitno jer je povjerenje vaan faktor u procesu
preporuivanja. Facebookove drutvene veze su prijateljstva meu korisnicima, dok na
Twitteru korisnik ostvaruje drutvene veze prema ljudima koje slijedi (engl. follow) [6].
9

Preporuivanje zasnovano na slinosti treba skup izraza koji opisuju objekt svianja. Ovi
izrazi mogu biti izdvojeni iz Facebookovih fan stranica, iz dodatnih statusnih linija ili iz
postova na zidu.

2.1. Preporuivanje u drutvenoj mrei Facebook


U drutvenoj mrei Facebook razvijene su mnoge aplikacije za preporuivanje. Meu
najpoznatijima su : Ljudi koje moda poznaje (engl. people you may know),
Preporuene stranice (engl. recommended pages) i Igre koje bi ti se mogle sviati
(engl. games you may like). Sve su izvedene uglavnom pomou preporuivanja koje je
zasnovano na suradnji.

Na Facebooku korisnici izriito 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 preporuiteljski sustav automatski znai da ju
je on ocijenio kao poeljnu. Uzmimo za primjer sustav koji personalizirano preporuuje
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 arheoloka istraivanja onda je vrlo vjerojatno da e ga zanimati izloba
brodskih olupina. Prikaz ovog sluaja je na slici (Slika 2.2).

Slika 2.2 Primjer preporuiteljskog sustava na Facebooku

10

Osim aplikacija za preporuivanje Facebook je uveo novitet naziva Preporuiteljski


element za stranice (engl. recommendations feature for pages) koji omoguuje korisniku
da doda svoje odobrenje nekoj stranici na Facebookovoj mrei [8]. Osim odobrenja
korisnik moe stranicu i negativno ocijeniti, tako da je ono to on zapravo daje kritika, a ne
preporuka. Kritika moe biti tekstualna ili samo u obliku lajka to je prikazano na slici
(Slika 2.3).

Slika 2.3 Preporuiteljski element za stranice

2.2. Rangiranje u drutvenoj mrei Facebook kao oblik


preporuivanja
Rangiranje prijatelja u Facebooku kao ideja nije novost jer ve postoje implementirane
usluge i aplikacije koje rangiraju prijatelje. Usluga ''Ljudi koje moda poznaje'' predlae
korisniku s kim bi mogao postati prijatelj. Osoba koju usluga predloi prijatelj je s velikim
brojem korisnikovih prijatelja. Primjer rada usluge prikazan je na slici (Slika 2.4).

Slika 2.4 Facebookova usluga Ljudi koje moda poznaje

11

Usluga ''Moji najbolji prijatelji'' (engl. my top friends) prati s kim je korisnik nedavno
imao najvie interakcija i na temelju tih informacija radi rang listu. Interakcije se odnose
na zajednike slike, posjeene dogaaje, komentare, postove, a bitna je njihova kvaliteta i
koliina. Ako korisnik uestalo posjeuje profil npr. svoje bie djevojke onda se ona
pomie prema gore na listi najboljih prijatelja i tako postaje stalna postava na njegovom
zidu novosti (engl. news feed). Naime, novosti u mrei jako je puno pa se uzima u obzir da
korisnika najvie 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

12

3. Model sustava Rangiranje prijatelja i algoritam


za izraun
Svaki preporuiteljski sustav najbolje se moe opisati njegovim modelom i algoritmom za
izraun teina pomou kojih se objekti rangiraju. U nadolazeim poglavljima biti e
objanjen model i algoritam sustava Rangiranje prijatelja koji je razvijen u sklopu ovog
rada.

3.1. Model sustava Rangiranje prijatelja


Drutveni graf [9] jedan je od najvanijih pojmova za ovaj zavrni rad. Utemeljen je 2007.
godine na Facebookovoj konferenciji kada je upotrebljen kako bi objasnio Facebookovu
platformu koja prikazuje nain na koji su korisnici mree povezani. Facebookov drutveni
graf je graf u kojem korisnici predstavljaju vorove, a linije koje ih povezuju predstavljaju
prijateljstva to moemo vidjeti i na slici (Slika 3.1).

Slika 3.1 Facebookov drutveni graf

13

Model rangiranja prijatelja u radu takoer je izveden pomou drutvenog grafa s malim
razlikama u odnosu na Facebookov graf. U centru grafa nalazi se korisnik koji pokree
aplikaciju, a ostatak ine njegovi prijatelji s kojima je on povezan linijama koje
predstavljaju prijateljstvo. Linijama su pridijeljene odreene teine na temelju slinosti
korisnika i njegovog prijatelja, a ini ih cijeli broj vei ili jednak nuli. Na slici (Slika 3.2)
moemo vidjeti prikaz takvog grafa gdje su crvenom bojom oznaene linije, a brojevima
teine.

Slika 3.2 Drutveni graf koriten u aplikaciji rangiranja prijatelja pomou statikih podataka

3.2. Algoritam pridjeljivanja teina

Teina na liniji koja povezuje dva korisnika simbolizira njihovu slinost, a pridjeljuje se na
temelju jednostavnog algoritma. U bazi podataka za svaku osobu s kojom se usporeuje
trenutni korisnik spremljeni su podatci koji su prikazani u tablici (Tablica 3.1).

14

Tablica 3.1 Podatci o korisniku koji se nalaze u bazi podataka

1071902702

ID

Vanda Viljanac

ime i prezime

Zagreb, Croatia

mjesto i drava stanovanja

FER

obrazovanje

2014

godina zavretka fakulteta

name = myFERhoodie
id = 27874766221397
category = Clothing
name = Gone With The Wind
category = Movie
id = 264315306995027
name = Ericsson Nikola Tesla
Summer Camp

Popis imena svih stranica koje se


korisniku sviaju, njihove kategorije
i njihov ID.

category = Education
id = 281014878641387
name = Street Style Seconds
category = Author
id = 180312698694826
...

Svi spremljeni podatci statiki su podatci s profila korisnika to znai da se mijenjaju vrlo
rijetko. To su korisnikovo mjesto stanovanja, ustanova obrazovanja, njegovi najdrai
filmovi, knjige, predmeti, glumci ili autori. Dva najvanija parametra za dodjeljivanje
teina su mjesto stanovanja i obrazovanje. Ako su oni jednaki za usporeivane korisnike
onda teinskoj vrijednosti donose 2 boda. Ukoliko dvije osobe ive na istom podruju i
15

studiraju na istom fakultetu znai da imaju mnogo slinosti. Ako se obama korisnicima
koje algoritam usporeuje sviaju iste stranice tj. ako imaju iste interese onda se teinska
vrijednost uveava za 1 bod (Tablica 3.2).

Tablica 3.2 Dodijeljivanje bodova s obzirom na atribute korisnikog profila

Atribut korisnikog profila

Teine

Mjesto stanovanja

2 boda

Obrazovanje

2 boda

Stranice

1 bod

Kada je dodjeljivanje teina zavreno osobe ija linija ima najvie teine nalaze se na vrhu
liste najboljih prijatelja. Ovakva analiza slinosti ne pokazuje s kim korisnik ima najvie
interakcija ve s kim korisnik ima najvie zajednikih interesa. Rezultati ovakve analize ne
moraju biti oekivani.

3.3. Baza podataka korisnikovih prijatelja


Kako bi bilo mogue usporeivati 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 rijeio, pri svakom pokretanju
aplikacije podatci trenutnog korisnika spremaju se u bazu. to vie ljudi to uini, 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 sviaju svim korisnicima, sadri puno vie ntorki.

16

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

Stranice
Kid

data_id

data_name

category

1071902702

191379734236969

Jack Nicholson

Actor/director

Broj zapisa za svaku osobu u relaciji Stranice nee iznositi preko 500 u svrhu ubrzanja
izvoenja. 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.
17

3.4. Arhitektura aplikacije za statiko rangiranje prijatelja


Aplikacija napravljena u sklopu ovog zavrnog rada dio je jedne vee aplikacije koja se
sastoji od vie elemenata. U veoj aplikaciji rangiranje se obavlja unutar dvije drutvene
mree Facebook i Twitter, a moe biti statiko i dinamiko. Osim statikog rangiranja s
kojim smo se ve upoznali, dinamiko rangiranje obavlja se na temelju dinamikih akcija
korisnika. Dinamike akcije neprestano se mijenjaju i odnose se na profilne statuse,
komentare ili zajednike slike [10]. Aplikacija koja rangira prijatelje u drutvenoj mrei
Twitter to obavlja na temelju statikih i dinamikih podataka [11]. Arhitektura tog sustava
prikazana je na slici (Slika 3.4), gdje je s crvenom bojom oznaena je aplikacija statikog
rangiranja izraena u sklopu ovog zavrnog rada. Moemo primjetiti kako klijent preko
Interneta alje HTTP (HyperText Transfer Protocol) zahtjev posluitelju koji u memoriji
uva aplikaciju i podatke u bazi podataka.

Slika 3.4 Arhitektura aplikacije iji je dio aplikacija za statiko rangiranje prijatelja

18

4. Programska

izvedba

aplikacije

za

statiko

rangiranje prijatelja
Napravljena aplikacija je web aplikacija izvedena u programskom jeziku PHP uz pomo
baze podataka MySQL. Kljuan dio izvedbe ini Facebookov API

koji omoguuje

programerima itanje i pisanje podataka u Facebook mreu. API je skup definiranih


naredbi koje programeri slijede da se mogu sluiti uslugama i resursima Facebooka.
Predstavlja jednostavan pogled na drutveni graf koji jednoznano prikazuje objekte (slike,
dogaaje, stranice) i veze meu njima (prijateljstva, dijeljeni sadraj, oznake na slikama).
Na poetku razvoja potrebno je registrirati aplikaciju u Facebook mrei i definirati sebe
kao Facebook programera (engl. developer ) (Slika 4.1).

Slika 4.1 Registracija aplikacije

Nakon ovog koraka, slijedi programski razvoj i dohvaanje podataka. Za svako podruje
dohvata potrebno je od korisnika zatraiti dozvolu (npr. dozvola za dohvaanje podataka sa
zida, dozvola za itanje poruka iz inboxa). Pogledajmo primjer koji je koriten u aplikaciji
za statiko rangiranje podataka.
19

$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 pomou tokena.


$user = $facebook->api('/me');
$user = $facebook->api('/me/likes');

Ispis 4.2 Tokeni za pristup podatcima

Nakon to su podatci spremljeni u varijable nuno 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

20

Kada se u bazi nalaze podatci o nekoliko osoba moemo poeti s dohvaanjem podataka iz
baze i usporeivanjem. U ispisu (Ispis 4.5) usporeujemo lokaciju i fakultet korisnika i
njegovog prijatelja, dok u ispisu (Ispis 4.6) usporeujemo korisnikove lajkove i lajkove
njegovog prijatelja.

$data = mysql_query("SELECT * FROM $table")

or die(mysql_error());

$info = mysql_fetch_array( $data );

Ispis 4.4 Dohvaanje 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 teine

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 Usporeivanje lokacije i fakulteta

21

foreach( $korisnik as $key => $value){


$data = mysql_query("SELECT data_id FROM $table WHERE Kid=$key " )or
die(mysql_error());

//dohvaanje 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 Usporeivanje lajkova

4.1. Programski jezik PHP


PHP (Hypertext Preprocesor ) je objektno orijentiran skriptni jezik za dinamiko
generiranje web stranica. Drugim rijeima, PHP je jezik pomou kojeg je mogue kreirati
HTML stranicu na posluitelju prije nego to se ona, popunjena dinamikim sadrajem,
poalje klijentu. Ovim nainom generiranja sadraja klijent ne zna to se dogaa na
posluitelju, ve moe vidjeti samo rezultat rada aplikacije u obliku HTML koda. PHP je
jedan od najpopularnijih i najmonijih skriptnih jezika trenutno na tritu. Broj siteova koji
koriste PHP raste iz dana u dan, a broj tvrtki koje ele primijeniti PHP na svojim siteovima
je jo vei. PHP je izvrstan jer pomou njega s nevjerojatnom lakoom mogue stvoriti
opirnu web aplikaciju s velikim koliinama podataka. Jezik je otvorenog koda to znai da
svatko tko eli moe skinuti izvorne PHP kodove pisane u C-u i, ukoliko ih razumije, moe
ih mijenjati po svojoj volji te dodavati nove funkcije. Prednost PHP-a nad ostalim jezicima
jest njegova podrka za baratanje irokom paletom baza podataka. Podrava sve
popularnije baze podataka kao to su MySQL, PostgreSQL, dBase ili Oracle. Sintaktiki je
slian drugim jezicima poput C-a ili Perla, te je bogat funkcijama za manipuliranje mnogo

22

razliitih tipova sadraja 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 posluitelj baza podataka. Drugim rijeima, radi se o softveru kojem se moe
pristupiti preko mree na slian nain kao i web posluiteljima, s tom razlikom da se
MySQL-u obino pristupa pomou korisnikog imena i lozinke [12]. Baze MySQL su
relacijskog tipa, koji se pokazao kao najbolji nain skladitenja i pretraivanja velikih
koliina podataka. U sutini predstavljaju osnovu svakog informacijskog sustava, tj. temelj
svakog poslovnog subjekta koji svoje poslovanje bazira na dostupnosti kvalitetnih i brzih
informacija.

23

5. Scenarij

koritenja

aplikacije

za

statiko

rangiranje prijatelja
U scenariju prikazan je primjer koritenja aplikacije za statiko rangiranje prijatelja u
drtevoj mrei Facebook koja je izraena u sklopu ovog zavrnog rada.
Ako korisnik ima velik broj prijatelja u svojoj drutvenoj mrei, a eli saznati s kim ima
najvie zajednikih interesa u podruju glazbe, filmova i literature pokrenuti e ovu
aplikaciju i dobiti odgovor na svoje pitanje.
Korisnik za poetak 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 poetna stranica na kojoj korisnik moe odabrati eli li
rangiranje u Facebook ili Twitter mrei (Slika 5.1).

Slika 5.1 Poetna stranica

Odabirom rangiranja u Facebook mrei otvara se novi prozor u kojem korisnik bira eli li
statiko ili dinamiko rangiranje (Slika 5.2).

24

Slika 5.2 Odabir vrste rangiranja

Odabirom statikog 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 izvri svoj posao i rangira
prijatelje iz baze na nain prikazan na slici (Slika 5.4).

25

Slika 5.4 Rezultati rangiranja

26

Zakljuak
Osnovna zadaa preporuiteljskih sustava na Internetu jest olakavanje korisnicima da
donesu odluku o odabiru

unutar velikih i sloenih skupova podataka. Kada se

preporuiteljski sustavi integriraju u drutvene mree postoji mnogo podruja primjene jer
se drutvene mree sastoje od velike koliine informacija. U ovom radu obraena je jedna
mogunosti integracije razvojem aplikacije koja rangira prijatelje u drutvenoj mrei
Facebook te ih na taj nain i preporuuje. Iako aplikacije ove vrste ve postoje, razvijena
aplikacija u jednom pogledu razlikuje se od ostalih. Naime, najei nain rangiranja
prijatelja izvodi se na temelju koliine interakcije s korisnikom pa rezultate takve analize
korisnik moe predvidjeti. Aplikacija razvijena u ovom zavrnom radu rangira korisnikove
prijatelje na temelju njihovih zajednikih interesa pa bi ovakva analiza mogla korisniku
dati neoekivane rezultate. Upravo su razliitost i inovativnost oni faktori koji izdvajaju
aplikaciju od drugih te ju na taj nain ine dobrim materijalom za razvoj i primjenu.
Budui da su danas drutvene mree 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 mogue ju je unaprijediti na


nekoliko naina. Prvenstveno, mogue je poboljati algoritam raunanja teina koji za sada
linearno poveava teine za svaki zajedniki interes korisnika i njegovog prijatelja.
Poboljanje je mogue izvesti pribliavajui algoritam raunanja algoritmima iz hibridnih
preporuiteljskih sustava. Zatim, mogue je ubrzati proces izvoenja aplikacije
optimizacijom koda jer je za sada relativno spor. Na kraju, mogue je dodati detaljnije
informacije u ispisu analize slinosti poput popisa zajednikih predmeta interesa.

27

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, Sveuilite u


Zagrebu, Fakultet Elektrotehnike i Raunarstva, Zagreb 2010

[4]

A. Jandras, Postupci preporuivanja i preporuiteljski sustavi, Diplomski seminar,


Sveuilite u Zagrebu, Fakultet Elektrotehnike i Raunarstva, Zagreb 2011

[5]

M. Augustinovi, Preporuivanje zasnovano na drutvenoj umreenosti korisnika


Zavrni rad, Sveuilite u Zagrebu, Fakultet Elektrotehnike i Raunarstva, 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, Facebooks new Recommendations feature for pages, June
2011, web-izvor: https://www.facebook.com/notes/hyperarts-web-design/facebooksnew-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, 5774.

[10] M. itum, Rangiranje prijatelja u drutvenoj mrei Facebook zasnovano na


korisnikim akcijama, Zavrni rad, Sveuilite u Zagrebu, Fakultet Elektrotehnike i
Raunarstva, Zagreb 2012
[11] Z. Matoevi, Rangiranje prijatelja u web-zasnovanoj drutvenoj mrei, Zavrni
rad, Sveuilite u Zagrebu, Fakultet Elektrotehnike i Raunarstva, 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

28

Saetak
Ovaj rad obrauje temu rangiranja prijatelja u drutvenoj mrei Facebook koje je
zasnovano na korisnikim profilima. Na poetku rada definirani su preporuiteljski sustavi
te su navedeni primjeri njihove primjene. Zatim je opisano preporuivanje u drutvenim
mreama s naglaskom na preporuivanje u Facebooku. Objanjeno je i rangiranje kao
podvrsta preporuivanja. Opisan je model, algoritam raunanja teina i nain izvedbe
aplikacije razvijene u svrhu ovog rada. Programska izvedba aplikacije objanjena je uz
pomo kljunih djelova koda. Na kraju dan je scenarij i uputstva za upotrebu aplikacije.

29

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.

30

Skraenice
PHP

Hypertext Preprocessor

hipertekstualni skriptni jezik

API

Application Programming Interface

aplikacijsko programsko suelje

HTML

Hypertext Markup Language

hipertekstualni jezik za oznaavanje

HTTP

HyperText Transfer Protocol

protokol za prijenos informacija na


webu

31

Privitak A: Upute za pokretanje aplikacije


U privitku biti e opisano pokretanje aplikacije na posluitelju gdje se moe manipulirati i
bazom podataka.
Za poetak potrebno je instalirati programski paket XAMPP koji slui za imitiranje
posluitelja, ali na lokalnom raunalu. Programski paket sadri Apache, MySQL, Mercury
i Tomcat od kojih e nam biti potrebne samo prve dvije tehnologije. Kada instaliramo
XAMPP potrebno je pokrenuti web-posluitelj 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 pronai direktorij naziva xampp, zatim unutar njega direktorij
htdocs u koji je potrebno spremiti sve *.html i *.php datoteke koje se nalaze na priloenom
CD-u. Sljedei korak jest pokretanje web-klijenta tj. preglednika u koji upiemo adresu
http://localhost/index.html. Ovim korakom aplikacija je pokrenuta.

32

You might also like