35
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.

Zavrsni Rad - Vanda Viljanac

Embed Size (px)

DESCRIPTION

fb

Citation preview

Page 1: Zavrsni Rad - Vanda Viljanac

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.

Page 2: Zavrsni Rad - Vanda Viljanac
Page 3: Zavrsni Rad - Vanda Viljanac

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

Page 4: Zavrsni Rad - Vanda Viljanac

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.

Page 5: Zavrsni Rad - Vanda Viljanac

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.

Page 6: Zavrsni Rad - Vanda Viljanac

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.

Page 7: Zavrsni Rad - Vanda Viljanac

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

Page 8: Zavrsni Rad - Vanda Viljanac

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.

Page 9: Zavrsni Rad - Vanda Viljanac

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

Page 10: Zavrsni Rad - Vanda Viljanac

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).

Page 11: Zavrsni Rad - Vanda Viljanac

8

Slika 1.2 Usluga Googleove tražilice „Did you mean“

Page 12: Zavrsni Rad - Vanda Viljanac

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].

Page 13: Zavrsni Rad - Vanda Viljanac

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

Page 14: Zavrsni Rad - Vanda Viljanac

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š“

Page 15: Zavrsni Rad - Vanda Viljanac

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

Page 16: Zavrsni Rad - Vanda Viljanac

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

Page 17: Zavrsni Rad - Vanda Viljanac

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).

Page 18: Zavrsni Rad - Vanda Viljanac

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

Page 19: Zavrsni Rad - Vanda Viljanac

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.

Page 20: Zavrsni Rad - Vanda Viljanac

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

Page 21: Zavrsni Rad - Vanda Viljanac

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

Page 22: Zavrsni Rad - Vanda Viljanac

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.

Page 23: Zavrsni Rad - Vanda Viljanac

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

Page 24: Zavrsni Rad - Vanda Viljanac

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

Page 25: Zavrsni Rad - Vanda Viljanac

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

Page 26: Zavrsni Rad - Vanda Viljanac

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.

Page 27: Zavrsni Rad - Vanda Viljanac

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).

Page 28: Zavrsni Rad - Vanda Viljanac

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).

Page 29: Zavrsni Rad - Vanda Viljanac

26

Slika 5.4 Rezultati rangiranja

Page 30: Zavrsni Rad - Vanda Viljanac

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.

Page 31: Zavrsni Rad - Vanda Viljanac

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

Page 32: Zavrsni Rad - Vanda Viljanac

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.

Page 33: Zavrsni Rad - Vanda Viljanac

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.

Page 34: Zavrsni Rad - Vanda Viljanac

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

Page 35: Zavrsni Rad - Vanda Viljanac

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.