Twitter, come Facebook, è un altro grande produttore di dati. “Tecnicamente” non sono “open data” tuttavia, possono essere utilizzati ed analizzati.
Gli ambiti di analisi dei dati Twitter sono molteplici, in questo articolo ci concentreremo sulla Sentiment Analysis, ovvero l’analisi del linguaggio naturale per identificare il “sentiment” positivo o negativo del tweet.
La struttura dell’articolo è suddivisa in tre parti: la prima parte descrive velocemente come recuperare i dati da twitter, la seconda introduce il Machine Learning di cui la Sentiment Analysis fa parte e, infine, la terza descrive i risultati ottenuti analizzando 1 giorno di twitter su #trump.
Per prima cosa ci occuperemo di scaricare in modo massivo una consistente quantità di tweet, seguendo le indicazioni fornite sulla pagina developer di Twitter. Il programma realizzato sfrutta le librerie per scaricare real-time tutti i tweet con uno specifico hashtag. In particolare, per questa analisi abbiamo scelto di analizzare l’hashtag #trump ed abbiamo lasciato girare il programma per un giorno dalle 22.00 del 28.05.2017 alle 22.00 del 29.05.2017. Alla fine è stato accumulato un file di 600 MB per un totale di 100.000 tweet.
Machine Learning
La base dati appena scaricata è stata quindi analizzata attraverso un algoritmo di Machine Learning. Lo strumento di sentiment utilizzato è il Vader, un tool che mette a disposizione un lessico di base e delle regole per analizzare i sentimenti espressi nei social media. La Sentiment Analysis funziona un po’ come tutti gli algoritmi di Machine Learning relativi alla tipologia “Supervised Learning” e si basa sui seguenti step:
- Costruzione di un lessico di base, con frasi distinte tra positive e negative.
- Definizione di un algoritmo di machine learning (es. Naive Bayes) che “impara” le regole necessarie a classificare una frase in positivo o negativo sulla base del lessico appena definito.
- Training dell’algoritmo sul lessico di base per verificare se i risultati ottenuti dall’algoritmo rispecchiano quanto definito nel lessico di base.
- Download di nuove frasi (es. da Twitter).
- Applicazione dell’algoritmo alle nuove frasi che si occuperà, in autonomia, di decidere se la frase è “positiva” oppure “negativa”.
Il tool VADER è inglobato nella libreria python nltk (Natural Language Tool Kit) e permette di espletare i punti 1,2,3. Mentre, per i punti 4 e 5, realizzeremo uno script ad hoc per scaricare gli ultimi tweet relativi all’hashtag #trump ed elaborarli tramite l’algoritmo di machine learning.
Sentiment Analysis su #trump
La base dati è stata realizzata scaricando 24h di tweets relativi all’hashtag #trump, a cavallo tra il 28.05.2017 e il 29.05.2017, collezionando un totale di 100.000 tweet. Per comprendere meglio i risultati della sentiment è importante ricordare i principali eventi di questi giorni su Trump:
- Rischio “impeachment” a causa delle rivelazioni sullo scambio di informazioni tra Russia e USA.
- G7 a Taormina – Trump non cede sugli accordi per il clima.
- G7 a Taormina – Merkel accusa Trump di essere “inaffidabile”.
La prima analisi è una semplice distribuzione del sentiment dei tweet: positivi vs negativi.
Emerge una notevole quantità di tweet “neutri”, per i quali l’algoritmo non ha evidenziato un particolare sentiment positivo o negativo. Tra i tweet classificati emergono di poco i negativi rispetto ai positivi. La sentiment analysis sembrerebbe confermare che, nonostante le notizie negative del giorno, Trump risulta ancora molto popolare tra gli americani.
Una seconda possibile analisi dei tweet è l’andamento del sentiment lungo il periodo temporale (orario), per verificare se e come il sentiment cambia rispetto agli eventi giornalieri.
Purtroppo non sono riuscito a trovare una fonte di news con il dettaglio dell’ora per associarla ai picchi negativi o positivi. Probabilmente, tale tipo di analisi ha più senso su un orizzonte temporale settimanale.
Un ulteriore tipo di analisi dei tweets riguarda la posizione geografica da cui viene inviato il tweet. In questo caso twitter mette a disposizione 3 tipi di informazione sulla posizione:
- Le coordinate -> su 100.000 tweet solo su 77 sono presenti.
- La location -> informazione inserita manualmente dall’utente, con conseguente disomogeneità delle informazioni. Tuttavia, emerge ad esempio tra i negativi New York, mentre tra i positivi il Texas e la California.
- La timezone -> dalla quale emerge che la maggior parte dei tweet provengono dall’America.
Infine, è interessante analizzare le parole più frequenti all’interno dei tweets positivi o negativi. Per i positivi troviamo, ad esempio, ‘TrumpTaxPlan’ mentre tra i negativi: ‘spied’ o ‘Merkel’.
A livello più generale, l’analisi effettuata sui dati Twitter pone due riflessioni:
- La qualità del dato e gli algoritmi di machine learning non sono ancora completamente maturi per un’analisi approfondita del “sentimento umano”. Tuttavia, sembra che la strada da fare non sia poi cosi lunga.
- Analizzando il dato nudo e crudo, al netto della qualità, c’è comunque qualcosa che non torna… nonostante le notizie negative del giorno i tweet con sentiment positivo sono uguali ai tweet negativi.
Prendendo a campione qualche tweet positivo incontriamo spesso: “TRUMP SHARES MY VALUES GOD FAMILY COUNTRY STRONG WORK ETHIC GREAT EXAMPLE 4 OUR KIDS 2 EMULATE“. Tale tipo di tweet, ovviamente con sentiment positivo, sembra un tweet di propaganda volto ad influenzare l’opinione pubblica. Un tweet simile si ritrova più e più volte in una serie infinita di retweet.
E’ chiaro che, oltre ad influenzare la nostra analisi, influenza anche il comportamento delle persone, un pò sulla scia delle fake-news su Facebook. In questo caso però, il post non è falso ma è semplicemente propaganda politica con effetti, sugli utilizzatori dei Social, ancora tutti da comprendere.
Purtroppo, non è un caso se pochi giorni fa il fondatore di twitter ha rilasciato un’intervista in cui dichiara fallito il suo intento di dare voce a tutti e, addirittura, si scusa dichiarando che, senza Twitter, molto probabilmente Trump non sarebbe diventato presidente.
Il problema della manipolazione delle informazioni e del “sentiment” delle persone sui social è un tema caldo che i BIG dell’informatica stanno cercando di arginare ma, al momento, non sembra essere di facile soluzione.
Riferimenti:
- Machine Learning
- Sentiment Analysis – Analisi del Sentiment
- Vader – Hutto, C.J. & Gilbert, E.E. (2014). VADER: A Parsimonious Rule-based Model for Sentiment Analysis of Social Media Text. Eighth International Conference on Weblogs and Social Media (ICWSM-14). Ann Arbor, MI, June 2014.
Codice GitHub:
Le fonti e il codice utilizzato sono stati pubblicati al seguente repository: od_twitter