+ All Categories
Home > Documents > hack my iphone - Hammer Project · 2016. 11. 2. · I tweet sono stati scaricati da Twitter...

hack my iphone - Hammer Project · 2016. 11. 2. · I tweet sono stati scaricati da Twitter...

Date post: 29-Jan-2021
Category:
Upload: others
View: 0 times
Download: 0 times
Share this document with a friend
30
hack my iPhone7 Giorgio De Caro - Mauro Pelucchi Progetto Fondamenti BI e Web Data Analytics LAB1 + LAB2
Transcript
  • 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

    Twitter

    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.


Recommended