Seguici su Telegram, ne vale la pena ❤️ ➡ @trovalost
Vai al contenuto

Guida pratica alla sentiment analysis: nascita, esempi pratici, uso, limiti

“Analisi del sentimento” (per tradurre in italiano sentiment analysis) è una traduzione un po’ maccheronica, e soprattutto non rende giustizia a ciò che questa affascinante branca dell’intelligenza artificiale effettivamente è. Analisi dell’umore, ad esempio, potrebbe rendere meglio l’idea, ma sarebbe anche meglio specificare il contesto: analisi dell’umore sulla base di un testo scritto.

In breve: L’analisi del sentiment è un procedimento automatizzato che permette di analizzare il testo al fine di determinare il sentimento espresso, che può essere positivo, negativo o neutro. Questa tecnica trova molteplici applicazioni, tra cui il monitoraggio dei social media, la gestione dell’assistenza clienti e l’analisi dei feedback da parte dei clienti.

Origini e fondamenti della disciplina

L’analisi del sentiment ha compiuto enomi passi avanti nel capire e classificare le emozioni espresse dai testi. I testi che sono tipicamente analizzati in questo ambito, infatti, sono per esempio commenti sui social oppure, più comunemente, recensioni dei prodotti online: analizzare l’umore dei testi e classificarlo può essere utile a dare un feedback “umorale” all’azienda, facendogli capire quanto siano soddisfatti (o meno) i suoi clienti. In prima istanza, quindi, la sentiment analysis non fa altro se non apporre un’etichetta “positivo” o “negativo” ad un testo, cosa che è possibile fare in modo molto semplice sfruttando librerie come autolabel. Nella documentazione viene riportato l’esempio di classificazione binaria di una recensione cinematografica, ovviamente nei termini di recensione positiva e negativa. Nella valutazione intervengono aspetti sintattici (come si scrive) e semantici (cosa si vuole tramettere) di vario tipo, tecniche di scomposizione del testo in linguaggio naturale (che già esistevano da tempo), attribuzione di punteggi e valutazione finale su base statistica (rating come media pesata, ad esempio). Va tenuto conto che la sentiment analysis deve essere in grado di gestire sia casi semplici (in cui il sentiment è lampante: “X non mi piace“) che casi meno ovvi (doppie negazioni: “X non mi dispiace“, sarcasmo e ironia: “Adoro uscire durante un temporale!“, ambiguità “Mi piace X, ma non lo consiglierei davvero a nessuno“).

Oltre ad un discorso di polarizzazione buoni/cattivi, bianchi/neri ecc., la classificazione del sentiment potrebbe mettere in ballo una gamma più ampia di stati emotivi, consentendo una valutazione ancora più dettagliata delle opinioni e delle emozioni degli individui. Questo approccio offre un vantaggio significativo nell’interpretazione dei testi e nella comprensione delle dinamiche del sentiment nel contesto della tecnologia per come viene usata nella maggiorparte dei casi pratici. Alla base di questa disciplina sembra esserci uno studio psicologico monumentale risalente a fine anni 60, firmato Gottschalk, Goldine, dal titolo “Misura degli stati psicologici attraverso l’analisi dei contenuti verbali”e reperibile online. Ovviamente l’idea che un sentiment (inteso come umore) sia determinabile in modo univoco solo dal testo (e non pure dal contesto in cui è stato scritto, ad esempio) sarà per molto tempo oggetto di controversie e potenziali controversie, ma la tecnologia sarà comunque in grado di allinearsi alle nuove scoperte riflettendo, come sempre, le varie sfumature scientifiche e/o punti di vista sull’argomento.

Esempi pratici di sentiment analysis in Python (NLTK)

Non mancano soluzioni open source per effettuare questo genere di attività dentro ad un software. Per esempio usando Python 3 e NLTK (Natural Language Toolkit):

import nltk
from nltk.sentiment import SentimentIntensityAnalyzer

# Creazione dell'istanza del sentiment analyzer
sia = SentimentIntensityAnalyzer()

# Testo da analizzare
text = "..."

# Analisi del sentiment
sentiment_scores = sia.polarity_scores(text)

# Interpretazione dei risultati
if sentiment_scores['compound'] >= 0.05:
sentiment = "Positivo"
elif sentiment_scores['compound'] <= -0.05:
sentiment = "Negativo"
else:
sentiment = "Neutrale"

# Stampa dei risultati
print("Testo: ", text)
print("Sentiment: ", sentiment)
print("Sentiment Scores: ", sentiment_scores)

In questo esempio, abbiamo sfruttato il SentimentIntensityAnalyzer di NLTK per analizzare il sentiment di un testo. Creiamo un’istanza del sentiment analyzer chiamata sia e passiamo il testo da analizzare. La funzione sia.polarity_scores() restituisce un dizionario di punteggi di sentiment, tra cui il punteggio complessivo chiamato “compound“. Successivamente, interpretiamo il punteggio compound per determinare se il sentiment è positivo, negativo o neutro. Infine, stampiamo il testo, il sentiment e i punteggi di sentiment.

Se scrivo “sono entusiasta del thrash metal“, ad esempio, il sentiment è reputato positivo.

Screenshot 2023 06 21 alle 11.49.08

Se invece scrivo di essere molto coinvolto dal genere, viene considerato neutro:Screenshot 2023 06 21 alle 11.48.48

In genere la valutazione è soggettiva ed è uno di quei casi in cui non può che essere così, a ben vedere: il sentiment è sempre relativo al singolo soggetto, e fa parte della relativizzazione delle opinioni che ben conosciamo sul web (e che spesso porta ad effetti collaterali nefasti).

Per eseguire questo codice, ricordo che è necessario avere installato NLTK e scaricare il corpus ‘vader_lexicon‘ eseguendo il comando

nltk.download('vader_lexicon')

prima dell’utilizzo (direttamente nel codice, nella quarta riga).

Conclusioni

Di sicuro la sentiment analysis, per quanto non troppo precisa in certi frangenti, risponde ad un’esigenza molto diffusa nelle aziende, su cui vale la pena riflettere: quella di ragionare per forza sui numeri, di calcolare degli indici di qualche tipo su cui ragionare, su cui dedurre, fare previsioni, stilare progettualità. Ma serve davvero? Siamo dell’idea che la tecnologia non sia altro che uno strumento, anche stavolta, nonostante l’insana tendenza che viviamo ogni giorno ad umanizzarla.

Non sappiamo fino a che punto possa essere significativo fare sentiment analysis ad oltranza e, come dire, solo il tempo saprà dirlo. (immagine di copertina: StarryAi, “un robot che verifica i miei sentimenti”)

👇 Da non perdere 👇



Trovalost esiste da 4469 giorni (12 anni), e contiene ad oggi 7559 articoli (circa 6.047.200 parole in tutto) e 15 servizi online gratuiti. – Leggi un altro articolo a caso
5/5 (1)

Ti sembra utile o interessante? Vota e fammelo sapere.

Questo sito contribuisce alla audience di sè stesso.
Il nostro network informativo: Lipercubo.it - Pagare.online - Trovalost.it.