sentiment analysis

29
Twitter Sentimental Analysis Pagliaro Alessandro

Upload: alessandro-pagliaro

Post on 16-Jan-2017

65 views

Category:

Engineering


2 download

TRANSCRIPT

Page 1: Sentiment analysis

Twitter Sentimental Analysis

Pagliaro Alessandro

Page 2: Sentiment analysis

Elezioni Comunali Napoli 2016

Page 3: Sentiment analysis

Sentiment Analysis Workflow

Page 4: Sentiment analysis

Per scaricare i tweet in maniera “legale” è possibile utilizzare 3 tipologie di API, attraverso chiavi generate durante la registazione a Twitter secondo il protocollo OAuth.Rest API : permettono di ricavare informazioni sul proprio profilo (tweets, followers, info account ) senza alcuna limitazione temporale.Search API : permettono di cercare qualsiasi tweet con limiti nell’indicizzazione (circa 7 giorni).Streaming API : mi permettono di collezionare tutti i tweet che vengono postati in tempo reale.

About Twitter

Page 5: Sentiment analysis

Tweepy è una liberia Python appositamente per le API di Twitter

Sorgente 1 : Search API

Page 6: Sentiment analysis

Le Twitter API ufficiali non permettono di accedere a tweets più vecchi di circa una settimana. Alcuni tools forniti da terze parti permettono di accedere all’indicizzazione completa di Twitter (Gnip) ma richiedono dei costi proporzionati al numero di tweets da scaricare. Per evitare tutte queste limitazioni è stato usato un crawler. Questo programma si basa sulla normale ricerca che è possibile fare attraverso la Twitter Search da browser, infatti, specificando una ricerca e facendo lo scroll della pagine un JSON provider genera tutti i tweet secondo il loro ordine di pubblicazione senza alcuna limitazione temporale.

Sorgente 2 : Twitter Crawler

Page 7: Sentiment analysis

Query per hashtag e mentions (anche per emoticon) sui candidati

Recupero solo determinati campi (tweetid, username, tetx, date, etc…) dagli oggetti JSON relativi ai tweets

Memorizzazione in un CSV definendo il Dataset

Tweets

Page 8: Sentiment analysis

JSON Tweets

Page 9: Sentiment analysis

Dataset : 1 Maggio/ 9Giugno

Page 10: Sentiment analysis

Hbase è un database distribuito column-oriented usato sulla sommità di HDFS.

Il suo data model colonnare è simile a Google Big Table ed è progettato per fornire un acceso rapido in lettura/scrittura ad un enorme quanità di dati memorizzati in HDFS (Hadoop File System).

HBase fornisce una scalabilità orizzontale lineare. Possiede meccanismi di failover automatico (reliability, availability) Garantisce letture e scritture consistenti. (timestamp) E’ scritto in Java ed è possibile sfruttarlo attraverso API client

Java. Fornisce meccanismi di replicazione dei dati. (HDFS – fattore 3 ) Nasce perchè HDFS consente un accesso solo sequenziale ai dati.

HBase

Page 11: Sentiment analysis

HBase on HDFS Pseudo-Distribuited Mode

Simuliamo l’architettura HBase-HDFS di un sistema distribuito su un unico nodo.

Page 12: Sentiment analysis

Master-Slave : è costruito sulla sommità di HDFS, si adatta alla sua architettura e ne sfrutta I benefici di scale out e affidabilità. (HMaster-Namenode e HRegionServer-Datanode).

Random access: usa meccanismi in-memory (MemStore) e di log per garantire letture e scritture performanti e affidabili.

Column–Oriented data model: memorizza le tabelle per column family in ogni HStore, perciò è possibile definire un data model che sfrutti I vantaggi di queste tecniche di memorizzazione.

Auto-Sharding: all’interno di ogni HRegionServer vengono memorizzate le tabelle per column family in range di row_id ordinati all’interno delle HRegion, man mano che queste si riempiono ne vengono definite di nuove su cui ridistribuire I dati.

HBase: Pro

Page 13: Sentiment analysis

Hbase : Data Model

Page 14: Sentiment analysis

HBase fornisce 5 operazioni di base sui dati: Put, Get, Delete, Scan e Increment.

HBase fornisce sia delle API Java sia altre API di tipo Thrift, Avro, REST e la Shell. (No SQL-like)

API Java: Per l’inserimento dei dati è stata usata la classe Put dopo aver creato la HTable, mentre per la lettura la Scan (a cui è stato settato un filter sulla data, per poter ottenere i tweet giornalieri su cui ciclare).

HBase client interface

Page 15: Sentiment analysis

Hbase : Put

Page 16: Sentiment analysis

Hbase: Scan(Filter)

Page 17: Sentiment analysis

Il vocabolario è stato ricavato dalla repository GitHub del progetto openNER (Open Polarity Enhanced Name Entity Recognition) che punta al supporto dei tool di natural processing language.

https://github.com/opener-project/public-sentiment-lexicons/tree/master/propagation_lexicons/it

Attraverso il WordCount in MapReduce sul Dataset contente i tweets sono state recuperati gli hashtag e le emoticon più utilizzate ed aggiunte al Vocabolario.

Sentiment: VocabolarioIta

Page 18: Sentiment analysis

Sentiment: VocabolarioIta

Page 19: Sentiment analysis

Apache OpenNLP è una libreria open-source di machine learning che permette di elaborare testi in linguaggio naturale.

Alcuni delle funzionalità che supporta sono: Tokenization Sentence segmentation Part-of-speech tagging Named entity extraction Document categorizer

Sentiment: OpenNLP

Page 20: Sentiment analysis

Questa funzionalità permette di classificare del testo in categorie predefinite, questo è possibile attraverso un algoritmo di massima entropia (MaxEnt).

1.L’entropia viene usata nel contesto della teoria dell’informazione per misurare l’incertezza del contenuto informativo, più ho incertezza più ho informazione

2.L’algoritmo prevede quindi di addestrare il nostro modello con un training set etichettato (VocabolarioIta) con un buon livello di entropia.

3.Nella fase di addestramento del modello possiamo regolare alcuni paramenti (cutoff, iterations).

4.Alla fine dell’addestramento, il modello analizzando il singolo tweet è capace di classificarlo (positive, negative).

openNLP – Document Categorizer

Page 21: Sentiment analysis

openNLP – Document Categorizer

Page 22: Sentiment analysis

Sentiment: Algoritmo Selezionando i tweet per ogni candidato e per ogni giorno, è stato determinato:

Un sentimento non normalizzato e pesato per retweets

Un sentimento normalizzato e pesato per retweets

Se non ci sono retweets la formula si riduce a

Page 23: Sentiment analysis

Sentiment: Algoritmo

Page 24: Sentiment analysis

MicroStrategy

MicroStrategy è un provider di soluzioni di BI, mobile software e cloud-based services.

Nel Magic Quadrant di Gartnet è collocato tra i Visionaries.

Fornisce solo soluzioni di BI “puro”. Si basa su un sistema di OLAP relazionale (ROLAP)

che permette agli utenti di analizzare l’intero database relazionale a tutti i livelli di granularità.

La sua piattaforma di BI permette di ottenere dashboard interattive, scorecard, report altamente formattati, query ad hoc, soglie e alert.

Page 25: Sentiment analysis

Risultati : Eventi influenti

Per analizzare i risultati è possibile fare riferimento ad una serie di eventi che possono aver condizionato il sentimento in uno dei due modi

9 maggio - DeMagistris: “Mi hanno strappato la toga ma non possono strapparmi l'anima. Renzi, vattene a casa! Devi avere paura! Ti devi cagare sotto”.

25/30 maggio - http://www.liberiamonapoli.it/pure-de-magistris-tiene-famiglia/

27 maggio - Berlusconi a Napoli per Lettieri 3 Giugno - Renzi a Napoli per Valeria Valente

Page 26: Sentiment analysis

Risultati

Page 27: Sentiment analysis

Risultati

Page 28: Sentiment analysis

Risultati

Page 29: Sentiment analysis

Costi

TwitterCrawler