Come si costruiscono i profili dei lettori dei quotidiani online

Transcript

Come si costruiscono i profili dei lettori dei quotidiani online
Come si costruiscono i profili
dei lettori dei quotidiani online
Giovanni Giuffrida1
Calogero G. Zarba2
1 Università
2 Neodata
di Catania
Intelligence
Lunedı̀ 2 dicembre 2013
Giuffrida, Zarba (UdC, Neodata)
Profili
Lunedı̀ 2 dicembre 2013
1 / 61
Sommario
1
Perché costruire profili utenti per quotidiani online
2
Costruzione profili utente per parole e loro utilizzo
3
Costruzione profili utente per categoria e loro utilizzo
4
Effetto coda lunga
5
Analisi profili utente
Giuffrida, Zarba (UdC, Neodata)
Profili
Lunedı̀ 2 dicembre 2013
2 / 61
Quotidiani online
Si consideri un quotidiano online come www.corriere.it,
www.repubblica.it, oppure www.gazzetta.it
La homepage di un quotidiano online contiene collegamenti ad
articoli, che sono solitamente gli stessi per tutti gli utenti
Giuffrida, Zarba (UdC, Neodata)
Profili
Lunedı̀ 2 dicembre 2013
3 / 61
Pagine personalizzate
È però possibile costruire pagine personalizzate, che cambiano da
utente a utente
Le pagine personalizzate propongono a ogni singolo utente articoli
appositamente mirati a soddisfare gli interessi specifici del singolo
utente
Ma come si fa a costruire pagine personalizzate?
Giuffrida, Zarba (UdC, Neodata)
Profili
Lunedı̀ 2 dicembre 2013
4 / 61
Profilo utente
Per costruire una pagina personalizzata per un certo utente, è
necessario conoscere quali sono gli interessi dell’utente
Gli interessi dell’utente, opportunamente rappresentati, costituiscono
il profilo dell’utente
Un profilo utente è pertanto una rappresentazione digitale degli
interessi dell’utente, che può essere usato per generare pagine web
parsonalizzate
Ma come si costruisce un profilo utente?
Giuffrida, Zarba (UdC, Neodata)
Profili
Lunedı̀ 2 dicembre 2013
5 / 61
Profilo utente
Il profilo di un utente si costruisce osservando il comportamento di
navigazione dell’utente
In particolare, in questa lezione ci limitiamo a osservare l’insieme degli
articoli letti dagli utenti nel quotidiano online
Assumiamo inoltre che gli utenti hanno la possibilità opzionale di
valutare il loro grado di gradimento degli articoli letti, utilizzando una
scala composta di stellette, da un minimo di 1 stelletta a un massimo
di 5 stellette
Il profilo utente si basa quindi sull’insieme degli articoli letti
dall’utente, e sulle valutazioni che l’utente assegna agli articoli da lui
letti
Giuffrida, Zarba (UdC, Neodata)
Profili
Lunedı̀ 2 dicembre 2013
6 / 61
Profilo utente
Presentiamo due modi di costruire il profilo utente
1
2
Profilazione per parole
Profilazione per categorie
Sia la profilazione per parole che la profilazione per categorie possono
essere usate per suggerire all’utente quegli articoli che meglio si
adattano agli interessi dell’utente
Giuffrida, Zarba (UdC, Neodata)
Profili
Lunedı̀ 2 dicembre 2013
7 / 61
Profilazione per parole
Nella profilazione per parole, si costruisce una funzione
π : U × W → [−1, 1]
dove U è l’insieme degli utenti, e W è l’insieme delle parole
Intuitivamente
Se π(u, w ) > 0 allora l’utente u è interessato alla parola w
Se π(u, w ) = 0 allora l’utente u è indifferente alla parola w
Se π(u, w ) < 0 allora l’utente u è interessato negativamente alla parola
w
Giuffrida, Zarba (UdC, Neodata)
Profili
Lunedı̀ 2 dicembre 2013
8 / 61
Profilazione per parole: Esempio
Assumiamo che un utente u ha letto un articolo con il seguente testo
Il Catania ha vinto lo scudetto.
Il profilo di u potrebbe essere il seguente
π(u, “Catania”) = 0, 80
π(u, “vinto”) = 0, 27
π(u, “scudetto”) = 0, 53
L’utente u è quindi interessato ad articoli che contengono le parole
“Catania”, “vinto”, e “scudetto”
Giuffrida, Zarba (UdC, Neodata)
Profili
Lunedı̀ 2 dicembre 2013
9 / 61
Profilazione per categorie
Nella profilazione per categorie, si costruisce una funzione
π : U × C → [−1, 1]
dove U è l’insieme degli utenti, e C è l’insieme delle categorie
Intuitivamente
Se π(u, c) > 0 allora l’utente u è interessato alla categoria c
Se π(u, c) = 0 allora l’utente u è indifferente alla categoria c
Se π(u, c) < 0 allora l’utente u è interessato negativamente alla
categoria c
Giuffrida, Zarba (UdC, Neodata)
Profili
Lunedı̀ 2 dicembre 2013
10 / 61
Profilazione per categorie: Esempio
Assumiamo che un utente u ha letto 2 articoli di politica, 1 articolo di
sport, e 3 articoli gossip.
Il profilo di u potrebbe essere il seguente
π(u, “Politica”) = 0, 33
π(u, “Sport”) = 0, 17
π(u, “Gossip”) = 0, 50
L’utente u è quindi molto interessato ad articoli di gossip, abbastanza
interessato ad articoli di politica, e poco interessato ad articoli di sport
Giuffrida, Zarba (UdC, Neodata)
Profili
Lunedı̀ 2 dicembre 2013
11 / 61
Profilazione per categorie: Esempio
Assumiamo che un utente u ha letto 2 articoli di politica, 1 articolo di
sport, e 3 articoli gossip.
Assumiamo inoltre che l’utente u abbia valutato negativamente
l’articolo di sport
Il profilo di u potrebbe essere il seguente
π(u, “Politica”) = 0, 33
π(u, “Sport”) = −0, 17
π(u, “Gossip”) = 0, 50
L’utente u è quindi molto interessato ad articoli di gossip, abbastanza
interessato ad articoli di politica, e negativamente interessato ad
articoli di sport
Giuffrida, Zarba (UdC, Neodata)
Profili
Lunedı̀ 2 dicembre 2013
12 / 61
Sommario
1
Perché costruire profili utenti per quotidiani online
2
Costruzione profili utente per parole e loro utilizzo
3
Costruzione profili utente per categoria e loro utilizzo
4
Effetto coda lunga
5
Analisi profili utente
Giuffrida, Zarba (UdC, Neodata)
Profili
Lunedı̀ 2 dicembre 2013
13 / 61
Articoli
Un articolo è costituito da testo libero in linguaggio naturale. Ad
esempio, un articolo potrebbe contenere il seguente testo
Il Catania ha vinto lo scudetto.
Vogliamo rappresentare gli articoli in maniera compatta al fine di
rendere più semplici
il calcolo della similarità di due articoli distinti
la costruzione del profilo degli utenti per parole
l’utilizzo del profilo utente per il suggerimento automatico di articoli
Rappresentazione più comune nota come TF-IDF
Giuffrida, Zarba (UdC, Neodata)
Profili
Lunedı̀ 2 dicembre 2013
14 / 61
TF-IDF
TF-IDF è un acronimo inglese che sta per term frequency-inverse
document frequency
È una tecnica usata per rappresentare il contenuto degli articoli con
una funzione
γ : A × W → [0, 1]
dove A è un corpus di articoli, e W è l’insieme delle parole.
L’idea
L’ordine delle parole non conta
γ(a, w ) > 0 se e solo se la parola w è presente nell’articolo a
γ(a, w ) è una misura dell’importanza che la parola w ha nel testo
dell’articolo a
In pratica, un po’ più complesso
Si rimuovono le stop words
Si riducono le parole alla radice
Giuffrida, Zarba (UdC, Neodata)
Profili
Lunedı̀ 2 dicembre 2013
15 / 61
Stop words
Le stop words sono parole prive di significato concreto. Occorrono
frequentemente negli articoli, ma hanno poca rilevanza sul contenuto
degli articoli
Le stop word sono filtrate, cioè rimosse prima di processare l’articolo
Esempi di stop words sono il, lo, la, i, gli, le, è, e, o, di, a, da, . . .
Giuffrida, Zarba (UdC, Neodata)
Profili
Lunedı̀ 2 dicembre 2013
16 / 61
Riduzione alla radice
Con la riduzione delle parole alla radice, parole distinte vengono
ridotte alla stessa radice comune
amico, amica, amici, amiche → amic
casa, case → cas
andare, andai, andò → and
Complicazione: forme irregolari
vado, vai, va, andiamo, andate, vanno → and
Due approcci principali
Forza bruta
Rimozione del suffisso
Giuffrida, Zarba (UdC, Neodata)
Profili
Lunedı̀ 2 dicembre 2013
17 / 61
Forza bruta
Per ridurre le parole alla radice con la forza bruta, si usa una tabella
di lookup. La parola viene ricercata nella tabella, per trovare una
corrispondenza. Se la corrispondenza è presente, la radice trovata
viene usata
Mancanza di eleganza, non essendo usato un vero algoritmo
Tabella di lookup molto grande e difficile da mantenere, che deve
essere aggiornata periodicamente
Risolve il problema delle irregolarità
vado, vai, va, andiamo, andate, vanno → and
Giuffrida, Zarba (UdC, Neodata)
Profili
Lunedı̀ 2 dicembre 2013
18 / 61
Rimozione del suffisso
Con la rimozione del suffisso, si utilizzano regole del tipo
se la parola finisce in “mente”, rimuovere “mente”
se la parola finisce in “endo”, rimuovere “endo”
se la parola finisce per vocale, rimuovere la vocale
Elegante, si basa su un vero algoritmo
Più facile da mantenere rispetto all’approccio della forza bruta
Basse prestazioni sulle irregolarità
vado, vai, va, andiamo, andate, vanno → and
Giuffrida, Zarba (UdC, Neodata)
Profili
Lunedı̀ 2 dicembre 2013
19 / 61
TF-IDF: Esempio
Si consideri l’articolo
Il Catania ha vinto lo scudetto
Dopo la rimozione delle stop words, l’articolo diventa
Catania vinto scudetto
Dopo la riduzione delle parole alla radice, l’articolo divante
Catania vinc scudett
Giuffrida, Zarba (UdC, Neodata)
Profili
Lunedı̀ 2 dicembre 2013
20 / 61
Contenuto dei documenti
Sia A un corpus di articoli il cui testo contiene parole in W
Vogliamo costruire una rappresentazione degli articoli in A
Rimuoviamo le stop words
Riduciamo le parole alla radice
Costruiamo una funzione
γ : A × W → [0, 1]
In particulare γ(a, w ) > 0 se e solo se la parola w è presente
nell’articolo a
Giuffrida, Zarba (UdC, Neodata)
Profili
Lunedı̀ 2 dicembre 2013
21 / 61
Term frequency
Dato un articolo a e una parola w , la term frequency tf(a, w ) di w in
a è il numero di volte che la parola w è presente in a
tf(a, w ) > 0 se e solo se la parola w è presente in a
Più frequentemente la parola w è presente in un articolo a, più alta è
la sua term frequency tf(a, w )
Giuffrida, Zarba (UdC, Neodata)
Profili
Lunedı̀ 2 dicembre 2013
22 / 61
TF-IDF: Esempio
Sia a il seguente articolo
Catania vinc scudett
Le term frequencies sono
tf(a, “Catania”) = 1
tf(a, “vinc”) = 1
tf(a, “scudett”) = 1
Giuffrida, Zarba (UdC, Neodata)
Profili
Lunedı̀ 2 dicembre 2013
23 / 61
Inverse document frequency
Sia A un corpus di articoli
Sia w una parola. La inverse document frequency idf(w ) di w è data
da
|A|
idf(w ) = log
|Aw |
dove Aw è l’insieme degli articoli che contengono la parola w
Più rara è una parola w nel corpus A, più alta è la sua inverse
document frequency idf(w )
Giuffrida, Zarba (UdC, Neodata)
Profili
Lunedı̀ 2 dicembre 2013
24 / 61
TF-IDF
Sia A un corpus di articoli, sia a un articolo, e sia w una parola
Sia tf(a, w ) la term frequency di w in a
Sia idf(w ) la inverse document frequency di w
La term frequency-inverse document frequency tfidf(a, w ) di w in a è
data da
tfidf(a, w ) = tf(a, w ) × idf(w )
Più frequentemente la parola w occorre in un documento a, più alta è
la tfidf(a, w )
Più rara è la parola w nel corpus A, più alta è la tfidf(a, w )
Giuffrida, Zarba (UdC, Neodata)
Profili
Lunedı̀ 2 dicembre 2013
25 / 61
TF-IDF: Esempio
Sia a il seguente articolo
Catania vinc scudett
Assumiamo
idf(“Catania”) = 3
idf(“vinc”) = 1
idf(“scudett”) = 2
Le term frequencies-inverse document frequencies sono
tfidf(a, “Catania”) = tf(a, “Catania”) × idf(“Catania”) = 1 × 3 = 3
tfidf(a, “vinc”) = 1 × 1 = 1
tfidf(a, “scudett”) = 1 × 2 = 2
Giuffrida, Zarba (UdC, Neodata)
Profili
Lunedı̀ 2 dicembre 2013
26 / 61
Rappresentazione degli articoli
Possiamo rappresentare il contenuto degli articoli usando la funzione
tfidf, cioè possiamo definire una funzione
γ0 : A × W → R
ponendo
γ 0 (a, w ) = tfidf(a, w )
Questa rappresentazione però è troppo sensibile alla lunghezza
dell’articolo, avendo valori più alti per gli articoli lunghi
Noi siamo più interessati a una rappresentazione che non sia sensibile
alla lunghezza degli articoli, e che catturi soprattutto la distribuzione
delle parole nei documenti
Giuffrida, Zarba (UdC, Neodata)
Profili
Lunedı̀ 2 dicembre 2013
27 / 61
Rappresentazione degli articoli
Normalizzando la funzione γ 0 possiamo costruire una funzione
γ : A × W → [0, 1]
ponendo
γ 0 (a, w )
γ(a, w ) = s X
(γ 0 (a, w 0 ))2
w 0 ∈W
Si noti che la funzione γ è normalizzata, avendo la proprietà
X
(γ(a, w ))2 = 1
w ∈W
Giuffrida, Zarba (UdC, Neodata)
Profili
Lunedı̀ 2 dicembre 2013
28 / 61
TF-IDF: Esempio
Sia a il seguente articolo
Catania vinc scudett
Le term frequencies-inverse document frequencies sono
tfidf(a, “Catania”) = 3
tfidf(a, “vinc”) = 1
tfidf(a, “scudett”) = 2
Per normalizzare, calcoliamo un fattore di divisione pari a
p
√
32 + 12 + 22 = 14 = 3, 74
Quindi
γ(a, “Catania”) = 3/3, 74 = 0, 80
γ(a, “vinc”) = 1/3, 74 = 0, 27
γ(a, “scudett”) = 2/3, 74 = 0, 53
Giuffrida, Zarba (UdC, Neodata)
Profili
Lunedı̀ 2 dicembre 2013
29 / 61
Similarità fra articoli
Siano a e b due articoli. La similarità σ(a, b) di a a b è
X
σ(a, b) =
γ(a, w )γ(b, w )
w ∈W
σ(a, b) ∈ [0, 1]. In particulare, se σ(a, b) è vicina a 1, allora gli articoli
a and b sono simili. Se invece σ(a, b) è vicina a 0, allora gli articoli a
e b sono dissimili
Più parole hanno in comune due articoli, più sono simili
Giuffrida, Zarba (UdC, Neodata)
Profili
Lunedı̀ 2 dicembre 2013
30 / 61
Similarità fra articoli: Esempio
Consideriamo gli articoli
a: Catania vinc scudett
b: Longobarda vinc scudett
Gli articoli condividono due parole, e la loro similarità si ottiene
calcolando
γ(a, “vinc”) × γ(b, “vinc”) + γ(a, “scudett”) × γ(b, “scudett”)
Giuffrida, Zarba (UdC, Neodata)
Profili
Lunedı̀ 2 dicembre 2013
31 / 61
Costruzione profilo utente per parole
Vogliamo costruire il profilo di un utente basandoci sulla
rappresentazione degli articoli
Vogliamo costruire una funzione
π : U × W → [−1, 1]
dove U è l’insieme degli utenti, e W è l’insieme delle parole.
L’idea
Se π(u, w ) > 0 allora l’utente u è interessato alla parola w
Se π(u, w ) = 0 allora l’utente u è indifferente alla parola w
Se π(u, w ) < 0 allora l’utente u è interessato negativamente alla parola
w
Giuffrida, Zarba (UdC, Neodata)
Profili
Lunedı̀ 2 dicembre 2013
32 / 61
Ratings degli utenti
Assumiamo che gli utenti valutino gli almeno alcuni articoli, fornendo
una funzione
r : U × A → {−2, −1, 0, 1, 2}
Gli utenti possono valutare gli articoli con un numero di stellette da
un minimo di 1 a un massimo di 5, e le stellette vengono convertite in
ratings numerici da -2 a 2
Se un utente non ha valutato un articolo, si assume che il rating per
quell’articolo sia pari a 0 se l’articolo non è stato letto, e pari a 1 se
l’articolo è stato letto
Giuffrida, Zarba (UdC, Neodata)
Profili
Lunedı̀ 2 dicembre 2013
33 / 61
Costruzione profilo utente per parole
Possiamo rappresentare gli utenti costruendo una funzione
π0 : U × W → R
ponendo
π 0 (u, w ) =
X
r (u, a)γ(a, w )
a∈A
Questa rappresentazione però è troppo sensibile al numero di articoli
valutati dagli utenti dell’articolo, avendo valori più alti quando un
utente valuta molti articoli
Noi siamo più interessati a una rappresentazione che non sia sensibile
al numero di articoli valutati, e che catturi soprattutto la distribuzione
delle parole secondo gli interessi degli utenti
Giuffrida, Zarba (UdC, Neodata)
Profili
Lunedı̀ 2 dicembre 2013
34 / 61
Costruzione profilo utente per parole
Normalizzando la funzione π 0 possiamo costruire una funzione
π : U × W → [−1, 1]
ponendo
π 0 (u, w )
π(u, w ) = s X
(π 0 (u, w 0 ))2
w 0 ∈W
Si noti che la funzione π è normalizzata, avendo la proprietà
X
(π(u, w ))2 = 1
w ∈W
Giuffrida, Zarba (UdC, Neodata)
Profili
Lunedı̀ 2 dicembre 2013
35 / 61
Costruzione profilo utente per parole: Esempio
Consideriamo gli articoli
a: Catania vinc scudett
b: Longobarda vinc scudett
Assumiamo che un utente u abbia letto entrambi gli articoli, ma
abbia valutato l’articolo a con 5 stellette pari a un rating uguale a 2,
e l’articolo b con 2 stellette pari a un rating uguale a 1
r (u, a) = 2
r (u, b) = −1
Giuffrida, Zarba (UdC, Neodata)
Profili
Lunedı̀ 2 dicembre 2013
36 / 61
Costruzione profilo utente per parole: Esempio
Dopo un po’ di calcoli, il profilo utente per u potrebbe essere il
seguente
π(u, “Catania”) = 0, 85
π(u, “Longobarda”) = −0.42
π(u, “scudett”) = 0, 28
π(u, “vinc”) = 0, 12
Si noti quindi che l’utente u è interessato ad articoli sul Catania, e
negativamente interessato ad articoli sulla Longobarda
Giuffrida, Zarba (UdC, Neodata)
Profili
Lunedı̀ 2 dicembre 2013
37 / 61
Utilizzo profilo utente per parole
Vogliamo utilizzare il profilo utente per suggerire a un utente quegli
articoli che potrebbero maggiormente interessargli
Vogliamo definire una funzione
ρ : A × U → [−1, 1]
dove ρ(a, u) è la rilevanza che l’articolo a ha rispetto all’utente u
Intuitivamente, se ρ(a, u) è vicino a 1 allora l’articolo a è rilevante per
l’utente u. Se invece ρ(a, u) è vicino a 0 o addirittura negativo, allora
l’articolo a non è rilevante per l’utente u
Giuffrida, Zarba (UdC, Neodata)
Profili
Lunedı̀ 2 dicembre 2013
38 / 61
Utilizzo profilo utente per parole
Per definire la funzione
ρ : A × U → [−1, 1]
poniamo
ρ(a, u) =
X
γ(a, w )π(u, w )
w ∈W
Pertanto, un articolo a sarà rilevante per un utente u quando contiene
parole per cui l’utente u è interessato
Giuffrida, Zarba (UdC, Neodata)
Profili
Lunedı̀ 2 dicembre 2013
39 / 61
Utilizzo profilo utente per parole: Esempio
Consideriamo un utente u con il seguente profilo
π(u, “Catania”) = 0, 85
π(u, “Longobarda”) = −0.42
π(u, “scudett”) = 0, 28
π(u, “vinc”) = 0, 12
Consideriamo un articolo a con la seguente rappresentazione
π(a, “Catania”) = 0, 67
π(a, “perd”) = 0.33
π(a, “Longobarda”) = 0, 67
La rilevanza dell’articolo a rispetto all’utente u sarà quindi
0, 67 × 0.85 − 0, 67 × 0, 42 = 0.29
Giuffrida, Zarba (UdC, Neodata)
Profili
Lunedı̀ 2 dicembre 2013
40 / 61
Sommario
1
Perché costruire profili utenti per quotidiani online
2
Costruzione profili utente per parole e loro utilizzo
3
Costruzione profili utente per categoria e loro utilizzo
4
Effetto coda lunga
5
Analisi profili utente
Giuffrida, Zarba (UdC, Neodata)
Profili
Lunedı̀ 2 dicembre 2013
41 / 61
Profilazione alternativa per categorie
Profiliamo gli articoli secondo le loro categorie di appartenenza.
Sia C l’insieme delle categorie
Assumiamo che esiste una funzione
γ : A × C → [0, 1]
dove γ(a, c) è uguale al grado di appartenenza dell’articolo a alla
categoria c
Giuffrida, Zarba (UdC, Neodata)
Profili
Lunedı̀ 2 dicembre 2013
42 / 61
Profilazione alternativa per categorie
Assumiamo che la funzione
γ : A × C → [0, 1]
sia normalizzata, cioè che soddisfi la seguente proprietà
X
γ(a, c) = 1
c∈C
La classificazione degli articoli può essere fatta a mano dall’editore,
oppure automaticamente da un classificatore
Giuffrida, Zarba (UdC, Neodata)
Profili
Lunedı̀ 2 dicembre 2013
43 / 61
Profilazione degli utenti per categorie
Costruiamo una funzione
π0 : U × C → R
ponendo
π 0 (u, c) =
X
r (u, a)γ(a, c)
a∈A
Questa rappresentazione però è troppo sensibile al numero di articoli
valutati dagli utenti dell’articolo, avendo valori più alti quando un
utente valuta molti articoli
Noi siamo più interessati a una rappresentazione che non sia sensibile
al numero di articoli valutati, e che catturi soprattutto la distribuzione
delle categorie secondo gli interessi degli utenti
Giuffrida, Zarba (UdC, Neodata)
Profili
Lunedı̀ 2 dicembre 2013
44 / 61
Costruzione profilo utente per categorie
Normalizzando la funzione π 0 possiamo costruire una funzione
π : U × C → [−1, 1]
ponendo
π 0 (u, c)
π(u, c) = X
|π 0 (u, c 0 )|
c 0 ∈C
Si noti che la funzione π è normalizzata, avendo la proprietà
X
|π(u, c)| = 1
c∈C
Giuffrida, Zarba (UdC, Neodata)
Profili
Lunedı̀ 2 dicembre 2013
45 / 61
Utilizzo profilo utente per categorie
Vogliamo utilizzare il profilo utente per suggerire a un utente quegli
articolo che potrebbero maggiormente interessargli
Vogliamo definire una funzione
ρ : A × U → [−1, 1]
dove ρ(a, u) è la rilevanza che l’articolo a ha rispetto all’utente u
Intuitivamente, se ρ(a, u) è vicino a 1 allora l’articolo a è rilevante per
l’utente u. Se invece ρ(a, u) è vicino a 0 o addirittura negativo, allora
l’articolo a non è rilevante per l’utente u
Giuffrida, Zarba (UdC, Neodata)
Profili
Lunedı̀ 2 dicembre 2013
46 / 61
Utilizzo profilo utente per categorie
Per definire la funzione
ρ : A × U → [−1, 1]
poniamo
ρ(c, u) =
X
γ(a, c)π(u, c)
c∈C
Pertanto, un articolo a sarà rilevante per un utente u quando
appartiene a categorie a cui l’utente u è interessato
Giuffrida, Zarba (UdC, Neodata)
Profili
Lunedı̀ 2 dicembre 2013
47 / 61
Utilizzo profilo utente per categorie: Esempio
Consideriamo un utente u con il seguente profilo
π(u, “Politica”) = 0, 33
π(u, “Sport”) = −0.17
π(u, “Gossip”) = 0, 50
Consideriamo un articolo a con la seguente rappresentazione
π(a, “Sport”) = 1.00
La rilevanza dell’articolo a rispetto all’utente u sarà quindi
−0.17 × 1.00 = −0.17
Giuffrida, Zarba (UdC, Neodata)
Profili
Lunedı̀ 2 dicembre 2013
48 / 61
Sommario
1
Perché costruire profili utenti per quotidiani online
2
Costruzione profili utente per parole e loro utilizzo
3
Costruzione profili utente per categoria e loro utilizzo
4
Effetto coda lunga
5
Analisi profili utente
Giuffrida, Zarba (UdC, Neodata)
Profili
Lunedı̀ 2 dicembre 2013
49 / 61
Coda lunga
La personalizzazione degli articoli basata sul profilo utente ha un
effetto importante sulla cossiddetta coda lunga
Il concetto di coda lunga ha suscitato un interesse crescente con
l’avvento dei negozi virtuali in Internet
Per coda lunga si itende la distribuzione dell’accesso degli utenti a un
vasto insieme di prodotti
Giuffrida, Zarba (UdC, Neodata)
Profili
Lunedı̀ 2 dicembre 2013
50 / 61
Coda lunga
In un negozio tradizionale, le vendite si concentrano su pochi prodotti
che però sono venduti in grande quantità. In un negozio tradizionale,
quindi, la parte sinistra della curva ha una superficie maggiore della
parte destra della curva
In un negozio virtuale, invece, la parte destra della curva ha una
superficie maggiore della parte sinistra della curva, perché in un
negozio virtuale il volume complessivo delle vendite è maggiore per i
prodotti di nicchia
Giuffrida, Zarba (UdC, Neodata)
Profili
Lunedı̀ 2 dicembre 2013
51 / 61
Coda lunga per i quotidiani online
In assenza di personalizzazione, i quotidiani online si comportano
come negozi tradizionali, per il semplice motivo che lo spazio nella
homepage è limitato
Ad esempio, in una analisi su un periodo di un mese sulla fruizione del
quotidiano www.repubblica.it, solo 780 articoli su 41.000 articoli
pubblicati sono apparsi nell’homepage, ma benché pochi, questi
articoli hanno generato l’80% del traffico del quotidiano
Giuffrida, Zarba (UdC, Neodata)
Profili
Lunedı̀ 2 dicembre 2013
52 / 61
Coda lunga per i quotidiani online
In presenza di personalizzazione, agli utenti non vengono proposti
soltanto gli articoli che appaiono nell’homepage, ma gli vengono
proposti anche gli articoli presenti nelle pagine personalizzate
Pertanto, una maggiora gamma di articoli viene proposta agli utenti,
con l’effetto di alzare la coda lunga, e in generale di aumentare il
traffico generato dal quotidiano
Giuffrida, Zarba (UdC, Neodata)
Profili
Lunedı̀ 2 dicembre 2013
53 / 61
Sommario
1
Perché costruire profili utenti per quotidiani online
2
Costruzione profili utente per parole e loro utilizzo
3
Costruzione profili utente per categoria e loro utilizzo
4
Effetto coda lunga
5
Analisi profili utente
Giuffrida, Zarba (UdC, Neodata)
Profili
Lunedı̀ 2 dicembre 2013
54 / 61
Analisi profili: Interesse medio complessivo
Dopo aver costruito la funzione di profilazione per categorie
π : U × C → [−1, 1]
possiamo costruire una funzione
π : C → [−1, 1]
che rappresenta l’interesse medio complessivo degli utenti del
quotidiano alle varie categorie
Giuffrida, Zarba (UdC, Neodata)
Profili
Lunedı̀ 2 dicembre 2013
55 / 61
Analisi profili: Interesse medio complessivo
L’interesse medio complessivo degli utenti ci dice quali sono le
categorie di maggiore interesse considerando la popolazione globale
Ad esempio, su un quotidiano online di politica, potremmo avere
π(“Politica”) = 0.40
π(“Cronaca”) = 0.30
π(“Sport”) = 0.20
π(“Gossip”) = 0.10
Giuffrida, Zarba (UdC, Neodata)
Profili
Lunedı̀ 2 dicembre 2013
56 / 61
Analisi profili: Interesse medio complessivo
Per calcolare effettivamente l’interesse medio complessivo, possiamo
fare una media pesata su tutti gli utenti, pesando di più quegli utenti
che hanno letto di più
Poniamo
X
π(c) =
|Au |π(u, c)
u∈U
X
|Au |
u∈U
dove Au è l’insieme degli articoli letti dall’utente u
Giuffrida, Zarba (UdC, Neodata)
Profili
Lunedı̀ 2 dicembre 2013
57 / 61
Analisi profili: Categoria di maggiore interesse
Dato un utente u, possiamo dedurre quale è la categoria che lo
interessa maggiormente, secondo due possibili metodi
Nel primo metodo la categoria dell’utente u è
cat(u) = argmax π(u, c)
c∈C
Giuffrida, Zarba (UdC, Neodata)
Profili
Lunedı̀ 2 dicembre 2013
58 / 61
Analisi profili: Categoria di maggiore interesse
Nel secondo metodo la categoria dell’utente u è
cat(u) = argmax
c∈C
π(u, c)
π(c)
In questo metodo la categoria di maggiore interesse è quella che più si
discosta in senso positivo rispetto all’interesse medio complessivo
Ad esempio, in un giornale dove l’interesse complessivo medio
maggiore è per la categoria politica, non necessariamente gli utenti
con interesse maggiore a politica avranno, secondo il secondo metodo,
la categoria principale uguale a politica
Giuffrida, Zarba (UdC, Neodata)
Profili
Lunedı̀ 2 dicembre 2013
59 / 61
Analisi profili: Correlazione tra categorie
La correlazione fra categorie è un indice compreso tra −1 e 1,
negativo se le categorie sono negativamente correlate, e positivo se le
categorie sono positivamente correlate
Ad esempio, se corr(“Politica”, “Cronaca”) = 0, 8 allora in media un
utente interessato a Politica sarà interessato anche a Cronaca
Se invece corr(“Politica”, “Sport”) = 0, 2 allora in media un utente
interessato a Politica sarà poco interessato a Sport
Se invece corr(“Politica”, “Gossip”) = −0, 5 allora in media un utente
interessato a Politica sarà negativamente interessato a Gossip
Giuffrida, Zarba (UdC, Neodata)
Profili
Lunedı̀ 2 dicembre 2013
60 / 61
Analisi profili: Correlazione tra categorie
Il calcolo delle correlazioni fra categorie si basa sull’indice di Pearson,
secondo la seguente formula
cov(c1 , c2 )
p
corr(c1 , c2 ) = p
cov(c1 , c1 ) cov(c2 , c2 )
where
X
cov(c1 , c2 ) =
|Au |(π(c1 , u) − π(c1 ))(π(c2 , u) − π(c2 ))
u∈U
X
|Au |
u∈U
Giuffrida, Zarba (UdC, Neodata)
Profili
Lunedı̀ 2 dicembre 2013
61 / 61