fbpx

Possiamo analizzare le emozioni con l’Intelligenza Artificiale?

da | 1 Mar 2021 | Blog

Negli ultimi anni, grazie ad Internet, è aumentata esponenzialmente la nostra possibilità di esprimere opinioni ed emettere giudizi, sotto forma sia di pollici sollevati che di lunghe recensioni. A differenza però della chiacchiera da bar, stavolta le nostre frasi non volano via nell’aria ma rimangono per sempre immagazzinate su uno storage digitale. E’ possibile estrarre informazione se non addirittura valore da questa mole di dati?

Qualche giorno fa un politico ha postato su un noto social network un discorso d’addio che è stato commentato da oltre 100000 utenti. Pensate anche a un video su Youtube di un gruppo pop che può ricevere centinaia di milioni di visualizzazioni ma anche milioni di commenti. E’ impensabile che una persona, o anche un team, legga tutti questi commenti traendone una qualsiasi conclusione. Il politico è ancora amato? I fan hanno gradito la nuova canzone? Solo uno strumento di analisi automatico può fornire queste risposte.

La Sentiment Analysis

La Sentiment Analysis è un processo di calcolo che serve proprio ad identificare e categorizzare le opinioni espresse in un frammento di testo, principalmente per capire se l’attitudine dell’autore del testo verso quel particolare soggetto è positiva, negativa o neutra. L’intento di questo tipo di analisi, nata come un campo dell’elaborazione del linguaggio naturale (NLP) è quindi quello di interpretare e catalogare le emozioni.

Quali sono gli scenari d’uso possibili? La Sentiment Analysis è un ottimo strumento per analizzare recensioni di prodotti, condurre ricerche di mercato, monitorare un servizio clienti o un social media e infine gestire la reputazione di un’organizzazione o di una persona.

Ma da un punto di vista statistico, è ragionevole pensare che il campione di persone che frequentano il web sia rappresentativo dell’opinione pubblica mondiale, o nazionale o locale? Molte aziende e organizzazioni pensano di sì ed hanno scommesso su questo strumento per dirigere le proprie attività. Come si conduce allora una “sentiment analysis”?

Partiamo dai dati: un campione di frasi, che potrebbero essere dei tweet o recensioni di qualsiasi tipo e utilizziamo delle librerie software per condurre una analisi. I passi fondamentali da compiere sono:

  • eliminare le parole che non contribuiscono a determinare uno stato d’animo: articoli, preposizioni, congiunzioni, etc. In gergo queste parole sono dette “stop word”.
  • creare una tabella, chiamata frequency distributions, per stabilire quante volte ciascuna parola compaia in un testo.
  • estrarre le concordanze, ossia capire dove appare nel testo una parola e quali parole la circondano.
  • estrarre le collocazioni, ossia quella serie di parole che appaiono spesso insieme in una frase. Possiamo avere combinazioni di 2, 3 o 4 parole.

Ma questi sono solo i passi iniziali che conducono all’utilizzo di un modello pre-trained da scegliere secondo il contesto del nostro problema. Potremmo utilizzare ad esempio NLTK (Natural Language ToolKit), una piattaforma per scrivere programmi in Python che lavorano con il linguaggio umano. Questa piattaforma offre, tra le altre sue librerie, VADER (Valence Aware Dictionary and sEntiment Reasoner), un modello specializzato per il linguaggio usato nei social media, particolarmente adatto per frasi brevi e gergali, che però perde efficacia quando le frasi sono più lunghe e strutturate.

I passi successivi sono quelli classici: valutare l’efficienza del modello, eventualmente modificarlo aggiungendo ulteriori feature e infine utilizzarlo su nuovi dati.

Facciamo un esempio

I principali provider Cloud offrono servizi già pronti per l’elaborazione del linguaggio naturale come abbiamo visto nell’articolo di Salvatore. Diventa quindi immediato identificare il linguaggio del testo, estrarre le frasi chiave, i luoghi, le persone, i marchi o gli eventi e capire se il testo ha una connotazione positiva o negativa. Tutti offrono la possibilità di creare un modello personalizzato per un proprio dominio definendo delle specifiche entità personalizzate.

In EllyCode abbiamo sviluppato alcune librerie multi-cloud che ci consentono di fare test molto semplici su Azure, AWS e GCP. Non ho resistito alla tentazione di provarle analizzando il testo della canzone “No Surprises” dei Radiohead.

Perché i Radiohead? Diciamo che ho voluto agevolare gli algoritmi di Machine Learning scegliendo quello che da molti (ma non da me) è considerato come uno dei gruppi dai testi più deprimenti della storia della musica.

La prima frase è

A heart that’s full up like a landfill
A job that slowly kills you
Bruises that won’t heal

You look so tired, unhappy
Bring down the government
They don’t, they don’t speak for us

Qui ci sono pochi dubbi. I risultati degli algoritmi sono molto chiari:

 AWSAzureGCP
Mixed0,05
Negative0,850,88
Neutral0,070,01
Positive0,030,11
Score, Magnitude-0,8  0,8

In GCP lo score indica l’emozione complessiva della frase mentre la magnitude indica quanto contenuto emozionale è presente nel documento. Ad esempio, un sentimento chiaramente positivo potrà essere valutato con uno score di 0,8 e una magnitude di 3,0 mentre uno chiaramente negativo con uno score di -0,7 e una magnitude di 4,0

La frase successiva è la seguente

I’ll take a quiet life
A handshake of carbon monoxide
No alarms and no surprises

E’ interessante notare come Amazon dia una interpretazione chiaramente positiva, mentre gli altri due servizi hanno meno certezze.

 AWSAzureGCP
Mixed0,02
Negative0,050,37
Neutral0,250,45
Positive0,680,18
Score, Magnitude-0,3  0,3

Sicuramente la frase è più corta e il vero significato circondato da parole apparentemente positive. Questi sistemi però sono incapaci di distinguere il sarcasmo e non hanno saputo cogliere un messaggio ancora più negativo rispetto alla prima strofa.

Conclusioni

E’ chiaro che siamo davanti a strumenti potentissimi ma anche a scenari largamente inesplorati. Un tweet è diverso da una poesia o da una chiacchierata in una stanza o da un comizio politico: il contesto, come vedremo anche nei prossimi articoli, è sempre essenziale!

Continuate a seguirci!

Scritto da

Scritto da

Salvatore Sorrentino

Scopri di più da Ellycode

Abbonati ora per continuare a leggere e avere accesso all'archivio completo.

Continue reading