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