Twitter, le trivelle e la matematica

On October 2, 2016

Inseriamo in questo articolo il materiale complementare all'articolo "Twitter, le trivelle e la matematica: gli italici cinguettii sul Referendum del 17 aprile" pubblicato su Archimede n. 3 del 2016 scritto da  Andrea Capozio e Davide Passaro.

L'obiettivo dell'articolo della rubrica "La leva di Archimede" è quello di mostrare come alcuni strumenti matematici possono essere utilizzati per realizzare la "sentiment analysis" ovvero l'analisi delle opinioni espresse dagli utenti dei social netwok.

Per fare un esempio concreto si è scelto di usare i tweet relativi  al referendum sulle trivelle.

In particolare in questo post si vorrebbero fornire i dati utilizzati e alcuni esempi di codice (il linguaggio utilizzato è stato R) che analizzano questi dati.

L'idea di base è quella di fornire del materiale utile al docente (o chi per lui) desiderasse avere degli esempi facilmente riutilizzabili.

I dati grezzi estratti da Twitter si possono scaricare qui: scarica file Referendum.csv

I dati elaborati con R per estrarre gli hashtag significativi con le loro frequenze sono stati inseriti nel seguente file: Referendum_hashtag.csv

Qui di seguito si inseriscono  i comandi R per ottenere il wordcloud (come spiegato anche nell'articolo).Co-HashCloud2 (1)

hashtag <- read.table("Referendum_hashtag.csv", header=TRUE, sep=";", fill = TRUE, blank.lines.skip = TRUE, quote="\"", allowEscapes=FALSE, fileEncoding="UTF-8”)

library(wordcloud)

# plot wordcloud

wordcloud(hashtag$Word, hashtag$Freq, colors=brewer.pal(8, "Dark2"), scale = c(4, 1), random.order=FALSE,random.color = TRUE, rot.per = 0.25, min.freq = 2, font = 1)

Interessante potrebbe essere anche ottenere l'istogramma sul "sentiment". I dati si possono scaricare qui e il codice da usare è il seguente:

sentiment <- read.table("Referendum_sentiment.csv", header=TRUE, sep=";", fill = TRUE, blank.lines.skip = TRUE, quote="\"", allowEscapes=FALSE, fileEncoding="UTF-8")

library(ggplot2)

p <- ggplot(sentiment, aes(x=Sentiment)) +

    geom_bar(aes(y=..count.., fill=Sentiment)) +

    scale_fill_brewer(palette="Dark2", direction=-1) +

    labs(x="polarity categories", y="number of tweets", 

         title = "Sentiment Analysis of Tweets about Italian Referendum 17.04.2016”) +

    theme(plot.title = element_text(color="#000000", size=14, face="bold.italic"),

          axis.title.x = element_text(color="#993333", size=14, face="bold"),

          axis.title.y = element_text(color="#993333", size=14, face="bold”))

# plot histogram

p

RefSentiment (1)

Per un commento commento ai dati, l'approfondimento sul "data mining" effettuato sui social network e l'esempio di semplice classificatore Bayesiano illustrato nell'articolo, vi rimandiamo al sito della rivista in cui è possibile acquistare la versione elettronica.

Link utili

  1. V. Narayanan, I. Arora, A. Bhatia, «Fast and accurate sentiment classification using an enhanced Naive Bayes model», disponibile al seguente link
  2. D. Jurafsky, J. H. Martin, «Classification: Naive Bayes, Logistic Regression, Sentiment» in «Speech and Language Processing» disponibile al seguente link:

Davide Passaro

Leave a Reply

Your email address will not be published. Required fields are marked *