Category Archives: Social

Un giorno con #trump

Twitter

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:

  1. Costruzione di un lessico di base, con frasi distinte tra positive e negative.
  2. 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.
  3. Training dell’algoritmo sul lessico di base per verificare se i risultati ottenuti dall’algoritmo rispecchiano quanto definito nel lessico di base.
  4. Download di nuove frasi (es. da Twitter).
  5. 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:

  1. Rischio “impeachment”  a causa delle rivelazioni sullo scambio di informazioni tra Russia e USA.
  2. G7 a Taormina – Trump non cede sugli accordi per il clima.
  3. 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:

  1. 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.
  2. 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:

  1. Machine Learning
  2. Sentiment Analysis – Analisi del Sentiment
  3. 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

Il Grafo Sociale di Facebook

Il Grafo Sociale

Social Network sono tra i più grandi produttori di dati e, alcuni di questi, sono accessibili pubblicamente tramite delle API [1].

Uno dei più noti social network è Facebook il quale basa i suoi dati sul “Social Graph”, ovvero una rappresentazione a grafo delle informazioni composta da: nodi, collegamenti e campi.

Ad esempio: data una persona è possibile risalire ai suoi post e, in base ai post, è possibile analizzare i commenti collegati al post.

L’idea di base è capire come poter utilizzare i dati disponibili per analizzare i metodi di comunicazione impiegati sulle pagine Facebook. Come esempio di studio, attraverso un’indagine sul numero di post e di like ricevuti, sono state analizzate le pagine di Salvini, Renzi e del M5S.

Salvini vs Renzi vs M5S

Il primo grafico mostra la distribuzione del numero di post raggruppati per anno di pubblicazione.

In totale dal 2010, i grillini hanno pubblicato 21.931 post, Salvini 16.007 e Renzi in ultima posizione con 3.742 post.

Chart by Visualizer

Il secondo grafico analizza invece la distribuzione del numero di like ricevuti sui post pubblicati, sempre raggruppati per anno di riferimento.

In questo caso, la situazione cambia drasticamente e, in prima posizione, sale Salvini con 50 milioni di like, in seconda Renzi con 10 Milioni di like e infine il Movimento 5 Stelle con 4 milioni.

Chart by Visualizer

Analisi dei "picchi" di likes

Osservando con maggior dettaglio l’andamento dei like ricevuti da Salvini, pagina Facebook con maggior numero di like, si nota a livello macro una crescita repentina avviata nel 2013, anno in cui diventa segretario della Lega Nord, a discapito di Umberto Bossi. Raggiunge il picco nel 2015 come antagonista di Matteo Renzi (Presidente del Consiglio dal 2014), dopodiché inizia la discesa. Ma più della discesa, quello che incuriosisce sono i “picchi”…

Analizzando i post con maggior numero di like presenti sui 4 picchi individuati, troviamo:

  • Ottobre 2014, 90.000 like –  Uno STUPRATORE tunisino di 28 anni, già in galera per violenza sessuale, è evaso dal carcere di Pordenone e ha violentato una ragazza di 28 anni. È stato arrestato. Fossi ministro, applicherei (come già sperimentato in numerosi Paesi europei) la CASTRAZIONE CHIMICA e poi lo rimanderei in Tunisia. Che dite?
  • Aprile 2015, 135.000 like – Ragazzi, da non credere! Ascoltate e divulgate.Sabato e domenica tutti in piazza, vieni a firmare. (Post associato ad un video in cui vengono intervistate due minorenni rom che si vantavano di rubare).
  • Giugno 2015, 97.550 like – Una mamma di 41 anni, separata e con due figli, si è impiccata vicino a Bologna. Le avevano staccato il gas, e per luglio rischiava lo sfratto.Una preghiera per questa mamma, un abbraccio ai suoi due cuccioli di 10 e 11 anni che non lasceremo soli, e tanta rabbia. Stato italiano, dove sei?
  • Novembre 2015, 95.484 like – Da FARE SUBITO.Sostegno militare alla Russia per annientare l’ISIS, controllo delle frontiere, blocco degli sbarchi ed espulsione dei clandestini, verifica a tappeto di tutte le occupazioni abusive nei nostri quartieri popolari, da Milano a Palermo. Ci hanno dichiarato GUERRA. E alla guerra non si risponde con le chiacchiere di Renzi e dell’inutile Alfano

Tutti argomenti relativi al tema dell’immigrazione.

In generale, la possibilità di interrogare i dati messi a disposizione dai Social Network apre un’infinita serie di analisi. Sarebbe stato interessante, ad esempio, indagare meglio le persone che hanno messo tutti quei like ai post di Salvini. Il numero di like ricevuti, sui post tra il 2014 e il 2015, sono pari ai like che in media riceve il Presidente Obama ai suoi post…

Purtroppo o per fortuna, per questioni di privacy, Facebook non permette l’accesso completo alle informazioni personali, resta un pò il dubbio che dietro a tutti quei like ci siano persone vere o programmi creati ad hoc.


Riferimenti:

  1. API Facebook

Codice GitHub:

Le fonti e il codice utilizzato sono stati pubblicati al seguente repository: od_facebook