Con il termine sentiment analysis o analisi del sentiment si indica il processo computazionale volto ad identificare e classificare opinioni espresse in un testo, al fine di determinare se l’atteggiamento dello scrivente verso un particolare soggetto, prodotto, tema ecc è positivo, negativo o neutro. Vediamo come il linguaggio statistico R può aiutarci a svolgerla.

 La sentiment analysis è senz’altro una delle tecniche di text mining più note e utilizzate. Esistono svariati strumenti online, gratuiti e a pagamento che permettono l’analisi del sentiment, ma dagli strumenti gratuiti non ci si possono aspettare grandi risultati e quelli a pagamento possono essere molto costosi. Una soluzione è utilizzare il software statistico open-source R che garantisce il controllo dell’intero processo e l’affidabilità di un programma utilizzato nelle università e in svariate aziende di tutto il mondo, per esempio Google, Pfizer, Merck, Bank of America, the InterContinental Hotels Group, Shell e Facebook (Data Analysts Captivated by R’s Power). Certo, per usarlo occorre almeno imparare a programmare un po’, dal momento che R è più un ambiente di sviluppo e un linguaggio di programmazione che non un comodo programma con interfaccia user-friendly.

Preparazione dei dati

Dopo aver importato i commenti e convertito le date di pubblicazione (scritte nell’umanamente incomprensibile formato UNIX) procediamo con un pizzico di pulizia dei dati e identifichiamo le lingue in cui i messaggi sono scritti. Qui mi avvalgo delle risorse messe a disposizione dal package “textcat”, che nel nostro caso identifica parecchie lingue.  Come emerge dal grafico sottostante delle 10 lingue più frequenti nel corpus (espresse in proporzioni), la lingua più utilizzata è senza dubbio l’inglese. Raggruppiamo i testi in inglese (14767 commenti) e concentriamo l’analisi su di essi.

Commenti per anno

La distribuzione dei commenti per anno sembra essere alquanto significativa. Il picco dei commenti risale al 2012 e possiamo ipotizzare, ricorrendo alla nostra conoscenza della biografia del genio di Apple, che ciò dipenda dal fatto che alla fine del 2011 muore Steve Jobs.

Sentiment analysis

R dispone di diverse soluzioni per l’analisi del sentiment . Qui ho voluto provare il package “sentimentr” sviluppato dal data scientist Tyler Rinker (che ha anche un bel blog con un sacco di cose interessanti per chi usa R).

Sentimentr può essere usato con diversi vocabolari (anche personalizzati) e, a differenza di altri sistemi di analisi implementa un indispensabile valence shifter, ossia un dizionario aggiuntivo che interagisce con quello principale interpretando negazioni, amplificazioni e altre parti del discorso che possono causare non pochi problemi ad un’analisi del sentiment. Per intendersi, “mi piace” non significa la stessa cosa di “non mi piace” e il valence shifter permette di interpretare quel “non mi piace” tenendo conto del “non”.
In questa analisi del sentiment uso il dizionario “Bing”, sviluppato da Bing Liu e Minqing Hu.

Il sentiment per anno

Se visualizziamo la dispersione e la media (il rombo rosso) del sentiment annuale dei commenti, ordinato per polarità del sentiment, troviamo che il 2009, poco dopo la pubblicazione del video, presenta il sentiment medio più positivo, mentre l’anno con il sentiment medio meno positivo è il 2012. Ciò appare coerente con la nostra ipotesi.

La morte di Steve Jobs su YouTube

Dicotomizziamo i dati classificando i commenti in due classi a seconda che la loro data di pubblicazione sia precedente oppure consecutiva alla morte del fondatore di Apple, e a seconda che il loro sentiment sia negativo oppure non-negativo (positivo o neutro).

Rispetto al periodo precedente, i commenti con sentiment negativo segnano un incremento del 97.76%. Prima dell’ottobre 2011 ha sentiment negativo circa un commento ogni cinque commenti positivi e neutri, mentre dopo quella data ha sentiment negativo circa un commento ogni due commenti positivi e neutri.
Il test del chi-quadrato (Pearson’s Chi-Square Test of Independence ) supporta l’ipotesi di una relazione statisticamente significativa tra la variabile temporale e quella del sentiment (X-squared = 161.21, p-value < 2.2e-16, phi = 0.104), e controllando più in particolare l’associazione locale tra le modalità sentiment negativo e periodo post ottobre 2011 calcolando l’indice di associazione di Edwards, troviamo un valore di 0.71, che indica una discreta associazione positiva (l’indice ha valore 0 per la massima dissociazione, 0.5 quando non esiste associazione, 1 in caso di massima associazione positiva).

Le parole del sentiment

Appurata l’esistenza di una relazione tra la polarità del commento e il periodo temporale precedente o successivo l’ottobre 2011 (che sappiamo coincidere con la data della morte di Steve Jobs) in cui l’utente YouTube lo ha scritto, possiamo provare a cercare prove sostantive a supporto della nostra ipotesi guardando ai termini più frequenti per il sentiment negativo e per quello positivo. Effettivamente, il sentiment negativo appare dipendere da parole che rinviano alla morte.

Occorre notare che tra le parole con sentiment negativo del dizionario Bing compare, di norma, anche “foolish”, ma in quest’analisi ho personalizzato il dizionario eliminando tale termine. Infatti, in questo contesto sarebbe stato fuorviante conteggiare tale termine come negativo, dal momento che è parte del celebre invito di Jobs ai laureati di Stanford: “Stay Hungry. Stay Foolish: io me lo sono sempre augurato per me stesso. E adesso lo auguro a voi. Stay Hungry. Stay Foolish” (traduzione del discorso).

Le parole con sentiment negativo e positivo che ricorrono più frequentemente possono essere visualizzate anche tramite word cloud. La prima rappresenta le parole con sentiment negativo, la seconda quelle con sentiment positivo. Entrambe sono decisamente eloquenti.

Rituali 2.0: analisi con LIWC

Per approfondire ulteriormente la sentiment analysis ho esportato i commenti in un file esterno e li ho analizzati tramite LIWC (Linguistic Inquiry and Word Count). LIWC conta la percentuale di parole che riflettono emozioni, stili di pensiero, interessi sociali e parti del discorso; è stato sviluppato da ricercatori con interessi nei settori della psicologia sociale, clinica, cognitiva e della salute, e le sue categorie sono state create per cogliere gli stati psicosociali a partire dall’espressione verbale. Attualmente è uno dei dizionari più usati nella ricerca scientifica in questo settore.

Delle svariate categorie d’analisi presenti in LIWC ne ho prese in considerazione soltanto alcune: sadness, anger, death e affiliation. Tristezza e idee relative alla morte sono incluse per verificare ulteriormente i dati ricavati dall’analisi svolta con il precedente dizionario, la categoria della rabbia è invece introdotta ipotizzando che la perdita di un leader carismatico (per quanto presente solo nell’immaginario collettivo) possa suscitare una reazione emotiva contraddistinta da questa emozione che potrebbe trovare espressione anche sul web, mentre la categoria dell’affiliazione, che nel dizionario LIWC rinvia in un certo grado a quella del bisogno di affiliazione di David McClelland, risponde all’ipotesi che un’ipotetica condizione di “lutto” possa incrementare il bisogno di affiliazione, che troverebbe uno spazio sociale proprio sulla rete, in questo caso nello spazio riservato ai commenti su YouTube. Ho quindi reimportato i dati in R per analizzarli.

Calcolando il chi quadro e gli odds ratio troviamo che la tristezza caratterizza significativamente i commenti successivi alla morte di Jobs piuttosto che quelli precedenti (X-squared = 85.281, p-value < 2.2e-16; OR: 2.71; 95% CI: 2.17, 3.37), così come la terminologia legata alla morte (X-squared = 44.673, p-value = 2.328e-11; OR: 2.27; 95% CI: 1.77, 2.90), ma curiosamente non si ravvisa significatività statistica per quanto riguarda la variabile rabbia (X-squared = 0.00029141, p-value = 0.9864; OR: 1,00; 95% CI: 0.85, 1.18) e nemmeno per quanto riguarda la variabile affiliazione (X-squared = 1.8087,  p-value = 0.1787; OR: 1.10; 95% CI: 0.96, 1.26).

Pertanto, in base a questi dati, possiamo considerare corroborata l’ipotesi di una variazione del sentiment connessa, almeno in parte, alla morte di Steve Jobs, ma dobbiamo respingere l’ipotesi che tale morte sia associata ad un sentimento di rabbia per la perdita e quella secondo cui in questi commenti trovi espressione un bisogno di affiliazione dovuto ad un ipotetica condizione di stress causata dalla perdita di Steve Jobs.

Cosa significano veramente, dunque, le espressioni di lutto scritte sotto questo video e analogamente sparse viralmente sui social media alla morte di un personaggio significativo dell’immaginario collettivo? Sono autentiche espressioni di lutto oppure hanno altri significati e funzioni? La questione, da questo punto di vista, resta aperta e apre a nuovi studi.

Sentiment analysis con R

Al di là dei risultati, che sollevano interrogativi interessanti relativi ai rituali di lutto 2.0, quanto volevamo mostrare è che la sentiment analysis con R può (e anzi deve) andare oltre il semplice conteggio dei termini positivi, negativi e neutri. Oltre all’analisi svolta, sarebbero ancora molte le analisi che si potrebbero svolgere su questi dati, aggregandoli e disaggregandoli in altro modo; per esempio potrebbe essere interessante scorporare i commenti relativi alla morte per analizzarli più in profondità, da un lato, e analizzare i restanti commenti così “depurati” da questo fattore, dall’altro;  potremmo anche approfondire lo studio di quel 2012 così tanto commentato e anche esplorare possibili associazioni tra i commenti presenti lungo i diversi anni ed eventuali notizie legate a Steve Jobs ed Apple.

Con R è possibile ampliare la propria analisi a piacimento, introducendo ipotesi, verificandole, esplorando i dati sotto molteplici punti di vista. Da questa prospettiva mi sembra innegabile il vantaggio che deriva dall’uso di questo strumento rispetto a programmi, ancorché comodi, più limitati e costosi.

 

Il Dalai Lama sembra aver detto: “Condividi la tua conoscenza. È un modo per raggiungere l’immortalità”. Non so se sia vero e di certo non lo posso garantire, ma se hai trovato l’articolo utile e interessante puoi condividerlo con uno dei pulsanti qui sotto. Grazie per la lettura!