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).
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
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
- Sul linguaggio di programmazione R: http://www.r-project.org
- Sulla piattaforma IBM AlchemyAPI http://www.alchemyapi.com
- Tool per effettuare Sentiment Analysis: http://www.cogitoapi.com
- Link sul Text Mining: http://www.r-bloggers.com/text-mining-the-completeworks-ofwilliam-shakespeare/
- Per utilizzare le API di Twitter tramite R http://davetang.org/muse/2013/04/06/usingthe-r_twitter-package/
- Per creare una Web App con R http://www.r-bloggers.com/how-to-create-atwittersentiment-analysis-using-r-and-shiny/
- Sull’approccio Naive Bayesiano alla classificazione del sentiment:
- V. Narayanan, I. Arora, A. Bhatia, «Fast and accurate sentiment classification using an enhanced Naive Bayes model», disponibile al seguente link
- D. Jurafsky, J. H. Martin, «Classification: Naive Bayes, Logistic Regression, Sentiment» in «Speech and Language Processing» disponibile al seguente link: