Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
hack my iPhone7Giorgio De Caro - Mauro Pelucchi
Progetto Fondamenti BI e Web Data Analytics LAB1 + LAB2
hack my iPhone7Link
http://www.hammer-project.com/labs/iphone7/index.html
http://www.hammer-project.com/labs/iphone7/index.htmlhttp://www.hammer-project.com/labs/iphone7/index.html
ImageMapLink to TreeMap
http://www.hammer-project.com/labs/iphone7/index.html#supermario
Comunity & Super Mario ChallengeLink to Comunity Super Mario Run
Super Mario Run has a very cool comunity. In yellow you can see the @TPindell community (group by in-degree): @TPindell is an actor, comedian, producer and YouTube personality.
@HAL 9000 is the sentient on-board computer of the spaceship Discovery.
@Mashable, @Time of India and @Pete Pachal (and all the purple cloud) are bid digital media websites.
@Saint Chikna is an indian artist a live in Dombivali (the most literate town of India): he has 41,300 follower in India.
http://www.hammer-project.com/labs/iphone7/index.html#supermario
Link to Big Data Analytics
Story telling
https://public.tableau.com/profile/mauro.pelucchi#!/vizhome/AppleiPhone7/iPhone7
Sentiment Analysis
Link to Sentiment Analysis
http://www.hammer-project.com/labs/iphone7/index.html#sentiment
Indice
1. Obiettivi e destinatari 2. Fasi del progetto 3. Fonti e dati 4. Modello ER 5. Architettura 6. Strumenti e ciclo di vita dei dati 7. Features similarity e Jaro-Winkler 8. GraphDB e Neo4J 9. Comunity & Features 10. Text Mining e Clustering 11. ImageMap 12. Sentiment Analysis 13. Story telling 14. Problemi
Obiettivi e Destinatari
Analisi analitica dei tweet degli utenti prima, durante e dopo il keynote del 7 Settembre 2016, individuazione delle features e
delle loro macro-classi.
Sintetizzare le aspettative degli utenti in modo da poterle facilmente individuare e
visualizzare.
Individuare ed analizzare sotto-comunità di utenti che aspettano e commentano la presenza o meno
di novità particolari.
Valutare il sentiment dei tweet prima, durante e dopo il keynote
del 7 Settembre 2016.
1 3
2 4
“hack my iPhone7” è un progetto di analisi e monitoring del lancio del nuovo iPhone7 attraverso i tweet degli utenti
Marketing e Dipartimento di Ricerca e Sviluppo sono i
destinatari principali di “hack my iPhone7”
L’analisi analitica dei tweet e delle features permette di individuare le
aspettative degli utenti e di visualizzarle in maniera sintetica e
veloce. Più di 160,000 tweet verrano sintetizzati e visualizzati in un’unica rappresentazione grafica
attraverso una story telling su modello “Martini Glass”.
Fasi del ProgettoComprensione del campo applicativo: ricerche su vari forum di settore e specialistici delle aspettative principali e delle caratteristiche più importanti dei prodotti competitor.
Esplorazione dei dati: valutazione delle variabili più importanti, creazione del modello dati GraphDB ed esplorazione delle features più importanti.
Scelta degli algoritmi di similarity, text mining e clustering: selezione degli algoritmi e creazione dei data mart aggregati. Sentiment Analysis.
Presentazione dei risultati: story telling, commento ai risultati e creazione della pagina web.
Analisi dei dati e ricerca di pattern: verifica dei risultati ottenuti e selezione del modello di visualizzazione migliore.
Creazione di un insieme di dati per l’analisi: scraping da twitter dei tweet legati al lancio del nuovo iPhone7, integrazione e pulizia dei dati.
I tweet sono stati scaricati da Twitter attraverso le parole chiave “iphone”,
“iphone7”, “apple”, “appleevent”.
Utenti totali 124.258
Tweet 164.453
Il testo è stato processato per poter essere analizzato. Oltre alle stop words abbiamo escluso
tutte i termini molto frequenti all’interno del nostro dataset
(“iphone”, “apple”, “keynote”) e quelli relativi a url web (“http”,
“https”)
FONTI NUMERI TESTO
DUPLICATE TWEET GEOLOCALIZZAZIONE UTENTI
Durante la procedura di scraping abbiamo aggiunto un controllo in Talend per gestire le righe doppie (per
tweet_id).
Solo il 0,1271% dei nostri tweet è
georeferenziato. Non possiamo fare analisi usando questo dato.
Per costruire l’entità USER abbiamo unito i dati dei mittenti
(user_id, user_name e user_screen_name) con i dati degli utenti menzionati (solo
user_id). Il 5,6% degli utenti ha solo il campo user_id valorizzato.
Fonti & Dati
Modello ER
Inte
graz
ione
, orc
hest
razi
one
e ge
stio
ne d
el
cicl
o di
vita
dei
dat
iArchitettura
sDW Dati grezzi
Qualità, pulizia, business rules, aggregazione Talend
bDW Dati di
business
File CSV e JSON
• Verifica veloce dei dati • Flessibile • Veloce da
implementare • Integrazione • Consistente
Vantaggi
• Poco agile • Complessa da gestire
(lungo periodo) • Non funziona in tempo
reale
Svantaggi
Scraping con Talend
Strumenti e ciclo di vita dei dati
Field Ingestions Manage Storage Mining Visualization
Java custom code per algoritmo di Jaro-Winkler
e chiamate REST per collegamento dei dati in Neo4J
HTML single page per la presentazione dei risultati: la
pagina è il punto di inizio dell’analisi storytelling con
metodologia “Martini Glass”
Scraping e creazione del RAW-DWHScraping dei tweet
Attraverso l’utilizzo di Talend e del plugin per la connessione a Twitter sono stati scaricati 160.000 tweet dal 31/8/2016 al 10/9/2016.
I tweet sono stati salvati in formato RAW su un piccolo DWH Mysql.
I dati da twitter sono stati ricercati attraverso parole chiave (selezione a priori) “iphone”, “iphone7” e “ios10”.
Per coprire tutto l’evento (ed avere dati confrontabili) abbiamo lavorato selezionando le date di inizio/fine e il tweet id. Ogni tweet è stato marcato con l’etichetta: - prima dell’evento (before) - durante il keynote (during) - dopo l’evento (after)
Features similarity con Jaro-WinklerFeatures
Attraverso l’esplorazione dei siti web specializzati e dei forum delle comunità abbiamo selezionato una serie di caratteristiche desiderate dagli utenti oppure presenti sugli smartphones di fascia alta (competitors del nuovo iPhone7).
Ogni features è stata categorizzata attraverso una macro-classe: design, hardware. software e user-experience.
Per ogni features abbiamo indicato una serie di sinonimi; l’obiettivo è quello di associare ad ogni tweet le features di cui l’utente sta parlando. Questo è stato possibile attraverso la distanza di Jaro-Winkler implementata attraverso codice Java richiamato in automatico da Talend.
Features similarity con Jaro-WinklerJaro-Winkler Definiamo t e tq le due stringhe da confrontare.
- |t’| —> numero di caratteri corrispondenti fra t e tq (rispettivamente | t’q |) - T(t’, t’q) —> numero di caratteri trasposti
Un carattere di t (posto alla posizione i) corrisponde ad un carattere di tq se lo stesso carattere si trova in tq alla posizione j, dove j dista da i a meno della metà della lunghezza della stringa t.
“Thought the iPhone7 wasn't gone have no buttons on it just straight screen idk”
Flat button pressure-sensitive
home button touch home
Home Buttonfeatures
synonyms
Thought iPhone7, have buttons, straight screen…2-gram
Jaro-Winkler 0.439
Variante Winkler —> la similarità di Jaro viene pesata attraverso il numero di caratteri in comune nel prefisso di t e tq.
t
tq
GraphDB - Aggregate model Neo4j
Troppi dati per il nostro Neo4J!!! Abbiamo ridotto il modello creando un grafo per individuare le sotto-comunità di utenti.
Attraverso un job Talend estraiamo i dati in formato CSV e chiamiamo direttamente le API Rest esposte da Ne4J per caricare i dati ed esplorare le elaborazioni.
Comunity & Features
match (a:user)-[:IN_RELATION]-(b:user) with a, collect(b) as sn, count(distinct b) as n, (count(distinct b)*(count(distinct b)-1))/2 as nk match (a)-[:IN_RELATION]-(b1)-[rel:IN_RELATION]-(b2)-[:IN_RELATION]-(a) WITH a, sn, n, nk, count(distinct rel) as r, toFloat(count(distinct rel))/toFloat(nk) as coef where coef = 1 with a, sn FOREACH(c in RANGE(0, size(sn)-1) | FOREACH(n1 in [sn[c]] | Set n1.community= id(a), a.community = id(a) )) return a, sn
CREATE INDEX ON :user(comunity)
match p1=(u1:user)-[r1:INTEREST]->(k:keyword) 3 and toInt(r2.count_tweet) > 3 with u1, u2, count(distinct k) as score where score > 2 CREATE (u1)-[:IN_RELATION {wt: score}]->(u2)
La relazione IN_RELATION viene creata tra gli utenti che hanno almeno 2 interessi in comune (dove l’interesse viene misurato attraverso il numero di tweet relativi ad una features).
Il coefficiente di clustering locale di un nodo misura la sua possibilità di formare una comunità (una cricca) con i suoi vicini.
Per ogni nodo andiamo a calcolare la misura in-degree: quanti nodi possono raggiungere direttamente il nodo selezionato. Troviamo così i nodi (le persone) più influenti, più “ascoltate”.
L’obiettivo è trovare sotto-comunità di utenti, cricche o comunità interessate a particolari features.
Comunity & FeaturesTroviamo le comunità locali e i nodi che le mettono in connessione:
match p=shortestPath((c1)-[:MENTIONS|RELATED|INTEREST|TWEET*..3 ]-(c2)) where EXISTS (c1.community) and EXISTS (c2.community) and (c1.community c2.community) with c1.community as a1, c2.community as a2, collect(p) as pmin where a1 < a2 return a1,a2,pmin[0] order by a1 asc, a2 asc
Comunity & Super Mario ChallengeTroviamo tutti i nodi in relazione alla features “Super Mario”
MATCH p=(u1:user)-[r:IN_RELATION]->(u2:user)-[t]->(k:keyword {keyword:'Super Mario'}) RETURN u1.user_id, u2.user_id, sum(toInt(t.count_tweet)) as num_tweet, sum(r.wt) as rel_weight
Comunity & Super Mario ChallengeTroviamo tutti i nodi in relazione alla features “Super Mario” (e visualizziamoli attraverso un grafo)
MATCH p=(u1:user)-[r:IN_RELATION]->(u2:user)-[t]->(k:keyword {keyword:'Super Mario'}) RETURN u1.user_id, u2.user_id, sum(toInt(t.count_tweet)) as num_tweet, sum(r.wt) as rel_weight
• La nuvola viola rappresenta tutti gli utenti relativi ai siti web e blog tecnologici.
• La nuvola gialla è relativa alla comunità di TPindell, un attore, produttore e personalità YouTube.
• La nuvola azzurra è tutto ciò che ruota attorno all’account HAL 9000 (principalmente studenti, accademici).
• La nuvola arancione è relativa all’artista indiano Chikna e a tutti i suoi 41.000 followers (per la maggior parte indiani).
Text Mining e Clustering
La fase di Text Mining o KDT (Knowledge Discovery in Texts) ha l’obiettivo di estrarre informazioni dai testi non strutturati dei tweet. In particolare ci siamo occupati di: • Social Listening: cioè monitoraggio dell’evento con
l’obiettivo di rilevare il sentiment delle conversazioni; • Social Analytics: analisi testuale per clustering e
creazione di gruppi omogenei di tweet in termini di argomento trattato.
La fase di process documents ha seguito questi step: - estrazione del contenuto e pulizia dai tag HTML - lower case di tutto il testo; - tokenizzazione; - filtro stop words (inglese); - filtro tokens (lunghezza > 2); - generazione degli n-grammi (
Come rappresentare 160.000 tweet? ImageMap
Come rappresentare 160.000 tweet? Come sintetizzare le aspettative di 124.000 persone (tra utenti e menzioni) e misurare l’outcome di marketing e la ricerca e sviluppo?
Mining VisualizationAttraverso RapidMiner e il coseno similare abbiamo raggruppato i tweet di gruppi (30 gruppi per ogni fase).
Di ogni cluster abbiamo estratto i termini che rappresentano il centroide: ordinando i valori ed escludendo le parole dopo un certo threshold.
I termini che costituisco il centroide sono stati raggruppati ed inviati alle API Rest esposte da: • Flickr • Europea • DBPedia • Google Custom Search
L’obiettivo è rappresentare il cluster attraverso un’immagine in una TreeMap: la grandezza dell’immagine è data dal numero di tweet del cluster (abbiamo valutato anche il numero di utenti).
Le performance migliori sono risultate quelle delle API di Google Custom Search: i termini della query sono stati puliti dalle parole più comuni del dataset (“apple”, “iphone”, …).
ImageMap
ImageMap
Before keynote During keynote
After keynote
ImageMap > Before
Le immagini trovate si riferiscono allo stato di interesse pre-annuncio (announcement, get involved) e ai rumors principali: le nuove AirPods (le cuffie) ed iOS 10.
ImageMap > During
Durante l’evento le persone hanno visionato il prodotto presentato da Tim Cook: emergono le nuove caratteristiche già annunciate come gli AirPods, la nuova batteria e la resistenza all’acqua.
Notiamo anche l’inatteso ZOOM OTTICO e la presenza dell’app Super Mario Run (integrata con iWatch).
ImageMap > After
Dopo l’evento le persone hanno continuato a parlare e pensare agli AirPods e al nuovo display (abbinato al nuovo speaker sono un ottimo strumento per vedere film e video).
Moltissime immagini richiamano all’acquisto, ma una delle figure più grandi richiama la serie televisiva LOST in relazione forse alla leardship tecnologica e innovativa che Apple ha perso nel settore degli smartphones.
Story tellingL’approccio scelto è quello del Martini Glass: da un punto iniziale, impostato da noi attraverso la TreeMap e il grafo, portiamo l’utente verso la story telling in Tableau. Qui il nostro utente ha a disposizione tutti i dati in diverse serie temporali, TreeMap e nuvole di parole che può navigare a piacere. All’interno delle varie dashboard è possibile visionare le features principali (Super Mario, lo zoom ottico) e qualche innovazione presente sui prodotti competitor ma mancante sul nuovo iPhone7.
Sentiment AnalysisWordNet è un database
semantico-lessicale per la lingua inglese. L'organizzazione del
lessico si avvale di raggruppamenti di termini con
significato affine, chiamati “synset”. All’interno dei synset le
differenze di significato sono numerate e definite.
Per calcolare il sentiment di un tweet abbiamo diviso il testo e filtrato le parole inutili. Ogni termine è stato
cercato sul dizionario di WordNet: il primo significato di una parola ha la
maggiore influenza su un sentimento (tutti gli altri un peso inferiore).
Il valore sentimento è nell'intervallo [-1.0,1.0] dove -1 significa molto negativo e 1 molto positivo.
Il sentiment totale del tweet è dato dalla media del sentiment di ogni termine.