Odio, amore e sentiment analysis
Il computer che sa leggere
Da quando hai iniziato a leggere questo articolo, 15 mila sono i tweet pubblicati su Twitter; se si pensa che il social network in questione è stato fondato nel 2006, sono un bel po’ di messaggi, oltre l’ordine degli zettabyte. Questi dati rappresentano una vera e propria miniera d’oro; miliardi di miliardi di opinioni, ad ognuna delle quali è associata una persona, una data di creazione e spesso delle coordinate GPS. Il problema di questa enorme mole di dati è proprio la sua dimensione.
La sensazione di impotenza davanti ai Big data è paragonabile ad una forza invincibile che ci trattiene seduti, impedendoci di alzarci e cogliere la verità. Un uomo infatti per leggere tutti i tweet pubblicati in un solo giorno, impiegherebbe circa un secolo (altro che “Alla ricerca del tempo perduto”).
Si capisce che il trattamento di questo genere di dati non può essere effettuato dagli esseri umani. Fortunatamente dove l’uomo non arriva fisicamente, spesso arriva intellettualmente, in questo caso con l’ausilio di centinaia di algoritmi che si propongono di rielaborare questi “grandi dati”, comunemente denominati Big Data. Gli algoritmi si suddividono in categorie e una di queste categorie è denominata “sentiment analysis”.
Gli algoritmi di sentiment analysis estrapolano delle analisi qualitative di ciò che le persone pensano riguardo a determinati argomenti.
Facciamo un esempio:Una squadra di calcio X decide di costruire un nuovo stadio. I markettari della squadra di calcio X lanciano un nuovo hashtag su twitter denominato #ilNuovoStadioDellaSquadraX. Gli utenti di twitter iniziano a postare tweet riguardanti l’argomento aggiungendo al loro interno l’hashtag #ilNuovoStadioDellaSquadraX. Successivamente un analista informatico della squadra di calcio X raccoglie tutti i tweet contenenti l’hashtag #ilNuovoStadioDellaSquadraX ed applica un algoritmo di sentiment analysis che restituisce i seguenti risultati:
- Il 70% dei tweet sono positivi
- Il 10% dei tweet sono negativi
- Il 20% dei tweet sono neutrali
In pochi giorni i dirigenti della squadra di calcio X sanno cosa pensano i loro tifosi riguardo la costruzione del nuovo stadio e potranno decidere più semplicemente se continuare o meno la costruzione dell’opera.
Ma come funziona un algoritmo di sentiment analysis? Come può una macchina “capire” se un messaggio scritto da un uomo (quindi con un linguaggio naturale) rappresenta un’opinione positiva o negativa?
In realtà la risposta a questa domanda è “dipende”. Dipende dalla lunghezza del messaggio, dal quantitativo totale di messaggi da dover analizzare e dall’argomento trattato, procederemo dunque per gradi.
Struttura dei dati
Twitter è un social network di microblogging che permette ai propri utenti di pubblicare dei messaggi di massimo 140 caratteri denominati tweet. A causa della natura dei messaggi, ovvero estremamente veloci e di pochi caratteri, le persone usano degli acronimi, commettono degli errori grammaticali, usano delle emoticon o altri caratteri con significati speciali.
Detta la struttura dei dati, una possibile soluzione potrebbe essere la seguente: si costruiscono due dizionari (un dizionario è un insieme di parole). Il primo è un dizionario di parole positive e il secondo è un dizionario di parole negative. Ad esempio:
dizionario_parole_positive = {‘felice’, ‘contento’, ‘bello’, ‘amare’, ‘:)’, ‘:D’, …}
dizionario_parole_negative = {‘odio’, ‘disgustato’, ‘:(‘, …}
Per ogni tweet l’algoritmo controlla che ogni singola parola del tweet sia presente in uno di questi due dizionari. Nel caso in cui sia presente nel dizionario delle parole positive aggiunge un +1, nel caso in cui sia presente nel dizionario delle parole negative aggiunge un -1, nel caso in cui non sia presente in nessuno dei due dizionari si aggiunge +0. Successivamente se il risultato complessivo del tweet è >0, allora il tweet viene classificato come positivo, nel caso in cui sia <0, il tweet viene classificato come negativo, nel caso in cui sia =0, il tweet viene classificato come neutrale.
Facciamo un esempio:
1) Odio(-1) il #nuovoStadioDellaSquadraX : risultato=-1 <0, negativo tweet
2) Sono molto felice(+1) del #nuovoStadioDellaSquadraX : risultato=+1 >0, positivo
tweet
3) Non so se odiare(-1) o amare(+1) il #nuovoStadioDellaSquadraX : risultato=0, neutrale
Un piccola implementazione di quanto detto la possiamo vedere qui sotto. Clicca su “Result” per testare l’algoritmo.
Ci si rende conto sin da subito come l’algoritmo non sia perfetto e non possa comprendere esattamente il senso di ogni singolo tweet. In effetti non è tutto così semplice, spesso gli algoritmi di sentiment analysis sono decisamente più complessi, ma più o meno tutti hanno alla base un discorso del genere.
I campi di applicazione della sentiment analysis sono praticamente infiniti: indagini di mercato, politica, studi sociali ecc..
Affascinati o terrorizzati? Lasciate un commento qui sotto e fateci sapere la vostra opinione. Un algoritmo di sentiment analysis provvederà a classificarlo estrapolandone il significato.