Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si...

114

Transcript of Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si...

Page 1: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

Università degli Studi di Messina

Dipartimento di Matematica e Informatica

Corso di Laurea Triennale in Informatica

Analisi delle interazioni tra utenti in

gruppi di Facebook

Laureando: Relatore:

Giovanni Rizzotti Prof. Dott. Giacomo Fiumara

Anno Accademico 2012/2013

Page 2: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

Indice

1 Le Reti Sociali 71.1 La Rete Sociale . . . . . . . . . . . . . . . . . . . . . . . . . . 71.2 Elementi della Rete Sociale . . . . . . . . . . . . . . . . . . . 81.3 Numero di Dunbar . . . . . . . . . . . . . . . . . . . . . . . . 81.4 Densità di una rete . . . . . . . . . . . . . . . . . . . . . . . . 91.5 Social Network o Social Media? . . . . . . . . . . . . . . . . . 9

2 Teoria dei Gra� 112.1 Descrizione del Grafo . . . . . . . . . . . . . . . . . . . . . . . 112.2 De�nizioni matematiche . . . . . . . . . . . . . . . . . . . . . 122.3 Tipologie di Grafo . . . . . . . . . . . . . . . . . . . . . . . . 13

2.3.1 Grafo Orientato . . . . . . . . . . . . . . . . . . . . . . 132.3.2 Grafo Non Orientato . . . . . . . . . . . . . . . . . . . 152.3.3 Grafo Pesato . . . . . . . . . . . . . . . . . . . . . . . 16

2.4 Applicazioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172.5 Rappresentazione di un Grafo . . . . . . . . . . . . . . . . . . 17

2.5.1 Liste di Adiacenza . . . . . . . . . . . . . . . . . . . . 182.5.2 Matrici di Adiacenza . . . . . . . . . . . . . . . . . . . 19

2.6 Cammini e Cicli . . . . . . . . . . . . . . . . . . . . . . . . . . 202.6.1 Ciclo Hamiltoniano . . . . . . . . . . . . . . . . . . . . 21

2.7 Gra� connessi . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

3 Le Reti Complesse 233.1 Metriche e Misure di Centralità . . . . . . . . . . . . . . . . . 25

3.1.1 Degree Distribution . . . . . . . . . . . . . . . . . . . . 253.1.2 Centrality . . . . . . . . . . . . . . . . . . . . . . . . . 263.1.3 Degree centrality . . . . . . . . . . . . . . . . . . . . . 273.1.4 Closeness centrality . . . . . . . . . . . . . . . . . . . . 293.1.5 Betweenness centrality . . . . . . . . . . . . . . . . . . 303.1.6 Coe�ciente di Clustering . . . . . . . . . . . . . . . . . 313.1.7 Eccentricity . . . . . . . . . . . . . . . . . . . . . . . . 32

1

Page 3: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

3.1.8 Modularity (Community Detection) . . . . . . . . . . . 333.2 Tipologie di Reti Complesse . . . . . . . . . . . . . . . . . . . 34

3.2.1 Scale-Free Networks . . . . . . . . . . . . . . . . . . . 343.2.2 Grafo Random . . . . . . . . . . . . . . . . . . . . . . 373.2.3 Modello Erd®s-Rènyi . . . . . . . . . . . . . . . . . . . 383.2.4 Six Degrees of Separation . . . . . . . . . . . . . . . . 403.2.5 Small-World Networks . . . . . . . . . . . . . . . . . . 41

4 Facebook 464.0.6 I Gruppi . . . . . . . . . . . . . . . . . . . . . . . . . . 47

4.1 Facebook Development . . . . . . . . . . . . . . . . . . . . . . 484.1.1 SDK . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494.1.2 Le Applicazioni . . . . . . . . . . . . . . . . . . . . . . 504.1.3 FQL (Facebook Query Language) . . . . . . . . . . . . 524.1.4 Permessi . . . . . . . . . . . . . . . . . . . . . . . . . . 554.1.5 Access Tokens . . . . . . . . . . . . . . . . . . . . . . . 56

5 Progetto 585.1 Obiettivi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585.2 Strumenti di progettazione . . . . . . . . . . . . . . . . . . . . 59

5.2.1 Linguaggi di Programmazione . . . . . . . . . . . . . . 595.2.2 DBMS . . . . . . . . . . . . . . . . . . . . . . . . . . . 615.2.3 GraphML (Graph Markup Language) . . . . . . . . . . 62

5.3 L'Applicazione Facebook . . . . . . . . . . . . . . . . . . . . . 635.3.1 Access Token . . . . . . . . . . . . . . . . . . . . . . . 64

5.4 Script PHP per l'acquisizione dei dati . . . . . . . . . . . . . . 645.4.1 L'esecuzione con Cron . . . . . . . . . . . . . . . . . . 70

5.5 Schema Entity-Relationship del database . . . . . . . . . . . . 705.6 Script PHP per la veri�ca dei dati acquisiti . . . . . . . . . . . 715.7 Estrazione dati e statistiche . . . . . . . . . . . . . . . . . . . 73

5.7.1 GraphML . . . . . . . . . . . . . . . . . . . . . . . . . 77

6 Analisi 806.1 Gra� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 846.2 Metriche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 936.3 Andamento temporale post e commenti . . . . . . . . . . . . . 1006.4 Tipologia di allegati . . . . . . . . . . . . . . . . . . . . . . . . 103

7 Conclusioni e Sviluppi Futuri 105

2

Page 4: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

8 Bibliogra�a e Sitogra�a 1088.1 Le Reti Sociali . . . . . . . . . . . . . . . . . . . . . . . . . . . 1088.2 Teoria dei gra� . . . . . . . . . . . . . . . . . . . . . . . . . . 1098.3 Reti complesse . . . . . . . . . . . . . . . . . . . . . . . . . . 1098.4 Facebook . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1128.5 Progetto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112

3

Page 5: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

Introduzione

Parte della disumanità del computer sta nel fatto

che, una volta programmato e messo in funzione,

si comporta in maniera perfettamente onesta.

Isaac Asimov, Il vento è cambiato, 1983

Questo progetto di Tesi si pone l'obiettivo di analizzare le interazioni che

avvengono tra gli utenti iscritti a dei gruppi chiusi all'interno di Facebook.

Facebook è un social network che sta prendendo sempre più piede e conta

oltre 1.20 miliardi di utenti attivi. Il proliferare di questo e di altri servizi

di social network, fa sì che le persone possano comunicare ed interagire tra

loro in enormi comunità virtuali e che l'analisi delle reti sociali possa essere

estesa anche a questa tipologia di comunità.

Facebook mette a disposizione dell'utente, tra le tante cose, i gruppi cioè dei

luoghi virtuali all'interno dei quali è possibile condividere interessi comuni e

interagire grazie a due strumenti principali: i post ed i commenti. I gruppi

di Facebook possono essere di tre tipologie: Aperto, Chiuso o Privato; molto

semplicemente, i contenuti di un gruppo aperto possono essere visionati an-

che dai non iscritti al gruppo, mentre i contenuti dei gruppi di tipo chiuso e

privato sono fruibili dai soli iscritti.

4

Page 6: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

Sono stati presi in esame quattro gruppi che di�eriscono per tematiche

discusse, numero di iscritti ed intensità dell'attività. Per poter procedere

con l'analisi delle interazioni tra gli utenti e dell'attività nei di�erenti gruppi,

è stato necessario acquisire e memorizzare i vari post e commenti presenti

all'interno dei vari gruppi.

L'interfacciamento a Facebook è avvenuto attraverso delle API messe a di-

sposizione da Facebook stesso che permettono l'utilizzo di diverse funzionalità

legate al social network; avendo necessità di prelevare i dati dai gruppi è sta-

to utilizzato l'FQL, un linguaggio di interrogazione che permette appunto di

interrogare il database di Facebook per ottenere alcune informazioni riguar-

do i post ed i commenti presenti sul social network. I dati così estratti sono

trattati e successivamente memorizzati all'interno di un database personale.

Il passo successivo è stato quello di sviluppare un applicativo che consentisse

l'interrogazione del database personale al �ne di estrarre dei dati, trattarli e

produrre alcuni �le necessari per le operazioni di analisi.

L'analisi dei dati ha permesso di dimostrare come non sempre i gruppi siano

luogo di socializzazione tra utenti, poiché ci si ritrova con un numero elevato

di componenti che evidenziano una frammentazione nelle interazioni ed, in

certi casi, una totale assenza di interazione.

Il resto di questa Tesi è organizzato come segue.

Nel corso del primo capitolo si presentano le Reti Sociali e l'analisi delle

reti sociali; nel secondo si passa alla descrizione della teoria dei gra� : cosa

sia un grafo, le tipologie di gra� e le diverse metodologie di rappresentazione

dei gra�.

Nel capitolo 3 vi è una discussione sulle Reti Complesse: dalle metriche alle

varie tipologie di reti complesse.

5

Page 7: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

Il capitolo 4 è dedicato, dopo una piccola introduzione a Facebook, alla descri-

zione dello sviluppo con Facebook: gli SDK, le API, le applicazioni, l'FQL

ed i vari metodi di accesso.

Nel capitolo 5 si discute sul progetto vero e proprio: gli obiettivi, un dia-

gramma di sequenza, gli strumenti di progettazione, la descrizione dei vari

script PHP, dell'applicativo che interroga il database personale succitato e

delle varie query utilizzate.

Nel capitolo 6 sono presenti i risultati dell'analisi, corredati da gra�, gra�ci

e tabelle.

Le conclusioni e gli sviluppi futuri concludono la Tesi.

6

Page 8: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

Capitolo 1

Le Reti Sociali

L'Analisi delle Reti Sociali (Social Network Analysis) è una metodologia di

analisi che si occupa dello studio delle reti sociali e si fonda sull'idea in base

alla quale è possibile considerare la società come un intreccio complesso di

relazioni sociali strutturate. È proprio quest'intreccio a costituire il punto

focale dell'analisi poiché ogni fenomeno sociale può essere visto in termini

relazionali e strutturali, a patto di esprimerlo in termini di attori e relazioni

tra questi attori.

Attualmente l'Analisi delle Reti Sociali trova applicazione in diverse scienze

sociali (la sociologia, la psicologia, l'economia) e nei campi �sico, biochimico

e genetico.

1.1 La Rete Sociale

La Rete Sociale (Social Network) è costituita da attori sociali e relazioni

de�nite tra tali attori; è dunque possibile de�nire la Rete Sociale come una

struttura di relazioni le cui caratteristiche possono essere usate per spiegare

il comportamento delle persone che costituiscono la rete stessa.

7

Page 9: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

Figura 1.1: Esempio di una Rete Sociale

1.2 Elementi della Rete Sociale

Gli elementi che costituiscono una Rete Sociale sono:

� Nodi: possono essere singoli individui, gruppi, istituzioni, luoghi;

� Relazioni: legano i soggetti che compongono la rete e sono rappresen-

tate gra�camente mediante linee, frecce o archi. Le relazioni possono

essere: reciproche, simmetriche, asimmetriche.

1.3 Numero di Dunbar

Nelle reti sociali vale il principio del numero di Dunbar, conosciuto anche

come la regola dei 150. Il principio a�erma che le dimensioni di una rete

sociale in grado di sostenere relazioni stabili sono limitate a circa 150 membri.

Questo numero è stato calcolato attraverso studi di sociologia e soprattutto

di antropologia, in relazione alla dimensione massima di un ecovillaggio.

Nella psicologia evoluzionista si ipotizza che tale numero possa costituire un

limite per abilità media degli esseri umani di riconoscere dei membri e tenere

traccia degli avvenimenti emotivi di tutte le persone di un gruppo. Secondo

8

Page 10: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

altri è il numero massimo di abitanti di un villaggio al di sopra del quale si

sviluppano fenomeni di parassitismo sociale.

1.4 Densità di una rete

Ogni rete sociale, esprimibile mediante un grafo, è caratterizzata da una

densità. Dato che nel grafo i nodi identi�cano gli individui e gli archi i legami

che si instaurano tra essi, la densità di una rete rende un'idea di quanto sia

e�ciente l'interscambio relazionale tra i vari elementi della rete.

Una densità della rete pari ad uno indica che tutti gli elementi della rete

instaurano legami tra loro; in caso contrario, si ha una densità pari a zero

(assenza di comunicazione/relazione).

L'analisi delle reti sociali ha evidenziato come le reti piccole e dense risultano

talvolta meno utili di reti più ampie e con legami deboli, poiché queste ultime

si presterebbero meglio allo scambio di nuove idee e opportunità, favorendo

in questo modo i processi di innovazione.

1.5 Social Network o Social Media?

Spesso si fa confusione tra Social Network e Social Media. Mentre il primo è

un concetto teorico che descive delle relazioni, i Social Media sono un modo

per condividere contenuti con un vasto pubblico. In altri termini, è possibile

de�nire un Social Media come un gruppo di applicazioni basate sul Web

che permettono lo scambio e la creazione di contenuti generati dagli utenti.

Inoltre, i Social Media sono la piattaforma digitale nella quale nascono e

crescono le community, un insieme di persone con interessi o valori comuni

che si incontrano online per pensare e condividere insieme.

9

Page 11: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

Secondo i professori Andreas Kaplan e Michael Haenlein, esistono sei tipi di

social media:

� Blog e microblog (es. Twitter);

� Siti di social networking (es. Facebook);

� Mondi virtuali di gioco (es. World of Warcraft);

� Mondi virtuali sociali (es. SecondLife);

� Progetti collaborativi (es. Wikipedia);

� Content communities: comunità che condividono materiale multi-

mediale, ad esempio YouTube.

Figura 1.2: Social Media

10

Page 12: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

Capitolo 2

Teoria dei Gra�

In matematica ed in Informatica la teoria dei gra� si occupa di problemi che

possono essere rappresentati mediante gra�ci in cui compaiono punti (nodi)

e linee che congiungono i punti (archi). Attraverso i gra� è possibile sche-

matizzare situazioni e processi per consentirne l'analisi.

Il primo testo che prende in considerazione i gra� come entità matematiche

è la pubblicazione di Eulero sui �Sette ponti di Königsberg�. Nella secon-

da metà del XX secolo gli studi e i risultati si sono sviluppati ampiamente

in contemporanea allo sviluppo del calcolo automatico. L'introduzione del

computer ha consentito lo sviluppo di indagini sperimentali sui gra� ed ha

richiesto alla teoria dei gra� di indagare su algoritmi e modelli di forte im-

patto applicativo.

Nel giro di cinquant'anni la teoria dei gra� si è molto sviluppata e trova

applicazione in diversi campi.

2.1 Descrizione del Grafo

Per grafo si intende una struttura costituita da:

11

Page 13: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

� oggetti semplici, detti vertici o nodi;

� collegamenti tra i vertici che possono essere:

� orientati (archi), il grafo è detto orientato;

� non orientati (spigoli o edges), il grafo è detto non orientato;

Generalmente un grafo è ra�gurato da punti che rappresentano nodi e

segmenti o curve che rappresentano gli archi o gli spigoli e collegano i nodi.

Il posizionamento dei nodi e la forma degli archi o spigoli è irrilevante; infatti

lo stesso grafo può essere disegnato in diversi modi senza che le sue proprietà

vengano modi�cate.

Figura 2.1: Esempio di Grafo con 6 nodi e 5 Archi

2.2 De�nizioni matematiche

Più formalmente, è possibile de�nire grafo una coppia G = (V, E) di in-

siemi, dove V è l'insieme dei nodi (o vertici) v1 . . . vn, ed E l'insieme degli

archi (o spigoli) e1 . . . en; due vertici v1, v2 connessi da un arco e1 prendono

nome di estremi dell'arco che viene anche identi�cato con la coppia formata

dai suoi estremi (v1, v2).

12

Page 14: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

Si ha un grafo semplice se il grafo è sprovvisto di multiarchi; in caso con-

trario si ha un multigrafo.

Il numero di archi incidenti in un vertice v ∈ V costituisce il Grado di v. Il

Grado massimo di G è il grado del vertice di G con il maggior numero di

archi incidenti mentre il Grado minimo di G è il grado del vertice di G

che ha meno archi incidenti. Quando il grado massimo ed il grado minimo

coincidono con un numero k, si ha un Grafo Regolare.

2.3 Tipologie di Grafo

Esistono varie tipologie di grafo:

� Grafo Orientato

� Grafo Non Orientato

� Grafo Pesato

2.3.1 Grafo Orientato

Un grafo G = (V,E) è orientato se le coppie di nodi sono ordinate.

Viene de�nito un insieme G = (V, E), dove V è l'insieme dei vertici di G,

mentre E è l'insieme degli archi orientati di G.

La Figura 2.2 mostra un grafo orientato, dove l'arco ei si dice uscente da vh

ed entrante in vk.

Un arco orientato è caratterizzato da un verso.

2.3.1.1 De�nizioni Base

� Dato V=v1...vn, l'insieme degli archi orientati E = e1, . . . , en, è formato

da coppie ordinate di nodi;

13

Page 15: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

Figura 2.2: Esempio di Grafo Orientato

� In particolare, è composto da una testa (rappresentata solitamente dal-

la punta di una freccia), che raggiunge un vertice in entrata, e una coda,

che lo lascia in uscita;

� Detto (u, v) un arco di un grafo orientato, si dice che:

� l'arco esce dal vertice u;

� l'arco entra nel vertice v;

� In un grafo orientato gli archi possono essere percorsi in un solo verso.

2.3.1.2 Grado di un grafo orientato

In un grafo orientato il grado uscente di un vertice è il numero di archi uscenti

dal vertice. Nel caso dei gra� orientati si distinguono il grado entrante di

un vertice v ed il grado uscente (rispettivamente de(v) e du(v)): il primo è

dato dal numero di spigoli entranti in v, mentre il secondo è dato dal numero

di spigoli uscenti. In un grafo orientato una sorgente è un vertice il cui

grado entrante è nullo.

14

Page 16: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

La connessione V (vi, vj) non ha lo stesso signi�cato della connessione V (vj, vi),

essendo presente una relazione d'ordine dei vertici collegati.

2.3.2 Grafo Non Orientato

Gli elementi dell'insieme E sono coppie non ordinate di elementi di V. Ogni

arco non orientato di G corrisponde ad una coppia non ordinata di nodi di

G con ek = (vi, vj).

La presenza di un arco tra una coppia di nodi indica una relazione tra i nodi

stessi.

Figura 2.3: Esempio di Grafo non Orientato

In un grafo non orientato, G è un insieme di vertici e archi dove la

connessione V (vi, vj) ha lo stesso signi�cato della connessione V (vj, vi).

2.3.2.1 De�nizioni Base

� Se e ∈ E(G) ed e = (u, v), con u, v ∈ V (G), allora si dice che i vertici

u e v sono tra loro adiacenti e costituiscono gli estremi dello spigolo e;

� Se per ogni coppia di vertici u, v ∈ V (G) esiste al piú un solo spigolo

(u, v) ∈ E(G), allora il grafo G è semplice.

15

Page 17: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

� un arco (v, v) è de�nito come loop;

2.3.2.2 Grado di un Grafo non orientato

Un arco (u, v) di un un grafo non orientato si dice che è incidente sui vertici

v e u; In un grafo non orientato, il grado di un vertice v, detto d(v), (dove d

stà per degree), è dato dal numero di archi incidenti su di esso;

se d(v) = 0 allora v è un vertice isolato, mentre se d(v) = n..1 (v è adiacente

ad ogni altro vertice del grafo), v è universale.

2.3.3 Grafo Pesato

Un grafo pesato è una struttura cui vengono associati dei pesi ad ognuno

dei suoi vertici o ad ognuno dei suoi archi.

Figura 2.4: Esempio di Grafo Pesato e Orientato

Il peso è un'informazione o dato che può essere di vario tipo (numerico,

alfabetico etc..); esiste una funzione peso che associa ad un arco un valore

w : E → R, ovvero un arco (u, v) ha peso w(u, v).

16

Page 18: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

Il grafo è detto pesato se ad ogni arco viene associato un numero reale (peso),

il cui criterio di scelta dipende dal caso di utilizzo del grafo. Un grafo privo

di questo dato viene de�nito come semplice e non pesato. Il grafo pesato

può essere sia orientato (diretto), che non orientato (non diretto).

Esempio: in una rete stradale, ogni tratta viene de�nita come un arco da un

punto di partenza ad un punto di destinazione, in questo caso si potrebbe

associare un peso ad ogni tratta che ne rappresenta la distanza.

2.4 Applicazioni

In informatica, i gra� vengono utilizzati per schematizzare programmi, cir-

cuiti, mappe di siti e reti di computer.

Ad esempio, la struttura dei link delle pagine Web, come tutti gli ipertesti,

può essere rappresentata da un grafo orientato, dove i vertici sono le pagine

e gli archi rappresentano un link tra una pagina e l'altra.

I gra� orientati sono anche utilizzati per rappresentare le macchine a stati

�niti, diagrammi di �usso, schemi entità-relazione, reti di Petri etc.

Un grafo può essere esteso assegnando un peso a ciascun arco del grafo: in

questo caso si parla di gra� pesati (weighted), utilizzati per rappresentare le

strutture in cui le connessioni a due a due hanno alcuni valori numerici.

2.5 Rappresentazione di un Grafo

Vi sono diversi modi per rappresentare un grafo:

� Liste di Adiacenza;

� Matrici di Adiacenza;

17

Page 19: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

2.5.1 Liste di Adiacenza

Una tecnica per la rappresentazione dei gra� molto utilizzata in informatica

prevede l'utilizzo di n liste L1, . . . , Ln di vertici, denominate liste di adiacenza

del grafo G.

Per ogni vertice vi ∈ V (G) vengono memorizzati i suoi vertici adiacenti nella

lista Li. Si rappresenta un grafo G = (V,E) con un vettore Adj di liste, cioè

una lista per ogni vertice del grafo. Per ogni vertice u, Adj[u] contiene tutti

i vertici v adiacenti ad u, ovvero quei vertici v tali per cui esiste un arco

(u, v) ∈ E.

Figura 2.5: Esempio di Lista di adiacenza

Nel caso di Gra� pesati, si memorizza il peso w(u, v) insieme al vertice v

nella lista per il vertice u.

2.5.1.1 Vantaggi

In generale la rappresentazione con liste di adiacenza è preferibile a quella me-

diante matrici di adiacenza perchè più compatta e consente di implementare

algoritmi più e�cienti dal punto di vista della complessità computazionale.

18

Page 20: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

2.5.1.2 Svantaggi

Con una rappresentazione del grafo mediante liste di adiacenza è necessario

scorrere tutte le liste di adiacenza di ogni vertice del grafo per contare in quali

di queste liste è presente il vertice v. Nel caso peggiore, quando il grafo è

completo e il vertice v è l'ultimo vertice di ogni lista, il numero di operazioni

complessive sarà dell'ordine di O(n2) e non più lineare.

2.5.2 Matrici di Adiacenza

Un grafo può essere rappresentato utilizzando una matrice.

Unamatrice di adiacenza è una matrice quadrata binariaM di ordine n = |V |

che ha come indici di righe e colonne i nomi dei vertici del grafo. Nella

posizione (i, j) della matrice si trova un 1 se e solo se esiste nel grafo un arco

che va dal vertice i al vertice j, altrimenti si trova uno 0.

Figura 2.6: Esempio di matrice di adiacenza

Se il grafo è non orientato, per de�nizione risulta (vi, vj) ∈ E(G) ⇔

(vj, vi) ∈ E(G), pertanto la matrice di adiacenza sarà simmetrica rispetto

alla diagonale principale.

Se ogni arco e = (u, v) ∈ E(G) del grafo è associato ad un peso w(u, v)

non nullo, allora è possibile modi�care la rappresentazione del grafo con una

19

Page 21: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

matrice di adiacenza in modo da poter tenere traccia anche dei pesi associati

agli archi ponendo: Mi,j = w(vi, vj) se (vi, vj) ∈ E e Mi,j = 0 altrimenti.

Nel caso di Gra� pesati, il peso viene memorizzato nell'elemento Mi,j, so-

stituendolo al valore 1, altrimenti se non esiste l'arco, all'elemento viene

assegnato valore 0. Ad esempio se l'insieme dei vertici del grafo rappresen-

ta una serie di punti su una carta geogra�ca, il peso degli archi può essere

interpretato come la distanza dei punti che questi connettono.

2.5.2.1 Vantaggi

� La rappresentazione con matrice di adiacenza è semplice;

� Se il grafo è piccolo non vi è sostanziale di�erenza di e�cienza con la

rappresentazione tramite liste di adiacenza.

Solitamente si preferisce la rappresentazione con liste di adiacenza perché,

quando il grafo è sparso, fornisce una rappresentazione compatta del grafo.

Se invece il grafo è denso, la matrice di adiacenza può essere preferita perché

è più rapido accedere alle informazioni in essa contenute.

2.6 Cammini e Cicli

Un cammino p dal vertice u al vertice v sul grafo G = (V,E) è una suc-

cessione di vertici p = (wi,1 , wi,2 , ...., wi,k ) tali che u = wi,1 , v = wi,k e

(wh, wh + 1) ∈ E(G) per ogni h = 1, 2, ...., k − 1.

La lunghezza del cammino è il suo numero di archi.

Un cammino, tale che tutti i nodi ed archi che lo compongono siano distinti,

viene de�nito semplice. In generale si indica con Pk il cammino semplice di

lunghezza k − 1 con k vertici.

20

Page 22: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

Un ciclo Ck è un cammino (wi,1, wi,2, ...., wi,k, wi,k+1) in cui wi,1 = wi,k+1; con

la notazione Ck si indica un ciclo semplice, composto da k vertici distinti e

da k archi.

Figura 2.7: Esempio di Cammino e Ciclo in un grafo

2.6.1 Ciclo Hamiltoniano

I cammini hamiltoniani prendono il nome da William Rowan Hamilton che

inventò un gioco da tavolo (il puzzle di Hamilton o icosian game) che consi-

steva nel trovare un cammino chiuso sul bordo di un dodecaedro.

Un cammino in un grafo (orientato o non orientato) è detto hamiltoniano

se tocca tutti i vertici del grafo una e una sola volta.

La determinazione di un cammino hamiltoniano è la ricerca di una permuta-

zione (p0, p1, ..., pn−1) dei nodi tale che (pi, pi+1) ∈ E per ogni 0 ≤ i ≤ n− 2

dove E rappresenta l'insieme di archi del Grafo.

Si ha un ciclo hamiltoniano quando in un cammino hamiltoniano esiste un

arco che collega l'ultimo vertice con il primo, in maniera tale da realizzare

un ciclo che visita tutti i vertici per poi ritornare al punto di partenza.

Un grafo viene detto Hamiltoniano se contiene almeno un ciclo hamiltoniano.

È opportuno osservare che non tutti i gra� contengono un cammino hamil-

toniano.

21

Page 23: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

Figura 2.8: Esempio di Ciclo Hamiltoniano

2.7 Gra� connessi

Un grafo non orientato G si dice connesso se per ogni coppia di vertici

u, v ∈ V (G) esiste un cammino p di u, v che li collega.

In un grafo orientato G due vertici u, v2 ∈ (G) si dicono fortemente connessi

se in G esistono due cammini p1 di u, v e p2 di v, u; se questi cammini non

esistono, ma i due vertici sono connessi da un cammino nel corrispondente

grafo non orientato, allora i due vertici si dicono debolmente connessi.

22

Page 24: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

Capitolo 3

Le Reti Complesse

Una semplice de�nizione di rete potrebbe essere: �Intreccio di linee, reali o

ideali, che s'incrociano, cui ci si riferisce per indicare un sistema di collega-

menti o di comunicazioni oppure una struttura complessa articolata in più

punti� (Dizionario Italiano Devoto Oli).

Negli ultimi anni però, il termine ha assunto signi�cati più vasti ed una più

grande importanza rispetto alla de�nizione semplicistica succitata.

Gli studi sui diversi tipi di rete (reti sociali, reti fra aziende, reti telematiche,

reti biologiche, reti di trasporto, etc.), ed il fatto che queste reti sembrano

avere caratteristiche in comune, ne permettono la comprensione, l'analisi e

la previsione di comportamenti.

Fisici, matematici, sociologi ed economisti si impegnano sempre più per af-

�nare i risultati delle ricerche nel campo delle reti perché, in un mondo che

diventa sempre più �connesso�, è importante capire i meccanismi che per-

mettono una trasmissione e�ciente delle informazioni e cosa può rendere

vulnerabile una rete.

Lo studio delle reti complesse può essere considerato come una nuova di-

sciplina scienti�ca che trova applicazione nei più svariati campi: reti neurali,

modelli di tra�co, intelligenza arti�ciale, organismi biologici, Internet ecc.

23

Page 25: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

Figura 3.1: Esempio di Rete Complessa

Grazie all'avvento di tecnologie informatiche più potenti, è stato possibile

e�ettuare con maggiore facilità simulazioni più complete e la comprensione

di tali modelli ha consentito studi sempre più approfonditi.

Un modo e�ciente per studiare un sistema complesso è quello di scomporlo

in parti più semplici, comprenderne il funzionamento e poi cercare di ricom-

porre il sistema originale.

Molti sistemi complessi possono essere rappresentati in termini di reti di ele-

menti che interagiscono: è quindi possibile applicare lo studio delle reti.

Come già detto, esistono diverse tipologie di reti, ma essenzialmente sono

tutte caratterizzate da un insieme di nodi e di connessioni tra i nodi. Le in-

terazioni fra i nodi attraverso le connessioni costituiscono il comportamento

globale del sistema. Il tipo ed il numero di nodi di una rete condizionano

molto il comportamento �nale del sistema, ma è molto importante, ai �ni

24

Page 26: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

della comprensione del sistema, lo studio della topologia e della forma della

rete.

In de�nitiva, una rete complessa è una struttura di rete che presenta alcune

caratteristiche topologiche non immediatamente intuibili e solitamente non

presenti nelle reti semplici.

3.1 Metriche e Misure di Centralità

Le caratteristiche di una rete che consentono di valutarne le peculiarità

vengono de�nite metriche; le principali sono:

� Degree Distribution;

� Centrality;

� Clustering coe�cient.

3.1.1 Degree Distribution

Il grado distribuzione P (k) di una rete è una frazione dei nodi della rete con

grado k. Quindi, se ci sono n nodi in totale e nk di essi hanno grado k, si ha

P (k) = nk/n.

Il grado di distribuzione è molto importante nello studio delle reti reali come

Internet, delle reti sociali e delle reti teoriche.

Il modello più semplice di rete, il grafo random di Bernoulli, nel quale n

nodi possono essere collegati con probabilità indipendente p (o 1−p), ha una

distribuzione binomiale di grado:

P (k) =

(n− 1

k

)pk(1− p)n−1−k

25

Page 27: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

de�nita come Distribuzione di Poisson nel caso di n molto grande.

Nella teoria delle probabilità la distribuzione di Poisson è una distribuzione

di probabilità discreta che esprime le probabilità per il numero di eventi che

si veri�cano, successivamente ed indipendentemente, in un dato intervallo di

tempo, sapendo che mediamente se ne veri�ca un numero λ. La distribuzione

di Poisson P (λ) è de�nita come:

P (n) = exp−λλn

n!

dove λ è il numero medio di eventi per intervallo di tempo, mentre n è il

numero di eventi per intervallo di tempo di cui si vuole la probabilità.

La maggior parte delle reti nel mondo reale ha però un grado di distribuzione

molto di�erente da questo; una grande quantità è altamente �right-skewed�

cioè la maggior parte dei nodi ha un basso grado, ma una piccola parte di

questi nodi, ha un alto grado. Alcune reti, come per esempio Internet ed

alcuni social networks, hanno un grado di distribuzione che segue approssi-

mativamente la seguente legge di potenza: P (k) ∼ k−y dove y è una costante.

Se la frequenza con cui si veri�ca un evento varia come potenza di un at-

tributo di tale evento, allora segue una legge di potenza cioè una relazione

matematica tra due quantità. Nel caso delle distribuzioni di probabilità, una

distribuzione che obbedisce alla legge di potenza è denominata power law

distribution.

3.1.2 Centrality

Nella teoria dei gra� e nell'analisi delle reti, la centralità di un nodo misura

la sua importanza all'interno di un grafo. Ad esempio, può indicare quanto

in�uente sia una persona all'interno di una rete sociale o quanto viene uti-

26

Page 28: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

Figura 3.2: Esempio di Degree Distribution

lizzata correttamente una strada in una rete urbana. I concetti di centralità

si sono sviluppati inizialmente nel campo dell'analisi delle reti sociali e molti

dei termini utilizzati per misurare la centralità ri�ettono la loro origine so-

ciologica.

Le principali misure di centralità ampiamente utilizzate per l'analisi delle reti

sociali sono:

� Degree centrality;

� Closeness centrality;

� Betweenness centrality.

3.1.3 Degree centrality

La degree centrality è de�nita come il numero totale di collegamenti (archi)

incidenti su un nodo nel grafo. Il grado può anche essere visto come il rischio

che un nodo catturi ciò che circola all'interno della rete (come virus o altre

informazioni). Il grado di centralità di un vertice, per un dato grafo con

27

Page 29: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

vertici e archi, è de�nito come Cd(v) = deg(v).

Dato un grafo non orientato G = (V,E), il grado di un nodo v ∈ V , de�nito

come δ(v), rappresenta il numero di archi incidenti in v.

deg(v) =∑i∈E

ev,i

con:

ev,i =

1 se(v, i) ∈ E,

0 altrimenti

Figura 3.3: Esempio di Degree Centrality di cui il nodo n1 ne detiene ilmassimo valore (3 archi collegati)

Nel caso di un grafo orientato, si possono de�nire due tipi misure di

Degree centrality:

� InDegree;

� OutDegree.

3.1.3.1 InDegree

Dato un grafo orientato G = (V,E) l'InDegree di un nodo v ∈ V , de�nito

come degin(v), rappresenta il numero di archi entranti in v.

28

Page 30: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

degin(v) =∑i∈E

ei,v

con:

ev,i =

1 se(i, v) ∈ E,

0 altrimenti

3.1.3.2 OutDegree

Dato un grafo orientato G = (V,E), l'OutDegree di un nodo v ∈ V , de�nito

come degout(v), rappresenta il numero di archi uscenti da v:

degout(v) =∑i∈E

ev,i

con:

ev,i =

1 se(v, i) ∈ E,

0 altrimenti

Figura 3.4: Esempio di nodi con InDegree e OutDegree

3.1.4 Closeness centrality

Nei gra� connessi esiste una distanza metrica naturale tra tutte le coppie di

nodi, de�nita dalla lunghezza dei loro percorsi più brevi. La lontananza di

un nodo v è de�nita come la somma delle distanze da tutti gli altri nodi, e la

29

Page 31: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

sua vicinanza è de�nita come l'inverso della lontananza. Quindi il nodo più

centrale è quello che ha la distanza minore rispetto a tutti gli altri nodi. La

vicinanza può essere considerata come una misura di quanto tempo ci vorrà

per di�ondere informazioni da s a tutti gli altri nodi in sequenza.

La di�usione di informazioni viene de�nita dall'uso dei cammini minimi

(shortest paths).

Quindi la closeness è una metrica che rappresenta la distanza minima (la più

vicina o veloce) tra un nodo e un altro, come:

CC(v) =∑t∈V \v

2−dG(v,t)

Dato un grafo G = (V,E) (fortemente) connesso e detta dG(u, v) la distanza

fra i vertici u, v ∈ V , si de�nisce la Closeness Centrality Cc(v) di un vertice

v ∈ V come:

Cc(v)def=

n− 1∑t∈V \v dG(u, v)

(3.1)

3.1.5 Betweenness centrality

La Betweenness è una misura di centralità di un vertice all'interno di un grafo,

che de�nisce la quantità di volte in cui un nodo agisce come ponte lungo il

percorso più breve tra due nodi. É stata introdotta da Linton Freeman come

una misura per quanti�care il controllo dell'uomo sulle comunicazioni tra

altri umani in una rete sociale. Secondo Freeman, i vertici che hanno un'alta

probabilità di essere in uno shortest path casuale tra due vertici casuali,

hanno un'alta betweennes.

La betweenness di un vertice v in un grafoG = (V,E) con V vertici è calcolata

come segue:

30

Page 32: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

� Per ogni coppia di vertici (s, t) bisogna calcolare i percorsi più brevi

tra loro;

� Per ogni coppia di vertici (s, t) si determina la frazione di cammini

minimi che passano attraverso il vertice in questione (v);

� Si sommano queste frazioni su tutte le coppie di vertici (s, t).

La forma più compatta per rappresentare la betweenness è:

CB(v) =∑

s6=v 6=t∈V

σst(v)

σst

Dove σst è il numero totale di cammini minimi dal nodo s al nodo t, mentre

σst(v) è il numero di questi percorsi che passano attraverso v.

3.1.6 Coe�ciente di Clustering

Nella maggior parte delle reti, ed in particolare nelle reti sociali, i nodi ten-

dono a creare gruppi caratterizzati da una densità relativamente elevata di

legami. Il coe�ciente di clustering misura la tendenza di due nodi che sono

adiacenti ad un nodo comune, di essere connessi l'uno con l'altro. In altre

parole questa proprietà misura l'importanza di un nodo, valutando il numero

di archi del grafo nel caso in cui il nodo preso in esame fosse estratto dalla

rete.

Per esempio, nelle reti sociali il clustering rappresenta il principio secondo

il quale due amici di un individuo hanno una buona probabilità di essere

amici tra di loro, infatti le reti con alto clustering hanno un elevato numero

di triangoli (tripla di nodi dove almeno 2 di essi hanno un elevata probabilità

di essere connessi).

Esistono 2 tipi di coe�ciente di clustering:

31

Page 33: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

� globale

� locale

Il coe�ciente di clustering globale o�re un'indicazione generale del

clustering nella rete e può essere applicato sulle reti orientate e non. Questo

coe�ciente è basato sulle cosiddette triplette di nodi, ognuna delle quali

è costituita da tre nodi che sono collegati da due (tripletta aperta) o tre

(tripletta chiusa) legami non orientati.

Il coe�ciente di clustering globale è rappresentato dal rapporto tra il numero

di triplette chiuse (o 3 triangoli) sul numero totale di triplette.

Il coe�ciente di clustering locale di un vertice (nodo) in un grafo quanti�ca

quanto vicino siano i suoi vicini per formare un grafo completo.

3.1.7 Eccentricity

La metrica Eccentricity rappresenta la massima distanza tra un vertice v ed

un qualsiasi altro vertice. L'insieme dei vertici (di un grafo non orientato)

e la funzione distanza formano uno spazio metrico, se e solo se il grafo è

collegato.

Esistono 2 principali misure di Eccentricity:

� Il raggio di un grafo che rappresenta l'eccentricity minima di ogni

vertice;

� Il diametro di un grafo che è la massima eccentricity di ogni vertice.

Per trovare il diametro di un grafo, bisogna trovare il percorso più breve

tra ogni coppia di vertici, dove la lunghezza massima di uno di questi

percorsi è il diametro del grafo;

32

Page 34: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

3.1.8 Modularity (Community Detection)

La modularità misura la forza di divisione di una rete in moduli (chiamati

anche gruppi o comunità). Le reti con elevata modularità hanno connessioni

dense tra i nodi all'interno dei moduli stessi ma connessioni sparse tra i nodi

nei di�erenti moduli. Una buona suddivisione possiede alti valori di modu-

larità.

All'interno dei moduli la densità sarà alta ma fra un modulo e l'altro ci sa-

ranno pochi collegamenti e quindi una densità inferiore.

L'uso più comune della modularità è fatto per l'ottimizzazione delle tecniche

per determinare le comunità nelle reti.

Si consideri una rete composta da n nodi connessi da m archi, sia ai j un ele-

mento della matrice di adiacenza della rete; il valore di ai j è quindi l'insieme

degli archi che connettono i nodi i e j. Si supponga di stabilire una divisione

dei vertici in un certo numero di gruppi, la modularità di questa divisione

è de�nita come la frazione degli archi che vanno verso questo gruppo meno

quello che ci si aspetterebbe se gli archi fossero distribuiti casualmente. Nella

versione più comune di questo concetto, la casualità degli archi è stabilita in

modo da preservare il grado di ogni nodo.

In tal caso il numero di archi che collegano i due vertici seguono la casualità:

ki · kj2 ·m

dove ki è il grado di un vertice i.

Il minor numero di archi attesi tra i due nodi è:

ai,j −ki · kj2 ·m

Sommando tutte le coppie di vertici nello stesso gruppo, la modularità Q

33

Page 35: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

è de�nita come:

Q =1

2m

∑i,j

[ai,j −ki · kj2 ·m

]δ(ci, cj)

Dove δ è il grado delle community c.

Il suo valore può muoversi nell'intervallo [−1; 1]: è positivo se il numero degli

archi presenti è maggiore del numero di quelli attesi, altrimenti è negativo.

3.2 Tipologie di Reti Complesse

Esistono due classi molto note e molto studiate di reti complesse che sono:

� Scale-Free Networks

� Small-World Networks

3.2.1 Scale-Free Networks

Una rete è chiamata scale-free se il suo grado di distribuzione, cioè la proba-

bilità che un nodo selezionato in maniera casuale abbia un certo numero di

link, segue una particolare funzione matematica chiamata Power of Law. La

legge di potenza implica che la Degree Distribution di queste reti non abbia

una scala caratteristica, ma al contrario, una rete con scala ben de�nita è

caratterizzata dal fatto che ogni nodo ha (approssimativamente) lo stesso

grado. Esempi di rete a scala singola includono il Modello Erd®s-Rényi

(ER) con grafo casuale.

L'interesse per le reti scale-free è cominciato alla �ne degli anni '90 con la

scoperta della legge di potenza del grado di distribuzione nelle reti del mondo

reale, come il World Wide Web.

Alcune reti che seguono questa legge (e altri tipi speci�ci di struttura) pos-

sono essere altamente resistenti alla cancellazione casuale di vertici.

34

Page 36: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

Figura 3.5: Esempio di Scale-Free Network

Quando il grafo è uniformemente casuale i vertici critici sono quelli con il

grado più alto e sono critici se in caso di una loro cancellazione si potrebbe

avere un'instabilità del grafo e delle sue componenti connesse.

Mentre i gra� casuali (ER) hanno una distanza media dell'ordine di log(N)

tra i nodi, dove N è il numero di nodi, il grafo Scale-Free può avere una

distanza di log(log(N)). Questi gra� sono chiamati ultra small-world net-

works.

3.2.1.1 Caratteristiche delle Scale-Free Network

Una rete scale-free è una rete il cui grado di distribuzione segue una legge di

potenza, almeno asintoticamente. Cioè, data una frazione P (k) di nodi nella

rete avente connessioni k con altri nodi va per grandi valori di k come:

P (k) ∼ k−γ

35

Page 37: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

dove γ è un parametro il cui valore è tipicamente nell'intervallo 2 < γ < 3,

anche se a volte può trovarsi al di fuori di questi limiti.

In una rete con una distribuzione Scale-Free, alcuni vertici hanno un gra-

do con ordine di grandezza maggiore rispetto alla media; questi vertici sono

spesso chiamati hub (perno o centro). Le proprietà Scale-free sono stret-

tamente correlate alla robustezza della rete rispetto al fallimento, perché i

grandi Hub sono seguiti da quelli più piccoli; questi ultimi, a loro volta, sono

seguiti da altri nodi con un grado ancora più piccolo e così via.

Questa gerarchia è tollerante ai guasti, infatti anche se avviene un guasto e

la maggior parte dei nodi sono quelli con un piccolo grado, la probabilità che

un hub possa risentirne è quasi trascurabile. D'altra parte, se si rimuovono

dalla rete degli Hub importanti, questa viene trasformata in un insieme di

gra� isolati e si ha una rete compromessa. Gli Hub possono quindi essere sia

un punto di forza che di debolezza nelle reti Scale-free.

Un'altra importante caratteristica delle reti scale-free è la distribuzione del

coe�ciente di clustering, che diminuisce all'aumentare del grado di ogni no-

do. Anche questa distribuzione segue una legge di potenza e ciò implica che

i nodi di basso grado appartengono a dei sotto-gra� molto densi collegati tra

loro tramite gli Hub.

Se si considera una rete sociale in cui i nodi sono persone e i collegamenti so-

no i rapporti tra le persone conoscenti, è facile vedere che le persone tendono

a formare comunità, cioè piccoli gruppi in cui tutti conoscono tutti. Inoltre, i

membri di una comunità hanno anche un rapporto di conoscenza con persone

al di fuori di quella comunità. Alcune persone, tuttavia, sono collegate ad

un gran numero di comunità (ad esempio: celebrità, politici etc.) e possono

essere considerate come gli hub responsabili del fenomeno small-world.

Attualmente, le caratteristiche di una rete scale-free, variano al variare del

36

Page 38: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

meccanismo utilizzato per generarle. Per esempio, le reti generate con l'at-

taccamento preferenziale, tipicamente hanno i nodi con il più alto grado al

centro della rete, connessi insieme a formare un nucleo. La rimozione casuale

di un gran numero di nodi non ha conseguenze importanti sulle connessioni

della rete, suggerendo che tali topologie potrebbero essere utili per la sicurez-

za. Una caratteristica �nale concerne la distanza media tra due vertici in una

rete: come con la maggior parte delle reti disordinate, anche con il modello

Small-World, questa distanza è molto ridotta rispetto a una rete altamente

ordinata come un grafo o reticolo. Alcuni esempi di reti scale-free sono:

� Social network, comprese le reti di collaborazione, ad esempio la rete

delle collaborazioni degli attori cinematogra�ci;

� molti tipi di reti di computer, tra cui Internet ed il World Wide Web;

� alcune reti �nanziarie come la rete di pagamento bancario online;

� reti Aeree, stradali, ferroviarie etc.

3.2.2 Grafo Random

In matematica con il termine grafo random ci si riferisce alle distribuzioni di

probabilità applicate ai gra�. I gra� random possono essere descritti sem-

plicemente dalla distribuzione di probabilità o da un processo random che

li genera. Da un punto di vista matematico i gra� random sono usati per

rispondere alle domande riguardo le proprietà dei gra� tipici e solitamente,

con il termine grafo random, ci si riferisce quasi esclusivamente al modello

Erd®s-Rènyi.

Le applicazioni pratiche di questo tipo di grafo si possono trovare in tutti i

campi in cui le reti complesse hanno bisogno di essere modellate.

37

Page 39: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

3.2.3 Modello Erd®s-Rènyi

Il modello Erd®s-Rènyi è uno dei modelli più strettamente connessi alla ge-

nerazione di gra� casuali ed imposta un arco tra ogni coppia di nodi con

la stessa probabilità, indipendentemente dagli altri archi. Prende il nome

da Paul Erd®s e Alfred Rényi, che per primi hanno introdotto uno dei due

modelli (utilizzabili nel metodo probabilistico per provare l'esistenza di gra�

che soddisfano diverse proprietà) nel 1959, mentre l'altro modello è stato

introdotto in modo indipendente e contemporaneamente da Edgar Gilbert.

Il matematico Paul Erd®s si occupò, tra le altre cose, di studiare le caratteri-

stiche dei gra� casuali e dimostrò che basta una piccola percentuale di archi

rispetto al totale per avere un grafo connesso, dove il grado di separazione di

tali gra� è straordinariamente piccolo.

3.2.3.1 De�nizione

Esistono due varianti del modello di Erd®s-Rényi:

� Modello G(n,m), un grafo viene scelto in modo uniforme a caso dalla

raccolta di tutti i gra� che hanno n nodi e m archi. Per esempio, un

grafo G(3,2) dove ciascuno dei tre gra� ha 3 vertici e 2 archi sono inclusi

con probabilità di 1/3.

� Modello G(n,p), un grafo viene costruito collegando nodi in modo

casuale. Ciascun arco è incluso nel grafo con probabilità p indipendente

da ogni altro arco.

Equivalentemente, tutti i gra� con n nodi ed m archi hanno la stessa proba-

bilità di:

pM(1− p)(n2)−M

38

Page 40: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

Il parametro p in questo modello può essere pensato come una funzione

peso; quando p aumenta da 0 a 1, diventa sempre più probabile che il modello

includa gra� con più archi ed è sempre meno probabile che includa gra� con

meno archi. Il caso particolare p = 0, 5 corrisponde al caso in cui sono scelti

tutti i gra� su n vertici con uguale probabilità.

Sebbene p e M possono essere �ssi in questo caso, potrebbero anche essere

funzioni che dipendono da n. Ciò signi�ca che, come n tende all'in�nito,

la probabilità che un grafo su n vertici con probabilità di arco 2ln(n)/n è

collegato, tende a 1.

3.2.3.2 Proprietà del modello G(n, p)

Un grafo G(n, p) ha in media (n/2)p archi e la distribuzione del grado di

qualsiasi particolare vertice è binomiale:

P (deg(v)) =

(n− 1

v

)pk(1− p)n−1−k

dove n è il numero totale di vertici nel gra�co, quindi:

P (deg(v))→ (np)ke−np

k!

quando

n→∞, np = cost

Questa è una distribuzione di Poisson per n grande e np = costante. I

risultati includono che:

� Se np < 1, allora un grafo G(n, p) quasi certamente non ha componenti

connessi di dimensioni maggiori di O(log(n)).

39

Page 41: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

� Se np = 1, allora un grafo G(n, p) quasi sicuramente avrà una grande

componente la cui dimensione è di ordine n2/3.

� Se np → c > 1, dove c è una costante, un grafo G(n, p) avrà quasi

sicuramente una componente unica gigante contenente una frazione

positiva dei vertici. Nessun altro componente conterrà più di O(log(n))

vertici.

� Se p < (1−ε) ln nn

un grafo G(n, p) quasi certamente contiene vertici

isolati, quindi è scollegato.

� Se p < (1+ε) ln nn

un grafo G(n, p) sarà quasi sicuramente connesso.

Dove ln nn

è quindi una soglia per la connessione di G(n, p).

3.2.4 Six Degrees of Separation

La teoria dei sei gradi di separazione è un'ipotesi secondo cui qualunque

persona può essere collegata ad una qualunque altra attraverso una catena

di conoscenze con non più di 5 intermediari, cioè in un limite massimo di 6

passi. Tale teoria è stata proposta per la prima volta nel 1929 dallo scrittore

ungherese Frigyes Karinthy nel racconto omonimo pubblicato nel volume

Catene 1.

Il concetto venne ripreso dal sociologo Stanley Milgram che in un celebre

esperimento dimostrò nel 1967 che e�ettivamente la separazione media risultò

essere uguale a sei. Fu allora che venne coniata l'espressione sei gradi di

separazione.

Nel 2011, un gruppo di informatici dell'Università degli Studi di Milano, in

collaborazione con due informatici di Facebook, ha e�ettuato un esperimento

su scala mondiale per calcolare il grado di separazione tra tutte le coppie di

40

Page 42: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

individui su Facebook. In media, i gradi di separazione sono 4.74: il 92%

delle coppie è separato da non più di 4 gradi.

Figura 3.6: Sei gradi di separazione

3.2.5 Small-World Networks

Figura 3.7: Esempio di rete Small-World

L'ipotesi Small-World descritta da Karinthy e testata sperimentalmente

da Stanley Milgram (1967), si fonda sull'idea in base alla quale due persone

41

Page 43: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

arbitrarie sono collegate da solo sei gradi di separazione, vale a dire il diame-

tro del grafo corrispondente al numero di connessioni sociali non è più grande

di sei.

Il loro modello ha dimostrato che un grafo regolare (il cui diametro è pro-

porzionale alla dimensione della rete), con l'aggiunta di un piccolo numero di

collegamenti a lungo raggio, può essere trasformato in un small-world in cui

il numero medio di archi tra due vertici è molto piccolo, mentre il coe�ciente

di clustering rimane grande.

È noto che una grande varietà di gra� astratti espongono proprietà dello

Small-World, ad esempio gra� casuali e reti scale-free. Inoltre, anche le reti

del mondo reale, come il World Wide Web mostrano anche questa proprietà.

Come descritto precedenemente, il coe�ciente di clustering è un parametro

che rappresenta la densità dei triangoli della rete (triple di vertici); per esem-

pio, i gra� sparsi e casuali hanno un coe�ciente di clustering estremamente

piccolo mentre le reti del mondo reale spesso hanno un coe�ciente signi�-

cativamente più grande. Gli scienziati indicano questa di�erenza come un

suggerimento che gli archi sono correlati nelle reti del mondo reale.

La teoria illustra come sia possibile conciliare due aspetti apparentemente

contraddittori: il fatto che nonostante ogni elemento tenda ad avere relazioni

prevalentemente con pochi altri (alta aggregazione) non impedisce di otte-

nere comunque una sua vicinanza, tramite pochi intermediari, con qualsiasi

altro elemento della rete (basso grado di separazione).

3.2.5.1 De�nizione

Una rete Small-World è un tipo di grafo matematico nel quale la maggior

parte dei nodi non sono vicini tra loro, ma possono essere raggiunti da tutti

gli altri tramite un piccolo numero di passi.

42

Page 44: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

Nello speci�co, una rete small-world è de�nita come una rete in cui la distanza

L tipica tra due nodi scelti a caso (il numero di passi richiesti) cresce propor-

zionalmente al logaritmo del numero di n nodi della rete, che è: L ∝ log N .

Una certa categoria di reti small-world è stata identi�cata come una classe

di gra� random da Duncan Watts e Steven Strogatz nel 1998. Essi hanno

rilevato che i gra� possono essere classi�cati in base a due caratteristiche

strutturali indipendenti: il coe�ciente di clustering e la distanza media da

nodo a nodo (nota anche come lunghezza media del percorso più breve, Ave-

rage Shortest Path). Gra� puramente casuali, costruiti secondo il modello

Erd®s-Rényi, presentano una piccola lunghezza media del percorso più cor-

to (variando tipicamente con il logaritmo del numero di nodi) con un basso

coe�ciente di clustering.

Watt e Strogatz hanno misurato che in e�etti molte reti reali hanno una bassa

lunghezza media del percorso più breve, ma anche un coe�ciente di clustering

signi�cativamente superiore a quello previsto per ogni caso di�erente.

3.2.5.2 Proprietà delle reti Small-World

Le Small-World Network tendono a contenere cliques (gruppi), cioè delle

sotto-reti che hanno quasi tutte le connessioni tra due nodi al loro interno.

De�nizione di Clique: Nella teoria dei gra�, una clique è un insieme V

di vertici in un grafo non orientato G, tale che, per ogni coppia di vertici in

V, esiste un arco che li collega. In modo equivalente, si potrebbe dire che il

sottografo indotto da V è un grafo completo. La dimensione di una clique è

de�nita come il numero di vertici che contiene.

Ciò deriva dalla proprietà che de�nisce un elevato coe�ciente di clustering.

In secondo luogo, la maggior parte delle coppie di nodi saranno collegate da

43

Page 45: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

almeno un percorso breve. Tipicamente vi è una sovrabbondanza di nodi

nella rete con un elevato numero di connessioni (noto come grado elevato).

Gli hub fungono da collegamenti comuni che mediano le lunghezze dei per-

corsi brevi tra gli altri archi.

Questa proprietà sono spesso analizzate come una frazione di nodi nella rete

che hanno un particolare numero di connessioni che vanno in essi (il grado di

distribuzione della rete). Reti con un maggiore numero di hub avranno una

maggiore frazione di nodi con grado elevato e di conseguenza la distribuzione

del grado sarà arricchito da elevati valori di grado. In particolare, se una

rete ha un grado di distribuzione che segue una distribuzione della legge di

potenza, viene considerata come una rete Small-World (note anche come reti

Scale-Free).

3.2.5.3 Esempi di reti Small-World

È possibile trovare esempi di reti Small-World in diverse applicazioni nel

mondo reale: mappe stradali, catene alimentari, reti elettriche, reti di neuroni

del cervello, reti di calcolatori e reti con in�uenze sociali.

3.2.5.4 Costruzione di una Small-World

Il meccanismo principale per la costruzione di queste reti è il meccanismo

di Watts-Strogatz che consiste nel costruirle in modo tale che il numero di

vicini di ogni vertice nella rete è delimitato, mentre la distanza da un altro

vertice (il diametro della rete) viene minimizzata.

3.2.5.5 Robustezza delle reti Small-World

Una possibilità è che le reti Small-World siano più resistenti alle perturbazioni

rispetto ad altre architetture di rete.

44

Page 46: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

Nella legge di potenza distribuita delle reti Small-World, la cancellazione

casuale di un nodo causa raramente un notevole aumento della media-breve

lunghezza del percorso (o una drastica riduzione nel coe�ciente di clustering).

Ciò deriva dal fatto che la maggior parte dei percorsi più brevi tra i nodi del

�usso passano attraverso gli hub e se un nodo periferico viene eliminato, è

improbabile che possa interferire con il passaggio tra gli altri nodi.

In questo senso, le reti casuali sono vulnerabili alle perturbazioni casuali,

mentre piccole reti del mondo sono robusti.

Tuttavia, le Small-World, a di�erenza delle reti casuali, sono vulnerabili agli

attacchi mirati agli hub.

45

Page 47: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

Capitolo 4

Facebook

Facebook è un servizio di rete sociale lanciato nel febbraio 2004. Il sito, fon-

dato a Harvard negli Stati Uniti da Mark Zuckerberg e dai suoi compagni

di università Eduardo Saverin, Dustin Moskovitz e Chris Hughes, originaria-

mente era stato progettato esclusivamente per gli studenti dell'Università di

Harvard, ma fu presto aperto anche agli studenti di altre scuole della zona

di Boston, della Ivy League e della Stanford University.

Successivamente fu aperto anche agli studenti delle scuole superiori e poi a

chiunque dichiarasse più di 13 anni di età. Da allora Facebook raggiunse

un enorme successo: secondo Alexa dal giugno 2013 è diventato il sito più

visitato al mondo, superando Google. Facebook ha cambiato profondamente

il modo in cui gli individui socializzano ed interagiscono.

Figura 4.1: Logo di Facebook

46

Page 48: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

È disponibile in oltre 70 lingue e nel Settembre 2013 conta 1.19 miliardi di

utenti attivi che e�ettuano l'accesso almeno una volta al mese, classi�candosi

come primo servizio di rete sociale per numero di utenti attivi.

Gli utenti possono accedere al sito previa registrazione gratuita, durante la

quale vengono richiesti dati personali come nome, cognome, data di nascita

e indirizzo email.

Completata la registrazione, gli utenti possono creare un pro�lo persona-

le, includere altri utenti nella propria rete sociale aggiungendoli come amici,

scambiarsi messaggi e ricevere le noti�che automatiche quando questi aggior-

nano i propri pro�li. Inoltre, gli utenti possono fondare e unirsi a gruppi per

condividere interessi in comune con altri utenti, organizzati secondo il luogo

di lavoro, la scuola, l'università o altre caratteristiche, condividere contenuti

multimediali ed utilizzare varie applicazioni presenti sul sito.

4.0.6 I Gruppi

Il gruppo è un luogo virtuale all'interno del quale si discute e si condividono

opinioni su un determinato argomento. Gli utilizzi che si fanno dei gruppi

sono i più svariati: ci sono gruppi con scopi commerciali, gruppi per campa-

gne di sensibilizzazione intorno a temi speci�ci, gruppi per lo svago, gruppi

per studenti, etc.

Per poter partecipare attivamente al gruppo e lasciare dei messaggi o com-

menti, è necessario che l'utente sia iscritto al gruppo; per quanto riguarda

la consultazione del contenuto, in base alle tipologie del gruppo elencate di

seguito, questa può avvenire anche senza l'iscrizione dell'utente.

Esistono tre tipologie principali di gruppi:

� Gruppo Aperti: dove l'iscrizione al gruppo è libera ed anche i non

iscritti possono vedere i post pubblicati;

47

Page 49: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

� Gruppo chiuso: dove per iscriversi serve il permesso dell'amministra-

tore e non si possono visualizzare i post se non si è iscritti;

� Gruppo Segreto: non visibile a nessuno se non all'amministratore e

ai membri esplicitamente invitati.

L'amministratore, all'interno del gruppo, può decidere di inserire una

breve descrizione e dei Tag (parole chiave) per speci�care gli argomenti su

cui verte il gruppo e far si che questo possa essere trovato più facilmente dagli

utenti in fase di ricerca; altra possibilità è quella di far si che i post possano

essere scritti solo dagli Amministratori o da tutti gli utenti.

4.1 Facebook Development

Attraverso la pagina web https://developers.facebook.com/ è possibile acce-

dere all'area di Facebook dedicata agli sviluppatori per poter usufruire dei

vari strumenti messi a disposizione.

È necessario che l'utente che intende sviluppare applicazioni per Facebook,

abbia un account Facebook valido e, se non l'ha già fatto, che avvii la pro-

cedura per creare l'account di sviluppatore tramite alcuni semplici passi.

Dopo aver attivato l'account da sviluppatore, è possibile avere accesso a

diverse sezioni, tra le quali:

� Applicazioni

� Strumenti

� Documentazione

� Assistenza

48

Page 50: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

È anche possibile scaricare diversi SDK (Software development kit)

in base all'ambiente di destinazione del progetto (iOS, Android, JavaScript,

PHP, Unity).

4.1.1 SDK

Un SDK (software development kit, traducibile in italiano come pacchetto

di sviluppo per applicazioni), indica genericamente un insieme di strumenti

per lo sviluppo e la documentazione di software. Molti SDK sono disponibili

gratuitamente e possono essere prelevati direttamente dal sito del produtto-

re: in questo modo si cerca di invogliare i programmatori ad utilizzare un

determinato linguaggio o sistema. Vi è anche un utilizzo orientato al merca-

to: alcuni programmi vengono venduti assieme al loro SDK permettendo ai

compratori di sviluppare ulteriori parti del programma comprato.

Gli SDK possono variare considerevolmente in quanto a dimensioni e tecno-

logie utilizzate, ma tutti possiedono alcuni strumenti fondamentali:

� librerie standard dotate di interfacce pubbliche dette API - Applica-

tion programming interface;

� documentazione sul linguaggio di programmazione per il quale l'SDK

è stato sviluppato e sugli strumenti a disposizione nell'SDK stesso;

� informazioni sulle licenze da utilizzare per distribuire programmi creati

con l'SDK;

4.1.1.1 API

Con API (Application Programming Interface), si indica ogni insieme

di procedure disponibili al programmatore, di solito raggruppate a formare

49

Page 51: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

un set di strumenti speci�ci per l'espletamento di un determinato compito

all'interno di un certo programma.

Le API permettono di espandere le funzionalità di un programma: per uno

sviluppatore mettere a disposizione un set di API di un suo software signi�ca

dare la possibilità ad altri di interagire con la sua piattaforma e, soprattutto,

estendere le funzioni e le caratteristiche della struttura base della piattafor-

ma.

Lo scopo principale delle API è quello di ottenere un'astrazione ad un più

alto livello, di solito tra l'hardware e il programmatore o tra software a bas-

so ed alto livello, sempli�cando così il lavoro di programmazione. Le API

permettono infatti di evitare ai programmatori di riscrivere ogni volta tut-

te le funzioni necessarie al programma in basso livello, favorendo quindi il

riutilizzo del codice.

4.1.2 Le Applicazioni

Giorno dopo giorno, su Facebook, è possibile trovare un nuovo gioco, un nuo-

vo quiz o una nuova attività.

Ognuna di queste attività è merito di un'applicazione che, grazie allo sforzo

degli sviluppatori, permette all'utente di visualizzare foto, postare un mes-

saggio od una nota e così via.

Le applicazioni presenti in Facebook sono migliaia e continuano a crescere

vertiginosamente. Non tutte le applicazioni sono state sviluppate da Face-

book, ma buona parte di esse sono merito di programmatori non legati in

alcun modo a Facebook.

Un'applicaziome su Facebook può quindi essere de�nita come un'applicazio-

ne Web, ospitata su uno spazio a propria disposizione, il cui utilizzo si fonde

con l'interazione con Facebook stesso.

50

Page 52: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

Facebook non mette a disposizione dello sviluppatore uno spazio per ospitare

il codice dell'applicazione, quindi come avviene per un sito personale, bisogna

a�darsi a servizi di hosting.

Per quanto riguarda il concetto di fusione con Facebook, ci si riferisce al fatto

che le applicazioni possono interagire, per esempio, con la lista degli amici

dell'utilizzatore, dandogli l'impressione che Facebook e l'applicazione siano

un tutt'uno.

Lo sviluppatore può segliere due approcci di�erenti per lo sviluppo dell'ap-

plicazione: iFrame e FBML.

4.1.2.1 iFrame

L'applicazione sviluppata secondo quest'approccio, verrà visualizzata all'in-

terno di un iFrame, una vera e propria cornice nella pagina Facbook. Ciò

signi�ca che il browser considererà l'applicazione come se fosse completa-

mente separata dal resto degli elementi di Facebook, anche se continuerà ad

esistere un �lo sottile (le API) che la tiene legata a Facebook.

Quando l'utente visita la pagina contenente l'applicazione, Facebook rispon-

derà restituendogli i propri elementi (testata, pubblicità, etc.) e successiva-

mente verrà contattato il server (su cui è ospitata l'applicazione) che eseguirà

il codice scritto dallo sviluppatore.

Il risultato �nale verrà mostrato all'utente all'interno dell'iFrame.

4.1.2.2 FBML

In questo caso caso, Facebook e l'applicazione sono un tutt'uno: all'apertura

dell'applicazione ogni elemento della pagina (compresa l'applicazione stessa)

verrà caricato sequenzialmente come se fose un unico listato di codice.

La di�erenza principale tra iFrame e FBML è che il client non contatterà

51

Page 53: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

mai il server dello sviluppatore direttamente: la richiesta iniziale è rivolta

sempre a Facebook che poi contatterà il server, il server richiamerà le API

necessarie e risponderà con una pagina scritta in FBML che verrà convertita

da Facebook in HTML classico e visualizzata all'utente.

4.1.2.3 Creazione di una nuova Applicazione

Il processo di creazione di una nuova applicazione è semplice, basterà scegliere

un nome ed accettare i termini di licenza di Facebook.

Un'applicazione Facebook è caratterizzata da due elementi importantissimi:

� Application ID: è un campo numerico non modi�cabile e generato

automaticamente da Facebook al momento della creazione dell'appli-

cazione e serve per identi�carla univocamente.

� Application Secret: chiave generata automaticamente da Facebook

che permette di autenticare la sessione ed e�ettuare le chiamate API

protette.

Application ID ed Application Secret sono di fondamentale importanza

quando si lavora con i vari SDK messi a disposizione da Facebook.

4.1.3 FQL (Facebook Query Language)

Facebook è soprattutto un grande contenitore di informazioni, dai dati perso-

nali che si sceglie di comunicare, ai vari post e commenti che vengono scritti.

È ovvio che una tale mole di informazioni necessiti di un sistema adeguato

per poter essere interrogata agevolmente. A tal �ne, viene messo a disposi-

zione dello sviluppatore uno strumento chiamato FQL.

L'FQL (Facebook Query Language), il cui acronimo ricorda molto SQL, si

52

Page 54: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

basa sugli stessi principi di quest'ultimo, con l'aggiunta di diverse limitazioni

atte a garantire l'integrità e la privacy dei dati.

La struttura di una query con FQL si presenta come segue:

Listato 4.1: Struttura di una Query FQL

SELECT [campi]

FROM [tabella]

WHERE [condizioni]

La clausola SELECT serve a speci�care quali campi selezionare da una

determinata tabella; possono essere più di uno e vanno separati con la virgo-

la.

La clausola FROM serve a speci�care su che tabella verrà e�ettuata la que-

ry ed in FQL, per motivi di e�cienza, è possibile speci�care una sola tabella

al suo interno.

La clausola WHERE serve a recuperare informazioni speci�che da una ta-

bella escludendone altre irrilevanti tramite l'imposizione di una o più condi-

zioni. In FQL, a di�erenza dell'SQL, si può agire soltanto su campi indiciz-

zati.

Le tre clausole appena descritte, sono obbligatorie.

Per conoscere le tabelle ed i campi sui quali è possibile agire tramite una

query FQL, Facebook mette a disposizione una speci�ca pagina della docu-

mentazione u�ciale. Ad esempio, per scrivere un'ipotetica query al �ne di

conoscere nome e cognome di un determinato utente, è su�ciente controllare

nella documentazione la lista di tutte le tabelle per notare che tali informa-

zioni sono memorizzate all'interno della tabella user e, aprendo la pagina

descrittiva della tabella, è speci�cato che il nome ed il cognome sono memo-

rizzati nei campi first_name e last_name, mentre l'identi�cativo univoco

nel campo uid.

53

Page 55: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

Listato 4.2: Query FQL per ottenere nome e cognome di un utente

SELECT first_name , last_name

FROM user

WHERE uid=x

I risultati delle interrogazioni vengono forniti in uno dei due formati a

scelta tra JSON oppure XML. A seguire, i risultati della query 4.2.

Listato 4.3: Risultato query in formato JSON

[

{

"first_name ": "Mario",

"last_name ": "Rossi"

}

]

Listato 4.4: Risultato query in formato XML

<xml version ="1.0" encoding ="UTF -8"?>

<fql_query_response xmlns ="http :// api.facebook.com /1.0/" >

<user >

<first_name >Mario </first_name >

<last_name >Rossi </last_name >

</user >

</fql_query_response >

È possibile ra�nare la query con le due clausole facoltative ORDER

BY e LIMIT. La prima permette di ordinare il risultato della query, in base

ad una determinata colonna, in maniera crescente o decrescente; la seconda,

permette di limitare il risultato ad un numero massimo di righe (ad esempio,

una query che contiene la clausola LIMIT 5 restituirà non più di 5 risultati).

54

Page 56: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

4.1.3.1 Multi-Query

La metodologia multi − query permette di inviare al server più query con

un'unica chiamata, ottenendo tutti i risultati contemporaneamente.

È quindi possibile scrivere delle query più complesse facendo sì che il risul-

tato della seconda query dipenda dal risultato della prima. Ad esempio, se

si volessero ottenere alcune informazioni riguardo agli utenti che intendono

partecipare ad un evento, normalmente sarebbero necessarie due query se-

parate (una per selezionare gli user id dalla tabella degli eventi ed un'altra

per selezionare le informazioni dalla tabella degli utenti conoscendo gli user

id), aspettando il risultato della prima per poter procedere con la seconda.

Con il metodo multi-query è possibile eseguire entrambe le query nello stesso

momento ottenendo tutti i dati contemporaneamente e prestazioni superiori

rispetto all'esecuzione di una serie di single− query.

4.1.4 Permessi

Durante le operazioni di login, l'applicazione richiede il permesso per accedere

al pro�lo pubblico e alla lista degli amici di un utente. Per poter accedere a

degli elementi addizionali del pro�lo o per pubblicare contenuti su Facebook

per conto dell'utente, è necessario richiedere opportuni permessi usando la

�nestra di dialogo del Login o durante l'esecuzione dell'applicazione.

Le categorie dei permessi sono le seguenti:

� Email permissions;

� Extended pro�le properties: per accedere ad alcune informazioni

che non sono incluse nel pro�lo pubblico;

55

Page 57: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

� Extended permissions: per accedere alle informazioni più sensibili

del pro�lo e per permettere all'appllicazione di pubblicare qualcosa per

conto dell'utente;

� Open Graph permissions;

� Page permissions: per gestire le attività di amministrazione delle

pagine Facebook;

4.1.5 Access Tokens

Quando ci si connette ad un'applicazione usando il Login di Facebook, l'ap-

plicazione otterrà un access token che fornirà, temporaneamente, un accesso

sicuro alle API di Facebook.

Un access token è una stringa che identi�ca un utente, un'applicazione o una

pagina e può essere usato dall'applicazione per e�ettuare le chiamate graph

API. I token includono informazioni riguardo alla data in cui il token scadrà

e quale applicazione lo ha generato.

Una caratteristica importante degli access token è la portabilità: una volta

che un token è stato generato, può essere utilizzato da un qualsiasi client

mobile, browser o server.

4.1.5.1 User Access Token

L'User Access Token è il token più utilizzato ed è richiesto ogni volta che l'ap-

plicazione e�ettua una chiamata alle API per leggere, modi�care o scrivere

dati riguardanti una persona speci�ca su Facebook. Questo tipo di Token

può essere di due tipi:

� Short-lived: ha una validità di circa un'ora o due;

56

Page 58: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

� Long-lived: ha una validità di circa 60 giorni;

I Token generati dall'interfaccia web di login sono di tipo short-lived ma

possono essere convertiti in long-lived.

4.1.5.2 App Access Token

Gli App Access Token sono utilizzati per e�ettuare richieste alle API di

Facebook da parte di un'applicazione piuttosto che dall'utente. Può quindi

essere utilizzato per modi�care i parametri dell'applicazione, creare e gestire

utenti di test etc.

4.1.5.3 Page Access Token

I Page Access token sono utilizzati nelle chiamate alle API di Facebook per

gestire le Pagine Facebook. Soltanto l'amministratore della pagina può ge-

nerare questo tipo di token, poiché richiesto un permesso esteso chiamato

manage_pages che fa riferimento ad una pagina speci�ca.

57

Page 59: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

Capitolo 5

Progetto

5.1 Obiettivi

Il progetto di Tesi proposto consiste nell'acquisizione di post e commenti da 4

diversi gruppi di Facebook al �ne di poter e�ettuare diverse analisi. I gruppi

selezionati per l'analisi sono (in ordine di intensità di attività):

� Facebook in the Social Science (da adesso FSS)

� Facoltà di Scienze MM.FF.NN. C.d.L. Informatica (da adesso

INF)

� Insegnanti (da adesso INS)

� Il mercatino messinese (da adesso MER)

Il primo passo è consistito nella realizzazione di uno script PHP che,

tramite FQL, acquisisce i vari post e commenti di quattro gruppi di Facebook,

memorizzandoli all'interno di un database personale; l'esecuzione automatica

dello script ogni 30 minuti avviene tramite cron.

Non appena terminata la raccolta, è stato realizzato un ulteriore script PHP

58

Page 60: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

Figura 5.1: Diagramma di sequenza

per acquisire eventuali dati mancanti veri�cando che in archivio non fossero

presenti commenti in riferimento a post non memorizzati e che, per ogni post,

fossero stati acquisiti tutti i commenti.

Successivamente, è stato sviluppato un applicativo in C# che si occupa di

analizzare i dati estratti e di produrre in otput dei �le di testo contenenti i

risultati di alcune query per poter creare dei gra�ci con il software GNUPlot

ed un �le in formato GraphML per poter e�ettuare una serie di analisi ed

estrarre le varie metriche attravero il software Gephi.

5.2 Strumenti di progettazione

5.2.1 Linguaggi di Programmazione

Per quanto riguarda gli script, si è preferito utilizzare il linguaggio di pro-

grammazione PHP.

59

Page 61: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

PHP è un linguaggio di programmazione interpretato, originariamente con-

cepito per la programmazione di pagine web dinamiche. Attualmente è

utilizzato principalmente per sviluppare applicazioni web lato server, ma

può anche essere usato per scrivere script a riga di comando o applicazioni

stand-alone con interfaccia gra�ca.

Figura 5.2: Logo PHP

Il linguaggio riprende per molti versi la sintassi del C e del Perl ed è in

grado di interfacciarsi ad innumerevoli database tra cui MySQL, PostgreSQL

e Oracle e supporta numerose tecnologie come XML, SOAP, IMAP ed FTP.

I motivi per cui è stato scelto questo linguaggio sono molteplici, fra tutti

il fatto che Facebook mette a disposizione un SDK per potersi interfacciare

con il Social Network (ad esempio per poter e�ettuare le query FQL descritte

nel capitolo precedente) e per il fatto che il PHP è un punto di riferimento

quando si tratta di eseguire codice lato server.

Per realizzare l'applicativo che analizza i dati estratti si è scelto C#, un

linguaggio di programmazione orientato agli oggetti, sviluppato da Microsoft

all'interno dell'iniziativa .NET. C# prende spunto da Delphi, C++ e Java

per quanto riguarda la sintassi e da Visual Basic per gli strumenti di pro-

grammazione visuale e per la sua semplicità.

La scelta è ricaduta su questo linguaggio poiché molto semplice da utilizzare

e perché possiede tutti gli strumenti atti ad e�ettuare le varie operazioni di

analisi che si sono rese necessarie.

60

Page 62: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

5.2.2 DBMS

Il DBMS (Database Management System) è un sistema software progetta-

to per consentire la creazione, manipolazione ed interrogazione e�ciente di

database (una collezione di dati strutturati). Il progetto di Tesi ha richiesto

un DBMS online (su uno spazio di hosting) per la memorizzazione dei post

e dei commenti ed un DBMS in locale per permettere al software in C# di

e�ettuare le varie query al �ne di svolgere le dovute analisi.

In entrambi i casi, la scelta è ricaduta su MySQL.

MySQL è il DBMS open source più di�uso al mondo ed è composto da

un client ed un server, entrambi disponibili per sistemi Unix, GNU/Linux e

Windows. L'interazione con i dati da parte di MySQL avviene sfruttando il

linguaggio di interrogazione strutturata SQL (Structured Query Language).

Figura 5.3: Logo MySQL

5.2.2.1 Brevi cenni sull'SQL

L'SQL è un linguaggio standardizzato per database basati sul modello rela-

zionale (RDBMS) progettato per:

� creare e modi�care schemi di database (DDL - Data De�nition Lan-

guage);

� inserire, modi�care e gestire dati memorizzati (DML - Data Manipula-

tion Language);

61

Page 63: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

� interrogare i dati memorizzati (DQL - Data Query Language);

� creare e gestire strumenti di controllo ed accesso ai dati (DCL - Data

Control Language);

Originariamente progettato come linguaggio di tipo dichiarativo, si è suc-

cessivamente evoluto con l'introduzione di costrutti procedurali, istruzioni

per il controllo di �usso, tipi di dati de�niti dall'utente e varie altre estensioni.

5.2.3 GraphML (Graph Markup Language)

GraphML è un formato di �le basato su XML, per la rappresentazione di

strutture grafo. Nello speci�co, consiste in un linguaggio di markup per de-

scrivere le proprietà strutturali di un grafo e di un meccanismo di estensione

�essibile per aggiungere dati speci�ci dell'applicazione. È previsto il suppor-

to a diversi tipi di gra�, tra i quali: diretti, non orientati, pesati, misti e

gerarchici.

A seguire, un esempio di �le GraphML per rappresentare un grafo semplice

con 3 nodi e 2 archi:

Listato 5.1: Esempio di �le GraphML per un grafo con 3 nodi e 2 archi

<?xml version ="1.0" encoding ="UTF -8"?>

<graphml xmlns="http :// graphml.graphdrawing.org/xmlns"

xmlns:xsi="http :// www.w3.org /2001/ XMLSchema -instance"

xsi:schemaLocation ="http :// graphml.graphdrawing.org/xmlns

http :// graphml.graphdrawing.org/xmlns /1.0/ graphml.xsd" >

<graph id="G" edgedefault =" undirected">

<node id="n0"/>

<node id="n1"/>

<node id="n2"/>

62

Page 64: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

<edge source ="n0" target ="n2"/>

<edge source ="n1" target ="n2"/>

</graph >

</graphml >

Il tag <edgedefault> può assumere valore undirected o directed a se-

conda che il grafo sia orientato o non orientato.

I nodi del grafo sono dichiarati all'interno del tag <node> ed ognuno di essi

ha un identi�catore univoco de�nito dall'identi�catore id.

Gli archi del grafo sono dichiarati all'interno del tag <edge> ed ognuno di

essi è caratterizzato da una sorgente (source) ed una destinazione (target),

entrambe obbligatorie. I valori della sorgente e della destinazione devono

corrispondere ad uno degli identi�catori dei nodi dichiarati in precedenza

all'interno del documento. È possibile, eventualmente, aggiungere dei con-

tenuti strutturati all'interno del tag <edge> servendosi del meccanismo

Data/Key (utile, ad esempio, per impostare il peso di un arco).

5.3 L'Applicazione Facebook

Il primo passo per la realizzazione del progetto è stato la creazione dell'Appli-

cazione Facebook dalla relativa pagina nella sezione Developers di Facebook.

I permessi necessari all'applicazione sono:

� user_groups: fornisce l'accesso alla lista dei gruppi di cui l'utente è

membro;

� user_videos: fornisce l'accesso ai dettagli dei video pubblicati;

� user_photos: fornisce l'accesso ai dettagli delle foto pubblicate

63

Page 65: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

� read_stream: fornisce l'accesso a tutti i dettagli dei post scritti da

un determinato utente;

Alla prima esecuzione dell'applicazione, si presenta una �nestra che in-

forma l'utilizzatore riguardo a quali sono i permessi necessari e ne richiede

la concessione, senza la quale l'applicazione non può svolgere i suoi compiti.

5.3.1 Access Token

Ad ogni esecuzione dell'applicazione, dopo il login, viene generato un access

token di tipo short-lived, dopo aver veri�cato che l'utente abbia concesso i

permessi necessari.

Avendo la necessità di eseguire automaticamente lo script ogni 30 minuti tra-

mite un server cron, si è resa necessaria un'altra strada da percorrere, poiché

per il rilascio del token, è indispensabile e�ettuare il login su facebook.

Si è proceduto alla generazione manuale di un token di tipo short-lived tra-

mite lo strumentoGraph API Explorer messo a disposizione da Facebook.

Successivamente, attraverso una speci�ca richiesta HTTP a Facebook nella

quale bisogna inserire l'Application ID e l'Application Secret dell'applicazio-

ne precedentemente creata ed il Token generato in precedenza, si ottiene un

token di tipo long-lived valido per circa 60 giorni.

5.4 Script PHP per l'acquisizione dei dati

Nello script PHP per l'acquisizione dei dati vi è una prima parte dichiarativa,

all'interno della quale si memorizzano, in alcune variabili:

� Informazioni Database: host name, nome del database, username e

password;

64

Page 66: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

� ID dei Gruppi: codice identi�cativo univoco di ogni gruppo dal quale

è necessario estrarre i dati;

� Application ID: ID dell'Applicazione Facebook;

� Application Secret: Secret dell'applicazione Facebook;

� Token esteso;

Listato 5.2: Prototipo funzione executeQuery

function executeQuery($gruppo ,$table_post ,$table_comment ,

$fbconfig ,$token)

La funzione executeQuery si occupa dell'esecuzione delle query FQL e

dell'archiviazione dei dati ed accetta come parametri in ingresso:

� $gruppo: l'id del gruppo da cui estrarre i dati;

� $table_post: nome della tabella che ospiterà i post;

� $table_comment: nome della tabella che ospiterà i commenti;

� $fbcon�g: array contenente l'Application ID e l'Application Secret;

� $token: token esteso;

Listato 5.3: Listato di codice PHP per l'interfacciamento con Facebook

require_once "facebook.php";

$facebook = new Facebook(array(

'appId ' => $fbconfig['appid '],

'secret ' => $fbconfig['secret ']));

$facebook ->setAccessToken($token );

65

Page 67: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

Il primo comando del Listato 5.3 è necessario ogni qual volta si voglia

utilizzare l'SDK; inoltre occorre anche l'istanziazione di un nuovo oggetto

di tipo Facebook speci�cando l'Application ID e l'Application Secret. Con

l'ultimo comando del listato si imposta il token, precedentemente acquisito,

che sarà utilizzato dall'SDK.

Le query FQL per acquisire le informazioni riguardanti post e commenti,

sono e�ettuate su due tabelle:

� Stream: tabella contenente informazioni riguardo i post;

� Comment: tabella contenente informazioni riguardo i commenti a

determinati post;

Durante i vari test con le query FQL è stato notato come questa piat-

taforma messa a disposizione da Facebook è ancora molto acerba e so�re di

improvvisi problemi nel generare risposte a query che producono un numero

considerevole di record.

Se in una query FQL non viene speci�cato un LIMIT, Facebook lo imposta

automaticamente a 7, restituendo un massimo di 7 record. Sono quindi state

e�ettuate diverse prove per tentare di acquisire, con un'unica esecuzione dello

script, tutti i post di un gruppo, impostando un LIMIT 10000 ; nonostante

ciò la piattaforma Facebook, dopo aver restituito un certo numero di record,

va in crash e mostra un messaggio d'errore. È importante segnalare come

si sia veri�cata una situazione alquanto insolita, dal momento che il valore

massimo di LIMIT accettato varia da esecuzione ad esecuzione.

In generale, con un LIMIT 200 non ci sono mai stati problemi, motivo per

cui si è scelto come valore per le query riguardanti i post ipotizzando che è

molto di�cile per i gruppi presi in esame riuscire a generare un tra�co di

post superiore a 200 ogni mezz'ora.

66

Page 68: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

Listato 5.4: Query per acquisire i post

SELECT post_id , actor_id , created_time , attachment ,

like_info , share_count , message FROM stream

WHERE source_id = 'ID DEL GRUPPO '

ORDER BY created_time ASC LIMIT 200

Quando Facebook viene interrogato riguardo i post (mediante la query

mostrata nel Listato 5.4), restituisce un determinato numero di record in

base al valore di LIMIT impostato. Una domanda potrebbe sorgere sponta-

nea: tra le decine, centinaia o migliaia di post di un gruppo, quali di questi

vengono restituiti come risultato della query? Facebook restituisce gli ultimi

post su cui si è agito, cioè gli ultimi creati (se sono nuovi post) oppure gli

ultimi in cui è stato inserito un commento. Ciò vuol dire che un post scritto

mesi fa ma appena commentato �risale� la lista dei post e viene restituito

per primo nel caso di un eventuale query FQL. È possibile notare questa

gestione dei post anche nel normale utilizzo di Facebook, perché all'interno

di un gruppo vengono mostrati per primi gli ultimi post scritti o quelli con

commenti recenti.

Attraverso la query mostrata nel Listato 5.4 si selezionano le informazioni

relative ai post pubblicati in un gruppo, e nello speci�co:

� post_id: l'id del post;

� actor_id: l'id dell'utente, del gruppo, della pagina o dell'evento che

ha pubblicato il post;

� created_time: data ed ora della pubblicazione del post espressi in

formato timestamp UNIX ;

� attachment: array contenente informazioni riguardanti l'eventuale

allegato del post;

67

Page 69: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

� like_info: informazioni riguardo i mi piace del post;

� share_count: numero di volte che un post è stato condiviso;

� message: il messaggio vero e proprio del post;

Con la clausola WHERE viene speci�cato di selezionare le informazioni

riguardanti i post di un gruppo speci�co (source_id). In�ne, tramite la

clausola ORDER BY si ordinano in modo crescente i post in base alla data

di creazione.

Listato 5.5: Query per acquisire i commenti

SELECT id , post_id , fromid , time , comment_count ,

likes , text , attachment FROM comment

WHERE post_id in (SELECT post_id from #post)

ORDER BY time ASC LIMIT 5000;

Attraverso la query mostrata nel Listato 5.5 si selezionano le informazioni

relative ai commenti fatti ai post selezionati con la query precedente, e nello

speci�co:

� id: l'id univoco del commento;

� post_id: l'id del post cui il commento si riferisce;

� fromid: l'id dell'utente che ha scritto il commento;

� time: data ed ora della pubblicazione del post espressi in formato

timestamp UNIX ;

� comment_count: numero di risposte al commento;

� likes: numero di mi piace del commento;

68

Page 70: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

� text: il testo del commento;

� attachment: il link o la foto allegati al commento;

Con la clausola WHERE viene speci�cato di selezionare le informazioni

riguardanti i commenti i cui post_id sono presenti tra i risultati della query

precedente cioè quelli relativi ai post selezionati con la query del Listato 5.4.

In�ne, tramite la clausola ORDER BY si ordinano in modo crescente i post

in base alla data di creazione.

La dichiarazione delle query del Listato 5.4 e del Listato 5.5 è avvenuta

all'interno degli elementi dell'array associativo $multiQuery.

Listato 5.6: Esecuzione delle Query

$param = array(

'method ' => 'fql.multiquery ',

'queries ' => $multiQuery ,

);

$fqlResult = $facebook ->api($param );

Nel Listato 5.6 si può notare la vera e propria esecuzione delle query viste

in precedenza per la quale è necessaria la dichiarazione di un array all'interno

del quale si speci�cano dei parametri:

� method: metodo di esecuzione della query (trattato nel capitolo pre-

cedente); è possibile scegliere tra fql.multiquery e fql.query;

� queries: query da eseguire;

I risultati delle query sono memorizzati all'interno dell'array $fqlResult.

A questo punto è necessaria la memorizzazione dei dati appena acquisiti.

Data la gestione dei post di Facebook vista in precedenza, è possibile che

69

Page 71: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

all'interno dell'array $fqlResult ci siano dei post e dei commenti già presenti

all'interno del database su cui si va a scrivere. Utilizzando il comando SQL

INSERT IGNORE si evitano errori nel caso in cui si tenti di inserire un record

già presente all'interno dell'archivio, poiché nella tabella dei post si utilizza

come chiave primaria l'id del post e nella tabella dei commenti l'id del com-

mento.

Prima di e�ettuare l'inserimento dei dati acquisiti all'interno del database, si

è proceduto a sostituire la stringa dell'id utente con la corrispettiva stringa

in md5 per garantire l'anonimato; inoltre, il campo timestamp Unix è stato

convertito nel formato data ed ora accettato da MySQL.

5.4.1 L'esecuzione con Cron

Per l'esecuzione automatica dello script ad intervalli di tempo pre�ssati, al

�ne di garantire la continuità dell'acquisizione dei vari post e commenti, ci

si è avvalsi di un servizio web che mette a disposizione un server cron.

Cron consente la piani�cazione di comandi, registrandoli e mandandoli in

esecuzione periodicamente in maniera automatica.

È stato su�ciente registrarsi al servizio web e, nel pro�lo personale, creare

un nuovo job nel quale speci�care la pagina web da visitare. Come intervallo

tra un'esecuzione e l'altra è stato impostato il valore di 30 minuti.

5.5 Schema Entity-Relationship del database

In Figura 5.4 è rappresentato il diagramma ER delle tabelle utilizzate per

memorizzare i post ed i commenti acquisiti tramite le query FQL. Sono pre-

senti le tabelle Post e Comments collegate da una relazione opzionale di tipo

1:N, poiché ogni post può avere 0, 1 o N commenti ad esso collegati ma

70

Page 72: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

Figura 5.4: Schema Entity-Relationship della base di dati

ogni commento può appartenere soltanto ad un post.

La tabella Post ha come chiave primaria il campo di tipo stringa post_id,

mentre la tabella Comments ha come chiave primaria il campo di tipo stringa

comment_id.

Trattandosi di una relazione 1:N è presente una foreign key (chiave ester-

na) che indica un vincolo di integrità referenziale tra le due tabelle. Tale

chiave identi�ca una colonna della prima tabella che referenzia una colonna

della seconda tabella, creando una sorta di collegamento tra le due. Nello

speci�co, la foreign key è nella tabella Comments rappresentata dal campo

post_id e si riferisce alla chiave primaria della tabella Post : post_id.

5.6 Script PHP per la veri�ca dei dati acquisiti

Dati i problemi di cui so�re l'FQL descritti nei paragra� precedenti, ed i

problemi di integrità dei dati acquisiti che ne conseguono, si è resa necessaria

la creazione di uno script PHP che cercasse di rimediare, quanto più possibile,

a tali problemi. I principali problemi di integrità dei dati che sono stati

riscontrati riguardano l'assenza di post cui alcuni commenti si riferiscono e

la mancanza di alcuni commenti relativi a determinati post.

Lo script svolge due funzioni attraverso le query al database MySQL ed alle

71

Page 73: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

query FQL:

Listato 5.7: Query SQL per selezionare gli id dei post non presenti in archivio

SELECT DISTINCT(post_id) FROM Comments

WHERE post_id NOT IN (SELECT post_id FROM Post)

Attraverso la query del Listato 5.7 si selezionano gli id dei post presenti

nella tabella contenente i commenti acquisiti ma non presenti nella tabel-

la dei post, ed ognuno di questi viene memorizzato all'interno di un array.

Successivamente, viene preparata una stringa contenente tutti gli id appena

selezionati separati dalla virgola.

Listato 5.8: Query FQL per selezionare le informazioni sui post assenti

SELECT post_id , actor_id , created_time , attachment ,

like_info , share_count , message FROM stream

WHERE source_id = 'ID DEL GRUPPO '

AND post_id in 'ID DEI POST '

ORDER BY created_time ASC LIMIT 800

Attraverso la query FQL mostrata nel Listato 5.8 si selezionano le infor-

mazioni riguardo i post i cui id sono stati memorizzati all'interno dell'array

dopo la query del Listato 5.7.

Le informazioni appena selezionate sono memorizzate all'interno della tabella

relativa ai post tramite il comando INSERT.

Listato 5.9: Query SQL per selezionare gli id dei post

SELECT post_id FROM Post

Attraverso la query mostrata nel Listato 5.9 si selezionano gli id di tutti

i post archiviati e si memorizzano all'interno di un array.

72

Page 74: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

Listato 5.10: Query FQL per selezionare le informazioni sui commenti

SELECT id , post_id , fromid , time , comment_count ,

likes , text , attachment FROM comment

WHERE post_id = 'ID DEL POST ' ORDER BY time ASC

LIMIT 6000

Attraverso la query del Listato 5.10 si selezionano le informazioni riguardo

ai commenti i cui post_id sono presenti nell'array riempito con la query in

Listato 5.9.

Le informazioni appena selezionate sono memorizzate all'interno della tabella

relativa ai commenti tramite il comando INSERT IGNORE, poiché alcuni

commenti potrebbero già essere presenti.

5.7 Estrazione dati e statistiche

Per poter operare sui dati acquisiti è stato necessario e�ettuare un dump dei

dati archiviati sul server online, per importarli localmente tramite MySQL.

Lo scopo dell'applicativo è quello di interrogare MySQL al �ne di reperire

post e commenti per poi analizzarli e produrre dei �le come output.

Figura 5.5: Applicativo C# per l'estrazione di dati e statistiche

73

Page 75: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

Ognuno dei pulsanti presenti in Figura 5.5 avvia una diversa procedura

che, tramite opportune query, ed in certi casi tramite operazioni sui dati

estratti, produce dei �le come output.

Listato 5.11: Query SQL per elencare il numero di post per giorno

SELECT DATE_FORMAT(STR_TO_DATE(created_time ,

'%e-%c-%Y %H:%i:%s'), '%d-%m-%Y')

AS Data , COUNT (*) FROM Post GROUP BY Data ORDER BY Data

La query in Listato 5.11 si occupa di elencare il numero di post rag-

gruppati per giorno attraverso l'operatore GROUP BY. La funzione DA-

TE_FORMAT è usata per convertire un campo di tipo datetime in un

formato personalizzato; in questo caso, si è passati da data ed ora alla sola

data nel formato AAAA-MM-GG.

È stata scritta anche una variante che agisce sulla tabella Comments per

elencare il numero di commenti raggruppati per giorno.

Figura 5.6: Parte del risultato della query 5.11

Listato 5.12: Query SQL per elencare la media dei ritardi dei commenti

SELECT A.post_id , AVG(TIMESTAMPDIFF(MINUTE ,

STR_TO_DATE(created_time , '%d-%m-%Y %H:%i:%s'),

STR_TO_DATE(time , '%d-%m-%Y %H:%i:%s'))) AS AVG

FROM Post A JOIN Comments B ON A.post_id = B.post_id

GROUP BY A.post_id ORDER BY A.post_id;

74

Page 76: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

La query in Listato 5.12 permette di calcolare, in media, quanto tempo

intercorre tra la scrittura del post ed i successivi commenti.

Figura 5.7: Parte del risultato della query del Listato 5.12

Listato 5.13: Query SQL per elencare la percentuale di allegati

SELECT attachment_type , (COUNT (*)*100/

NUMERO_TOTALE_POST_CON_ALLEGATI) AS Percent

FROM Post WHERE LENGTH(attachment_type) > 0

GROUP BY attachment_type

La query in Listato 5.13 produce l'elenco dei tipi di allegati dei post e,

per ognuno di essi, ne calcola la percentuale sul numero totale di post con

allegati.

Figura 5.8: Risultato della query del Listato 5.13

Listato 5.14: Query SQL per elencare la percentuale di allegati su tutti i post

SELECT attachment_type , (COUNT (*)*100/

NUMERO_TOTALE_POST) AS Percent FROM Post

GROUP BY attachment_type

75

Page 77: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

La query in Listato 5.14 produce l'elenco dei tipi di allegati dei post e,

per ognuno di essi, ne calcola la percentuale sul numero totale di post (con e

senza allegati).

Figura 5.9: Parte del risultato della query del Listato 5.14

Le query nei Listati 5.13 e 5.14 sono state applicate anche alla tabella dei

commenti.

Listato 5.15: Query SQL per elencare il totale di commenti per post

SELECT P.post_id ,COUNT (*)

FROM Post P LEFT JOIN Comments C

ON P.post_id = C.post_id

GROUP BY P.post_id ORDER BY P.post_id

La query in Listato 5.15 produce l'elenco degli id dei post e, per ognuno

di essi, il numero dei relativi commenti.

Figura 5.10: Parte del risultato della query del Listato 5.15

Listato 5.16: Query SQL per elencare la media dei post di ogni utente attivo

SELECT (SELECT COUNT (*) FROM Post) /

76

Page 78: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

(SELECT COUNT(DISTINCT Nominativo) FROM

(SELECT Actor_id AS Nominativo FROM Post

UNION ALL SELECT DISTINCT(From_id) AS

Nominativo FROM Comment)X)

La query in Listato 5.16 produce il numero medio di post scritti da ogni

utente attivo all'interno del gruppo. Un utente è attivo se ha scritto almeno

un post o un commento all'interno del gruppo cui è iscritto.

È stata scritta anche una variante della query al �ne di produrre il numero

medio di commenti scritti da ogni utente attivo.

5.7.1 GraphML

La generazione del �le GraphML si è rivelata la parte più di�coltosa da

realizzare. Tale �le è costituito da tre sezioni principali: header, nodi, archi.

Figura 5.11: Header del �le GraphML

Listato 5.17: Query SQL per selezionare i nodi del grafo

SELECT DISTINCT Nominativo FROM

(SELECT Actor_id AS Nominativo FROM Post

UNION ALL SELECT DISTINCT(From_id) AS Nominativo

FROM Comments) X

La query in Listato 5.17 produce l'elenco degli id degli utenti attivi al-

l'interno del gruppo, i quali costituiranno i nodi del grafo. Tale elenco viene

scritto nel �le GraphML nel formato <node id=�ID_UTENTE�/>

77

Page 79: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

Figura 5.12: Esempio della sezione dei nodi nel �le GraphML

Listato 5.18: Query per selezionare le relazioni tra gli utenti

SELECT A.actor_id , B.from_id

FROM Post A JOIN Comments B

ON A.post_id = B.post_id

La query in Listato 5.18, per ogni commento ad un post, seleziona gli id

utente del creatore del post e del creatore del commento.

Figura 5.13: Parte del risultato della query 5.18

Gli archi sono memorizzati nel �le utilizzando il tag <edge>, all'interno

del quale si speci�cano la sorgente, la destinazione ed un valore per la chiave

d1, utilizzata in questo caso per memorizzare il peso dell'arco.

Figura 5.14: Esempio della sezione degli archi nel �le GraphML

Ogni relazione deve essere rappresentata soltanto una volta all'interno

del �le, cioè se l'utente x e l'utente y sono presenti più volte nel risultato

della query in Listato 5.18 perché entrati in contatto diverse volte, per essi

78

Page 80: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

deve essere presente un solo arco che abbia come sorgente l'id di x e come

destinazione l'id di y.

Dovendo realizzare un grafo pesato, è stato necessario tenere in considera-

zione il numero di volte che due utenti entrano in contatto poiché questo

numero rapprsenta il valore del peso.

Per poter preparare i vari pesi degli archi è stato utilizzato un array bidi-

mensionale all'interno del quale vengono inizialmente memorizzati il primo

valore di source e target prodotti dalla query in Listato 5.18 ed un valore

di peso pari ad 1. Successivamente, viene veri�cato se tra i risultati della

query è nuovamente presente quel determinato valore di source e di target ;

in caso a�ermativo, il valore del peso nell'array viene incrementato. Questa

veri�ca avviene, ovviamente, attraverso un ciclo per iterare tutti gli elementi

prodotti dalla query. Il procedimento appena descritto viene e�ettuato per

tutti gli elementi poiché dopo aver determinato il peso del primo elemento

del risultato, si passa al successivo e così via.

Tale parte del progetto non è stata di immediata realizzazione perché non si è

fatto uso di librerie di terze parti e le procedure per l'analisi delle interazioni

tra i nodi sono state programmate personalmente.

79

Page 81: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

Capitolo 6

Analisi

In questo capitolo sono discusse le varie analisi che sono state e�ettuate a

partire dai �le generati con l'applicativo discusso nel capitolo precedente.

In questo lavoro di Tesi sono stati presi in considerazione quattro gruppi

chiusi di utenti di Facebook di dimensioni di�erenti.

Il primo, denominato �Facebook in the Social Sciences� è un gruppo co-

stituito da sociologi interessati allo studio di Online Social Network ed è

composto, al momento in cui quesa Tesi viene scritta, da 520 utenti. Soltan-

to un centinaio di essi partecipa attivamente mediante post o commenti, e

questo è un primo indicatore del fatto che si tratta di un gruppo di grande

successo, nel senso dell'attività oggetto di studio in questa Tesi.

Il secondo gruppo, denominato �Facoltà di Scienze MM.FF.NN. C.d.L.

Informatica�, è costituito da studenti di Informatica (132) e da qualche do-

cente. Le sue �nalità sono la partecipazione tra gli studenti di informazioni

sulla vita del Corso di Laurea, la condivisione di appunti e informazioni sugli

esami. Gli utenti attivi, ai sensi della modellizzazione considerata, sono 113

nel primo archivio, 79 nel secondo.

Il terzo gruppo, denominato �Insegnanti�, è composto da 10221 utenti di

Facebook, aventi in comune il fatto di insegnare nelle scuole di ogni ordi-

80

Page 82: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

ne e grado. Le tematiche a�rontate sono orientate su due �loni principali:

normativa e sua applicazione da parte dei Dirigenti Scolastici, problematiche

didattiche e relazionali. Gli utenti attivi sono 1547 nel primo archivio, 1650

nel secondo.

Il quarto gruppo, denominato �Il mercatino messinese�, è formato da

20156 utenti ed è dedicato alla pubblicazione di annunci di compravendi-

ta di oggetti vari e scambio di commenti. L'attività si esplica principalmente

nella pubblicazione di annunci di compravendita e nello scambio di informa-

zioni tra l'utente autore del post e gli utenti eventualmente interessati. Il

numero di utenti attivi è 6609 nel primo archivio, 7358 nel secondo.

L'estrazione dei dati è stata e�ettuata in due di�erenti periodi di tempo:

poichè i dati estratti nelle due situazioni si sono mostrati interessanti, in

questa sede vengono mostrati entrambi. Per questi di sintesi e di facilità di

identi�cazione vengono chiamati Archivio 1 e Archivio 2.

Le relazioni tra gli utenti di Facebook appartenenti ai gruppi presi in esame

sono state modellizzate mediante gra�: ogni volta che un utente pubblica

qualcosa (brevemente, �posta�) si presenta come un nodo del grafo. Se un

altro utente commenta il post, anch'egli viene presentato come un nodo e tra

i due nodi viene stabilito un arco orientato dal secondo nodo verso il primo.

Così facendo si ottiene un grafo orientato e pesato, in modo da tenere conto

che le relazioni tra nodi sono più o meno consolidate in base al numero di

commenti che i due utenti si sono reciprocamente scambiati nel periodo di

osservazione.

A seguire, due tabelle con le statistiche generali dei due archivi per ognuno

dei quattro gruppi presi in esame.

81

Page 83: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

Archivio 1

Gruppo Nodi Archi ADa AWDb Diametro Densità Componenti

FSS 92 110 1.196 2.467 5 0.013 18

INF 113 1167 10.327 50.097 5 0.092 3

INS 1547 4691 3.032 7.544 10 0.002 136

MER 6609 29903 4.525 16.111 12 0.001 547

aAverage Degree (Grado medio)bAverage Weighted Degree (Grado medio pesato)

Archivio 2

Gruppo Nodi Archi ADa AWDb Diametro Densità Componenti

FSS 104 127 1.221 2.471 7 0.012 21

INF 79 268 3.392 10.253 6 0.043 6

INS 1650 4452 2.698 5.841 9 0.002 162

MER 7358 31986 4.347 14.147 14 0.001 703

aAverage Degree (Grado medio)bAverage Weighted Degree (Grado medio pesato)

Si può notare che i gruppi presi in considerazione sono stati modellizzati

mediante gra� di piccole dimensioni (da un centinaio ad alcune migliaia di

nodi) con un ridotto numero di relazioni. A questo corrisponde una densità

bassissima, un grado medio ridotto e soprattutto, come sarà evidente nel

paragrafo successivo, un elevato numero di componenti.

Nelle tabelle seguenti sono mostrate alcune informazioni sui gruppi esa-

minati, i periodi di osservazioni e la media di post (e di commenti) per utente.

Questi ultimi, insieme al numero degli utenti, sono dati non assolutamente

certi a causa della di�coltà nel reperire automaticamente il numero di utenti

di un gruppo al momento dell'estrazione dei post e dei commenti del gruppo.

82

Page 84: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

Si osservi che il gruppo INF è quello che nel primo periodo mostra un'attività

molto elevata per numero medio di post e numero medio di commenti. Que-

sto andamento non viene confermato nel secondo periodo di osservazione:

una possibile spiegazione potrebbe tenere conto del fatto che gli utenti che

hanno fondato e alimentato l'attività del gruppo hanno via via completato

gli studi e di fatto abbandonato il gruppo. Gli studenti delle ultime coorti

hanno preferito fondare nuovi gruppi e frequentano poco il gruppo �storico�

INF.

Archivio 1

Gruppo Inizio Fine Post Comm. Utenti AVG P.a AVG C.b

FSS 21-05-2012 08-11-2013 104 228 520 1,13 2,47

INF 04-12-2010 31-10-2013 1146 5662 132 10,14 50,10

INS 31-08-2013 10-11-2013 2029 11671 10221 1,31 7,54

MER 01-09-2013 10-11-2013 27878 106593 20156 4,21 16,12

aMedia post per utentebMedia commenti per utente

Archivio 2

Gruppo Inizio Fine Post Comm. Utenti AVG P. AVG C.

FSS 21-05-2012 18-01-2014 118 258 520 1,13 2,48

INF 04-04-2013 22-01-2014 218 811 132 2,75 10,26

INS 13-11-2013 23-01-2014 1935 9642 10221 1,17 5,84

MER 01-11-2013 06-02-2014 29984 104424 20156 4,07 14,19

83

Page 85: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

6.1 Gra�

In questo paragrafo vengono mostrati i gra� dei quattro gruppi per ognuno

dei due periodi di estrazione dei dati. Dalle Figure 6.1 � 6.8 si può notare

già a prima vista (e verrà mostrato come uno dei risultati della Social Net-

work Analysis) che i gra� non sono connessi. Questo rappresenta un primo

risultato di interesse: al contrario di quanto si sarebbe indotti a pensare, la

partecipazione ad un gruppo non implica necessariamente la relazione tra

tutti i partecipanti. E' possibile distinguere infatti una componente princi-

pale e alcune componenti (a volte nodi singoli) che non hanno mai stabilito

relazioni strutturate con il resto del grafo. I gra�, nonostante le piccole di-

mensioni mostrano chiaramente una componente principale di nodi connessi

e una serie di componenti (ra�gurate alla periferia) disconnesse.

Nelle Figure 6.9 � 6.16 sono mostrate invece le comunità emerse dal-

l'analisi dei gra�. Si ricorda che le comunità sono sottoinsiemi di un grafo

caratterizzate dall'avere un numero di archi più elevato rispetto al numero

di archi che collegano i nodi che ne fanno parte con gli altri nodi.

Le componenti disconnesse sono di fatto delle comunità, sia pur picco-

le, perché nessun arco le connette al resto del grafo. Dall'analisi dei gra� è

emerso un numero relativamente elevato di comunità, con l'unica eccezione

del gruppo INF, che probabilmente è l'unico gruppo caratterizzato da una

elevata comunanza di interessi. Se si eccettua il caso del gruppo INF, nel

quale si riconoscono poche comunità (3 nel primo Archivio, 6 nel secondo),

gli altri gruppi sono caratterizzati da un elevato numero di comunità, a testi-

monianza del fatto che i gruppi esaminati sono in realtà composti da molti (a

volte moltissimi) sottogruppi abbastanza chiusi e poco interessati a stabilire

relazioni con gli altri utenti del gruppo.

84

Page 86: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

Figura 6.1: Grafo del gruppo Facebook in the Social Science (Archivio 1)

Figura 6.2: Grafo del gruppo Facebook in the Social Science (Archivio 2)

85

Page 87: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

Figura 6.3: Grafo del gruppo del C.d.L. in Informatica (Archivio 1)

Figura 6.4: Grafo del gruppo del C.d.L. in Informatica (Archivio 2)

86

Page 88: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

Figura 6.5: Grafo del gruppo Insegnanti (Archivio 1)

Figura 6.6: Grafo del gruppo Insegnanti (Archivio 2)

87

Page 89: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

Figura 6.7: Grafo del gruppo Mercatino (Archivio 1)

Figura 6.8: Grafo del gruppo Mercatino (Archivio 2)

88

Page 90: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

Figura 6.9: Comunità nel gruppo Facebook in the Social Science (Archivio1)

Figura 6.10: Comunità nel gruppo Facebook in the Social Science (Archivio2)

89

Page 91: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

Figura 6.11: Comunità nel gruppo del C.d.L. in Informatica (Archivio 1)

Figura 6.12: Comunità nel gruppo del C.d.L. in Informatica (Archivio 2)

90

Page 92: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

Figura 6.13: Comunità nel gruppo Insegnanti (Archivio 1)

Figura 6.14: Comunità nel gruppo Insegnanti (Archivio 2)

91

Page 93: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

Figura 6.15: Comunità nel gruppo Mercatino (Archivio 1)

Figura 6.16: Comunità nel gruppo Mercatino (Archivio 2)

92

Page 94: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

6.2 Metriche

In questa sezione vengono mostrate le metriche principali della Social Net-

work Analysis. Nelle Figure 6.17 e 6.18 è mostrata la degree centrality di-

stribution riferiti ai due archivi. La degree centrality indica la distribuzione

del grado dei nodi di un grafo, ovvero il numero di relazioni che i nodi hanno

fra di loro. A causa del fatto che le relazioni tra i nodi sono orientate, nelle

Figure sono distinte le distribuzioni riguardanti gli archi entranti (In), uscen-

ti (Out) e totali. L'andamento della degree distribution mostra chiaramente

che esiste una legge di potenza, a dimostrazione che i gra� studiati sono di

tipo scale-free.

Questa caratteristica è confermata dall'esame dei gra�ci della weighted

degree distribution (si vedano le Figure 6.19 e 6.20), in cui vengono rappre-

sentate le distribuzioni del grado pesato di ogni nodo. Si ricorda infatti che i

gra� sono pesati, nel senso che ogni arco tiene conto del numero di commenti

e�ettuati dall'utente ai post dell'utente con cui esiste la relazione.

Nelle Figure 6.21 e 6.22 è mostrata la distribuzione della betweenness

centrality. Si tratta di una misura che tiene conto della centralità di un

nodo rispetto al numero di percorsi minimi che connettono tutte le coppie

di nodi. Come si può osservare dalle Figure, un ridottissimo numero di nodi

viene attraversato da un elevatissimo numero di percorsi minimi, mentre un

numero via via maggiore di nodi si trova in posizioni periferiche di scarso

interesse ai �ni della veicolazione, per esempio, di informazioni sulla rete.

Nelle Figure 6.23 e 6.23 viene mostrata la closeness centrality. La close-

ness (vicinanza) può essere de�nita come l'inverso della farness (lontananza),

che è la somma delle distanze di un nodo da tutti gli altri. Rispetto a questa

metrica, pertanto, un nodo è tanto più centrale quanto minore è la somma

delle distanze da tutti gli altri nodi. In un caso come questo di gra� non

93

Page 95: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

connessi, si osserva che una percentuale non nulla di nodi si trova a vicinan-

za nulla, ovvero a lontananza in�nita. Si tratta di quei nodi non connessi,

ovvero delle componenti disconnesse rispetto alla componente principale del

grafo.

Nelle Figure 6.25 e 6.26 viene mostrato l'andamento del coe�ciente di

clustering. Si tratta di una misura della tendenza dei nodi di un grafo a

formare gruppi chiusi, nei quali cioè il numero di archi sia uguale (o prossimo)

al numero massimo, ovveron(n− 1)

2

se con n si indica il numero di nodi.

Il coe�ciente di clustering globale è il rapporto tra il numero di triplette

chiuse di nodi e il numero totale di triplette (aperte o chiuse).

In un grafo completamente connesso (ovvero tra i cui nodi esistano tutti

gli archi possibili), il coe�ciente di clustering è uguale a 1. Dall'esame dei

gra�ci nelle Figure 6.25 e 6.26 appare come i gra� abbiano soltanto una picco-

lissima percentuale di triple chiuse, ad ulteriore dimostrazione della bassissi-

ma densità del grafo. Una signi�cativa eccezione l'andamento del coe�ciente

di clustering del gruppo FSS, in cui non esiste alcuna tripla chiusa di nodi, a

riprova dell'insu�ciente numero di relazioni esistente tra i nodi del gruppo.

94

Page 96: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

Figura 6.17: Degree distribution - Archivio 1

Figura 6.18: Degree distribution - Archivio 2

95

Page 97: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

Figura 6.19: Weighted degree distribution - Archivio 1

Figura 6.20: Weighted degree distribution - Archivio 2

96

Page 98: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

Figura 6.21: Betweenness centrality distribution - Archivio 1

Figura 6.22: Betweenness centrality distribution - Archivio 2

97

Page 99: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

Figura 6.23: Closeness centrality distribution - Archivio 1

Figura 6.24: Closeness centrality distribution - Archivio 2

98

Page 100: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

Figura 6.25: Clustering coe�cient distribution - Archivio 1

Figura 6.26: Clustering coe�cient distribution - Archivio 2

99

Page 101: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

6.3 Andamento temporale post e commenti

In questo paragrafo viene mostrato l'andamento temporale dei post e dei

relativi commenti tracciati su un intervallo di tempo uguale o inferiore al pe-

riodo di osservazione (ed estrazione) dei dati relativi ai vari gruppi. Per ogni

giorno durante il periodo di osservazione è stato estratto il numero di post

pubblicati e il numero di commenti e�ettuati ai post, non necessariamente

del giorno. I risultati sono mostrati nelle Figure 6.27, 6.28, 6.29 e 6.30. Ad

eccezione del gruppo FSS (in cui l'andamento mostra una scarsissima attività

del gruppo), si ha una certa correlazione, non quanti�cata in questa sede, tra

i post pubblicati in un giorno e il numero dei commenti nello stesso giorno.

L'impressione, non è stato condotto uno studio quantitativo sull'argomento,

che l'a�uenza e l'attività degli utenti di un gruppo produca un aumento

anche dei commenti. Un discorso a parte merita l'andamento temporale del

gruppo MER (si veda la Figura 6.30) rispetto al quale esiste qualche dubbio

circa il trend in salita del numero dei commenti. Potrebbe trattarsi di un

e�etto ampli�cato del trend in salita dei post, ma potrebbe anche trattarsi

di una incompleta estrazione di dati dalla base di dati di Facebook per le

motivazione esposte in precedenza.

100

Page 102: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

Figura 6.27: Andamento temporale dei post e dei commenti - Gruppo FSS

Figura 6.28: Andamento temporale dei post e dei commenti - Gruppo INF

101

Page 103: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

Figura 6.29: Andamento temporale dei post e dei commenti - Gruppo INS

Figura 6.30: Andamento temporale dei post e dei commenti - Gruppo MER

102

Page 104: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

6.4 Tipologia di allegati

In questo paragrafo vengono fornite alcune informazioni sulla tipologia di

allegati. Nelle Figure 6.31 e 6.32 sono presentate, sotto forma di istogrammi,

le percentuali degli allegati dei post e dei commenti, rispettivamente. Ad ec-

cezione del gruppo MER, di cui si parlerà a breve, gli allegati non sono molto

presenti, e contrariamente a quanto si potrebbe pensare i post e i commenti

sono essenzialmente testuali, con una bassissima percentuale di allegati. Si

discostano le abitudini del gruppo INS, in cui c'è una percentuale rilevante di

collegamenti ipertestuali e, come si accennava, quelle del gruppo MER, in cui

la maggioranza dei post (e dei commenti) contiene fotogra�e. Quest'ultima

è una peculiarità abbastanza normale per un gruppo di compravendita, in

cui è abituale e preferibile associare una o più fotogra�e al prodotto che si

intende vendere.

103

Page 105: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

Figura 6.31: Percentuale degli allegati sui post - Archivio 1

Figura 6.32: Percentuale degli allegati sui post - Archivio 2

104

Page 106: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

Capitolo 7

Conclusioni e Sviluppi Futuri

I computer sono inutili, possono dare solo

risposte.

Pablo Picasso

Il progetto di tesi ha raggiunto lo scopo pre�ssato: l'acquisizione di dati

da gruppi di Facebook chiusi e la realizzazione di �le GraphML per ogni

gruppo, al �ne di produrre un grafo orientato e pesato per poter analizzare

le interazioni tra gli utenti all'interno dei vari gruppi.

Il lavoro si è rivelato molto faticoso e lungo anche se produttivo ed istruttivo

sotto diversi punti di vista: la scoperta dei meccanismi di autenticazione e

di interrogazione dei database che utilizza Facebook, un miglioramento per-

sonale per quanto concerne la programmazione con PHP e la realizzazione

dell'applicativo.

Diverse sono state le di�coltà nella realizzazione del progetto, specie all'i-

nizio. Tra queste si ricordano il codice per l'interfacciamento a Facebook

tramite le API, così come le questioni legate ai token. Il motivo può essere

cercato nella Documentazione u�ciale che all'epoca non era molto ben orga-

nizzata. Come se non bastasse, trattandosi di un'idea abbastanza innovativa,

105

Page 107: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

non si trovavano molti aiuti nelle varie community informatiche.

Altre di�coltà importanti si sono avute quando, analizzando i dati estratti,

ci si è accorti di problemi di integrità dei dati: in archivio erano presenti dei

commenti che facevano riferimento a dei post non memorizzati oppure dei

post ai quali mancavano dei commenti. Purtroppo, tali problemi sono da at-

tribuire all'acerba piattaforma FQL con i vari problemi derivanti dall'utilizzo

del LIMIT o da improvvisi blocchi e quindi non esecuzione della query. Da

segnalare il fatto che, se Facebook non imponesse tutti questi limiti nell'e-

secuzione delle query FQL, sarebbe bastato semplicemente eseguire lo script

una sola volta per poter ottenere tutti i post ed i commenti di un gruppo a

partire dalla sua creazione.

Non è stato meno di�coltoso lo sviluppo dell'applicazione in C# specie nella

parte della creazione del �le GraphML poiché si è preferito programmare per-

sonalmente i vari algoritmi senza utilizzare librerie esterne che producono

automaticamene il �le.

Alcune ri�essioni sull'analisi dei dati estratti sono doverose: contrariamente

a quanto si possa pensare, non sempre i gruppi sono dei luoghi di socializza-

zione tra gli utenti. Tra i quattro gruppi presi in esame, soltanto nel gruppo

INF si può parlare di una vera e propria interazione e socializzazione tra la

maggior parte degli utenti. Nei restanti tre gruppi (in particolare in INS e

MER) è evidente un'elevata frammentarietà ed un numero elevato di compo-

nenti, cioè dei �sottogruppi� dentro i quali non sempre vi è un'interazione tra

gli utenti. A titolo d'esempio: nel gruppo MER è possibile notare centinaia

di componenti che fanno desumere una frammentarietà nelle relazioni, anche

perché diverse relazioni del gruppo possono essere ricondotte a un semplice

post �vendo oggetto� , il quale può ricevere un'eventuale risposta �sono inte-

ressato, possiamo concludere� e l'interazione tra due utenti si conclude. Altra

106

Page 108: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

eventualità è che i post non ricevano neanche una risposta ed il messaggio

resti isolato.

Tra gli sviluppi futuri del progetto, l'analisi di gruppi più grandi ed attivi

rispetto a quelli presi in esame e l'acquisizione dei dati per periodi più lunghi

al �ne di ottenere dati più accurati per l'analisi. Altre possibilità, sono l'a-

dattamento dei software per poter essere utilizzati anche in ambito di analisi

forense e social media marketing.

107

Page 109: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

Capitolo 8

Bibliogra�a e Sitogra�a

8.1 Le Reti Sociali

1. Social Network Analysis Applicata di Giovanni Carturan

http://www.slideshare.net/gio85pd/social-network-analysis-applicata

2. Dipartimento di Scienze Sociali dell'Università di Pisa, L'analisi delle

reti sociali

http://sna.dss.unipi.it/Analisi%20delle%20reti.html

3. Handbook of Social Network technologies and Applications

http://mylifemynotes.�les.wordpress.com/2012/03/handbook-of-social-network-

technologies-and-applns-b-furht-springer-2010-bbs.pdf

4. Analisi delle reti sociali

http://it.wikipedia.org/wiki/Analisi_delle_reti_sociali

5. Rete sociale

http://it.wikipedia.org/wiki/Rete_sociale

108

Page 110: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

6. Tu la sapevi la di�erenza tra social media e social network?, di Vero-

nica Gentili

http://www.veronicagentili.com/tu-la-sapevi-la-di�erenza-tra-social-media-

e-social-network/

8.2 Teoria dei gra�

1. Teoria dei gra�

http://it.wikipedia.org/wiki/Teoria_dei_gra�

2. Grafo

http://it.wikipedia.org/wiki/Grafo

3. Alberi e Gra� - Dipartimento di Sistemi e Informatica

www.dsi.uni�.it/∼costa/lucidi_fondII_ing_06_07/25.Alberi.pdf

4. Teoria dei Gra� - Dist

www.dist.unige.it/msanguineti/AttDid/RO1SV/D11.pdf

5. 4. Elementi di Teoria dei Gra� - Dipartimento di Matematica

www.mat.uniroma3.it/users/liverani/doc/disp_oc_04.pdf

8.3 Reti complesse

1. Statistical mechanics of complex networks, Re ka Albert and Albert-La

szlo Baraba si Department of Physics, University of Notre Dame, Notre

Dame, Indiana 46556 (Published 30 January 2002)

2. ScaleFree_Scienti�c American 288, 60-69 (2003), by Albert-Laszlo Ba-

rabasi and Eric Bonabeau

109

Page 111: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

3. Introduzione alle reti complesse

http://www.quattromaggio.altervista.org/TesieProgetti/Tesi-Marziale/Capitolo1.pdf

4. RETI COMPLESSE, di Rodolfo Baggio, Gennaio 2004

www.iby.it/itc/baggio_reti.pdf

5. Università di Genova, Reti complesse, reti e misure, Matteo dell'Ami-

co, 7 novembre 2006

http://www.disi.unige.it/person/DellamicoM/teaching/ar2-0607/2-misure.pdf

6. Università degli studi di Torino, Network Complessi e modelli, Rossano

Gaeta

http://www.di.unito.it/∼rossano/DIDATTICA/bioinfo/network-complessi-

e-gra�.pdf

7. Complex Network

http://en.wikipedia.org/wiki/Complex_network

8. Directed graph

http://en.wikipedia.org/wiki/Indegree#Indegree_and_outdegree

9. Centrality

http://en.wikipedia.org/wiki/Betweenness#Betweenness_centrality

10. Degree distribution

http://en.wikipedia.org/wiki/Degree_distribution

11. Clustering coe�cient

http://en.wikipedia.org/wiki/Clustering_coe�cient

12. Betweenness centrality

http://en.wikipedia.org/wiki/Betweenness_centrality

110

Page 112: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

13. Closeness Centrality

http://sonivis.org/wiki/index.php?title=Closeness

14. Modularity (networks) http://en.wikipedia.org/wiki/Modularity_(networks)

15. Modularità (reti)

http://it.wikipedia.org/wiki/Modularità_(reti)

16. Distance (graph theory)

http://en.wikipedia.org/wiki/Distance_(graph_theory)

17. Scale-free network

http://en.wikipedia.org/wiki/Scale-free_networks

18. Erd®s�Rényi model

http://en.wikipedia.org/wiki/Erdos-Renyi-model

19. Small-world network

http://en.wikipedia.org/wiki/Small-world_network

20. Clique (graph theory)

http://en.wikipedia.org/wiki/Clique_(graph_theory)

21. Distribuzione di Poisson

http://it.wikipedia.org/wiki/Distribuzione_di_Poisson

22. Sei gradi di separazione

http://it.wikipedia.org/wiki/Sei_gradi_di_separazione

23. Power law

http://en.wikipedia.org/wiki/Power-law

24. Legge di potenza

http://it.wikipedia.org/wiki/Legge_di_potenza

111

Page 113: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

25. Random Graph

http://en.wikipedia.org/wiki/Random_graph

26. Small-World Network

http://en.wikipedia.org/wiki/Small-world_network

8.4 Facebook

1. Facebook

http://it.wikipedia.org/wiki/Facebook

2. SDK

http://it.wikipedia.org/wiki/Software_development_kit

3. API

http://it.wikipedia.org/wiki/Application_programming_interface

4. Applicazione Facebook con PHP di Mariano Calandra

http://www.html.it/guide/guida-applicazioni-facebook-con-php/

5. FQL

https://developers.facebook.com/docs/technical-guides/fql/

6. Access Token

https://developers.facebook.com/docs/facebook-login/access-tokens/

8.5 Progetto

1. Draw.io

https://www.draw.io/

112

Page 114: Analisi delle interazioni tra utenti in gruppi di Facebook · Nel corso del primo capitolo si presentano ... studi di sociologia e ... Sette ponti di Königsberg . Nella secon-da

2. PHP

http://it.wikipedia.org/wiki/PHP

3. C#

http://it.wikipedia.org/wiki/C_sharp http://www.php.net

4. SQL

http://it.wikipedia.org/wiki/SQL

5. FQL: Tabella Stream

https://developers.facebook.com/docs/reference/fql/stream/

6. FQL: Tabella Comment

https://developers.facebook.com/docs/reference/fql/comment/

7. Facebook

https://www.facebook.com/

8. Diagramma ER

http://www.ballini.it/Software/ProgER/

9. Microsoft Visual Studio

http://www.visualstudio.com/

http://it.wikipedia.org/wiki/C_sharp

10. GraphML, Graph Markup Language (GraphML), Ulrik Brandes Uni-

versity of Konstanz, Markus Eiglsperger Zuehlke Engineering AG, Juer-

gen Lerner University of Konstanz, Christian Pich ETH Zurich

http://graphml.graphdrawing.org/

http://it.wikipedia.org/wiki/XML

11. Gnuplot

http://www.gnuplot.info/

113