• Non ci sono risultati.

Strategie di rappresentazione di documenti mediante Word Embedding nei task di Sentiment Analysis

N/A
N/A
Protected

Academic year: 2021

Condividi "Strategie di rappresentazione di documenti mediante Word Embedding nei task di Sentiment Analysis"

Copied!
273
0
0

Testo completo

(1)

Dipartimento di Filologia, Letteratura e Linguistica

Corso di Laurea magistrale in Informatica Umanistica

Strategie di rappresentazione di documenti

mediante Word Embedding nei task di

Sentiment Analysis

CANDIDATO

Ruggero Petrolito

RELATORE

Felice Dell’Orletta

CONTRORELATORE

Alessandro Lenci

Anno Accademico 2016/2017

(2)

Indice

1 Introduzione 1

2 Stato dell’arte nella Sentiment Analysis 9

2.1 Storia della Sentiment Analysis . . . 9

2.1.1 Prima degli anni ’90 . . . 10

2.1.2 Dagli anni ’90 a oggi . . . 10

2.1.3 La campagna SemEval . . . 12

2.1.4 La campagna Evalita . . . 13

3 Dall’ipotesi distribuzionale ai Word Embedding 17 3.1 Nascita dell’Ipotesi Distribuzionale . . . 17

3.2 Caratteristiche dei modelli semantici distribuzionali . . . 18

3.3 Parametri dei modelli distribuzionali . . . 19

3.4 I word embedding . . . 21

3.4.1 Introduzione del concetto di word embedding . . . 21

3.4.2 Word2Vec . . . 22

3.4.3 FastText . . . 24

4 Il task SENTIPOLC di Evalita 27 4.1 La campagna . . . 27

4.2 I task . . . 28

4.3 I data-set . . . 29

(3)

4.3.2 Procedura di annotazione . . . 30

4.3.3 Formato e distribuzione . . . 31

4.4 Il metodo di valutazione . . . 31

4.5 I risultati ottenuti dai partecipanti . . . 33

4.6 Gli approcci usati dai partecipanti . . . 34

4.6.1 Strategia di rappresentazione dei tweet . . . 35

4.6.2 Sfruttamento di tweet aggiuntivi per il training . . . . 35

4.6.3 Uso di risorse esterne . . . 36

4.7 Considerazioni su Irony Detection . . . 36

5 Risorse linguistiche, feature e metodologie sperimentali 37 5.1 Preparazione delle risorse linguistiche . . . 37

5.1.1 Raccolta dei dati da Twitter . . . 38

5.1.2 Pulizia del corpus Paisà e tokenizzazione dei due corpora 38 5.1.2.1 Descrizione del corpus Paisà . . . 38

5.1.3 Creazione dei modelli distribuzionali . . . 40

5.2 Le feature . . . 40

5.2.1 Feature di parola e feature delle emoticon . . . 41

5.2.2 Feature lessicali: bag-of-words . . . 42

5.2.3 Feature distribuzionali . . . 44

5.2.3.1 Modelli distribuzionali . . . 45

5.2.3.2 Metodi di combinazione . . . 46

5.2.3.3 Selezione delle categorie grammaticali . . . . 48

5.3 Metodologia sperimentale . . . 51

5.3.1 K-Fold Cross-validation . . . 52

5.3.2 Support Vector Machines . . . 52

5.3.3 Performance del sistema baseline nei tre task di SEN-TIPOLC . . . 57

5.3.4 Configurazione degli esperimenti sui word embedding . 59 5.3.5 Interrogativi da risolvere nella fase sperimentale . . . . 62

(4)

6 Studi sperimentali sulle caratteristiche del training-set di addestramento dei modelli distribuzionali 65 6.1 Studio dell’impatto delle dimensioni del corpus Tweets sulla

qualità degli embedding . . . 65

6.1.1 Analisi delle performance ottenute nel task Subjectivity Classification . . . 68

6.1.1.1 Modelli addestrati con Word2Vec . . . 68

6.1.1.2 Modelli addestrati con FastText . . . 72

6.1.1.3 Confronto tra Word2Vec e FastText . . . 77

6.1.2 Analisi delle performance ottenute nel task Polarity Classification . . . 78

6.1.2.1 Modelli addestrati con Word2Vec . . . 78

6.1.2.2 Modelli addestrati con FastText . . . 83

6.1.2.3 Confronto tra Word2Vec e FastText . . . 87

6.1.3 Analisi delle performance ottenute nel task Irony De-tection . . . 88

6.1.3.1 Modelli addestrati con Word2Vec . . . 88

6.1.3.2 Modelli addestrati con FastText . . . 92

6.1.3.3 Confronto tra Word2Vec e FastText . . . 96

6.1.4 Confronto tra i tre task . . . 98

6.2 Studio dell’impatto di un corpus di dominio rispetto a uno non di dominio sulla qualità degli embedding . . . 101

6.2.1 Studio dei risultati ottenuti usando embedding creati con Word2Vec . . . 101

6.2.2 Studio dei risultati ottenuti usando embedding creati con FastText . . . 104

6.2.3 Studio dei risultati ottenuti usando sia embedding crea-ti con Word2Vec sia embedding creacrea-ti con FastText . . 107 7 Studio sperimentale sulle metodologie di addestramento dei

(5)

7.1 Studio dell’impatto dell’uso di embedding di parole o di em-bedding di n-grammi di caratteri sulla performance del classi-ficatore . . . 113 7.1.1 Studio dei risultati ottenuti usando gli embedding

ad-destrati su Tweets . . . 114 7.1.2 Studio dei risultati ottenuti usando gli embedding

ad-destrati su Paisà . . . 117 7.1.3 Studio dei risultati ottenuti usando sia gli embedding

addestrati su Tweets sia gli embedding addestrati su Paisà . . . 121 8 Studi sperimentali sulle strategie di estrazione delle feature

dai modelli distribuzionali 127 8.1 Studio dell’impatto di diversi metodi di combinazione degli

embedding sulla performance del classificatore . . . 127 8.1.1 Studio dei risultati ottenuti usando embedding creati

con Word2Vec . . . 128 8.1.2 Studio dei risultati ottenuti usando embedding creati

con FastText . . . 132 8.1.3 Studio dei risultati ottenuti usando sia embedding

crea-ti con Word2Vec sia embedding creacrea-ti con FastText . . 135 8.2 Studio dell’impatto dell’uso di embedding delle diverse

clas-si/categorie grammaticali sull’accuratezza del classificatore . . 138 8.2.1 Risultati ottenuti usando Word2Vec per addestrare gli

embedding . . . 141 8.2.2 Risultati ottenuti usando FastText per addestrare gli

embedding . . . 148 8.2.3 Risultati ottenuti usando sia Word2Vec sia FastText

per addestrare gli embedding . . . 153 9 Considerazioni sugli studi sperimentali 161

(6)

9.1 Risposta alla domanda n. 1: impatto delle dimensioni del corpus Tweets sulla qualità degli embedding . . . 161 9.2 Risposta alla domanda n. 2: impatto dell’uso di un corpus di

dominio o non di dominio sulla qualità degli embedding . . . . 162 9.3 Risposta alla domanda n. 3: impatto dell’uso di

embed-ding di parole o di embedembed-ding di n-grammi di caratteri sulla performance del classificatore . . . 163 9.4 Risposta alla domanda n. 4: impatto di diversi metodi di

com-binazione degli embedding sulla performance del classificatore 163 9.5 Risposta alla domanda n. 5: impatto dell’uso di embedding

delle diverse classi/categorie grammaticali sull’accuratezza del classificatore . . . 164 10 Selezione modelli migliori ed esperimenti sul test set di

Eva-lita SENTIPOLC 167

10.1 Studio dell’impatto dell’uso congiunto di tutte le feature sul-l’accuratezza del classificatore nei task di SENTIPOLC . . . . 168 10.2 Valutazione delle configurazioni migliori . . . 169 10.2.1 Individuazione delle configurazioni migliori . . . 169 10.2.2 Risultati ottenuti aggiungendo le feature della baseline

alle configurazioni migliori . . . 171 10.2.3 Studio dell’impatto dell’uso di Support Vector

Machi-nes non lineari sull’accuratezza nei task di SENTI-POLC, usando le configurazioni di feature migliori . . . 171 10.3 Studio dell’impatto della baseline e delle migliori

configura-zioni di feature semantico-distribuzionali sull’accuratezza nei task di SENTIPOLC sperimentati sul test set . . . 173 10.3.1 Studio dell’impatto della baseline . . . 174 10.3.2 Studio dell’impatto delle tre configurazioni migliori . . 175

(7)
(8)

Capitolo 1

Introduzione

Negli ultimi anni, l’analisi del sentiment (da qui in avanti sentiment analy-sis) espresso nei testi (in particolar modo nei testi estratti dal web e dai social media) ha assunto notevole popolarità. Con sentiment analysis si intende lo studio del modo in cui vengono espressi all’interno del testo gli aspetti legati alla soggettività (quali ad esempio l’ironia, il sentimento).

Tale area di ricerca è, nell’ambito del Natural Language Processing, fra quelle che stanno crescendo più rapidamente. Essa trova le proprie radici più prossime negli studi sull’analisi dell’opinione pubblica condotti all’inizio del XX secolo e nell’analisi della soggettività condotta negli anni ’90 dalla comunità della linguistica computazionale. La sua esplosione è avvenuta gra-zie alla disponibilità nel web di grandi quantità di testi di natura soggettiva. Pertanto, il 99% delle pubblicazioni sull’argomento risale agli anni successivi al 2004 (Mäntylä et al., 2016).

Per dare una definizione più precisa, la sentiment analysis è un insieme di metodi, tecniche e strumenti finalizzati a individuare ed estrarre dal lin-guaggio l’informazione soggettiva, come le opinioni e gli atteggiamenti (Liu, 2009). Sin dall’inizio questo campo di ricerca si è occupato del riconoscimen-to della polarità – positiva, negativa o neutrale – dell’opinione che qualcuno ha nei confronti di qualcosa, in particolare riguardo prodotti e servizi (Dave

(9)

et al., 2003).

Dal punto di vista dell’interesse verso l’opinione altrui, che è tanto vec-chio quanto la comunicazione verbale stessa, le radici della sentiment analysis possono essere ricercate già nell’antichità. Nel corso della storia i governanti si sono interessati a conoscere le opinioni della popolazione, al fine di affron-tare le opposizioni o di incremenaffron-tare la propria popolarità. In epoca antica troviamo esempi di tale tendenza sia nel mondo occidentale che nel mondo orientale: in L’arte della guerra, un trattato di strategia militare scritto in Cina tra il VI e il V secolo a.C., troviamo un capitolo sullo spionaggio e sul reclutamento delle spie (Tzu, 2005). Nella Grecia antica possiamo trovare esempi di spionaggio e di tentativi di scoperta del dissenso interno (Rich-mond, 1998); nell’Iliade troviamo dei riferimenti in tal senso nella figura di Agamennone, impegnato a misurare il morale delle proprie truppe; nella cit-tà di Atene del V secolo a.C. nasce l’uso del voto come metodo per misurare l’opinione pubblica (Thorley, 2004).

Facendo un salto in avanti, troviamo all’inizio del XX secolo i primi tenta-tivi di misurare l’opinione pubblica; il primo giornale scientifico sull’argomen-to fu fondasull’argomen-to nel 1937. I primi studi accademici su tale argomensull’argomen-to risalgono quindi alla seconda guerra mondiale (Mäntylä et al., 2016). Durante gli anni ’90 la sentiment analysis è stata affrontata per la prima volta con gli stru-menti della linguistica computazionale. Infine, come già accennato, tra il 2004 e il 2005 c’è stata l’esplosione della sentiment analysis moderna, foca-lizzata sulle recensioni di prodotti disponibili sul web. La ricerca in questo settore si è espansa verso altre tematiche quali la previsione dell’andamento dei mercati finanziari e le reazioni agli attacchi terroristici, e ha affrontato molti problemi connessi alla sentiment analysis quali il riconoscimento del-l’ironia (come vedremo più avanti) e il supporto multilingue (Hogenboom et al., 2014). Anche la natura dei compiti affrontati si è evoluta: al semplice rilevamento della polarità si è aggiunto il riconoscimento di sfumature più complesse, quali ad esempio la rabbia e il dolore (Cambria et al., 2015).

(10)

Anche l’oggetto di studio della sentiment analysis si è evoluto: prima della disponibilità di grandi quantità di testi opinioni online, gli studi si sono basati su sondaggi o su opinioni di esperti. Ad esempio, Sandri et al. (1995) usano un sistema automatico per analizzare una raccolta di opinioni di esperti di sicurezza industriale. Il focus della sentiment analysis si è poi orientato su testi presenti nel web, come le recensioni su servizi e prodotti. In tempi molto recenti, l’analisi si è concentrata soprattutto su testi di micro-blogging presenti sui principali social media, Twitter in particolare.

Il primo lavoro in cui la sentiment analysis viene svolta con gli strumenti della linguistica computazionale è stato quello di Wiebe (1990), che presentava dei metodi per identificare frasi soggettive in un testo narrativo, proponendo successivamente un gold standard per questo compito (Wiebe et al., 1999). Un altro articolo influente, fra quelli che negli anni ’90 sfruttano gli algoritmi della linguistica computazionale, è quello di Hatzivassiloglou et al. (1997), in cui si usa una lista di aggettivi positivi e negativi – estratta dal Wall Street Journal corpus – per predire se gli aggettivi che occorrono insieme sono di polarità uguale o differente.

L’inizio della moderna sentiment analysis avviene con i primi lavori sulle recensioni disponibili sul web nei primi anni 2000. Pang et al. (2002) hanno usato metodi di machine learning per classificare recensioni cinematografiche; Turney (2002) usa un sistema di regressione non supervisionata per predire la polarità di recensioni di automobili, banche, film e località turistiche; Turney e Littman (2003) propongono un metodo per predire automaticamente la polarità delle parole sulla base del contesto nel quale appaiono; Dave et al. (2003) propongono metodi di information retrieval per distinguere la polarità positiva o negativa di una lista di recensioni di prodotti.

A partire dal 2005, il numero di pubblicazioni nell’ambito della sentiment analysis è cresciuto esponenzialmente: da circa 100 articoli pubblicati nel 2005, si è saliti a circa 1000 nel 2010, per arrivare a quasi 7000 nel 2016.

(11)

su cui si è rivolta la sentiment analysis: society, security, travel, finance and corporate, medical ed entertainment. Inoltre raggruppano i target della sentiment analysis in alcune macro-aree: expertise and influence, interaction, globe, truth, language, behaviour ed emotions.

Recentemente, la sentiment analysis di testi estratti da Twitter – e dai social media in generale – ha ottenuto grande popolarità. Ad esempio, tre fra gli articoli più citati su Google Scholar presentano lavori svolti con materiale estratto soprattutto da Twitter: Pak et al. (2010) presentano un metodo per raccogliere automaticamente da Twitter materiale per un corpus da usare per addestrare un classificatore del sentiment; Tumasjan et al. (2010) analizzano circa 100000 tweet per predire il risultato delle elezioni federali in Germania; O’Connor et al. (2010) usano dati estratti da Twitter per misurare l’opinione pubblica mediante time series.

Il successo di questo ambito di ricerca è stato tale che negli ultimi an-ni sono state numerose le campagne di valutazione dei sistemi di sentiment analysis. Come si capisce dai task proposti in queste campagne, il compi-to dell’analisi del sentiment si è evolucompi-to dal semplice riconoscimencompi-to della polarità degli inizi al rilevamento di sfumature più specifiche, quali l’ironia, l’umorismo e l’odio.

Gli approcci usati nell’affrontare i diversi compiti proposti in quest’am-bito di ricerca si sono orientati progressivamente verso il machine learning, e negli ultimi anni verso il deep learning, nell’ambito del quale hanno rice-vuto grande attenzione i word-embedding, ovvero delle rappresentazioni vettoriali distribuzionali, come metodo per rappresentare le parole presenti nei testi in analisi. Esistono diversi algoritmi e sistemi per la creazione di word-embedding; i più popolari sono Word2Vec (Mikolov, Chen et al., 2013) e GloVe (Pennington et al., 2014); negli ultimi tempi ha assunto rilevanza an-che FastText (Bojanowski et al., 2016), un framework derivato da Word2Vec, che produce degli embedding di n-grammi di caratteri.

(12)

nell’affrontare alcuni compiti di sentiment analysis, e di individuare le mi-gliori strategie per rappresentare il testo attraverso word embedding nella ri-soluzione di questi compiti. A questi proposito con questo lavoro vogliamo rispondere alle seguenti domande:

1. quale effetto ha la dimensione del corpus a partire dal quale si produco-no i word embedding sull’accuratezza del sistema di sentiment analysis? 2. quale impatto ha l’utilizzo di embedding creati a partire da un corpus dello stesso genere di quello analizzato dal sistema di sentiment analysis rispetto all’uso di embedding estratti da testi generici?

3. quale approccio per la creazione di embedding (di parole o di sequenze di caratteri) è più efficace nella sentiment analysis?

4. qual’è la migliore strategia di combinazione dei word embedding per rappresentare il testo all’interno di sistemi di sentiment analysis? 5. quale impatto ha l’uso di embedding delle diverse categorie

grammati-cali sull’accuratezza del sistema di sentiment analysis?

Per rispondere a queste domande abbiamo sviluppato un sistema di sen-timent analysis che abbiamo testato sul dataset rilasciato dalla conferenza Evalita (Evaluation of NLP and Speech Tools for Italian) del 2016. Nello specifico abbiamo affrontato i compiti di Subjectivity Classification, Polarity Classification e Irony Detection, proposti all’interno della campagna di valu-tazione dei sistemi di sentiment analysis per la lingua italiana, denominata SENTIPOLC (Sentiment Polarity Classification).

Abbiamo effettuato una grande quantità di esperimenti provando varie stra-tegie di utilizzo dei word-embedding, mediante cui costruire una rappresen-tazione dei documenti analizzati a partire dalle parole presenti in essi. Nello specifico questo lavoro si struttura nella seguente maniera:

(13)

• nel Capitolo 2 descriveremo lo stato dei lavori nell’ambito della senti-ment analysis, con un’introduzione alla nascita di quest’argosenti-mento di ricerca;

• nel Capitolo 3 introdurremo la semantica distribuzionale e i word-embedding;

• nel Capitolo 4 descriveremo il task SENTIPOLC nell’edizione 2016 della campagna Evalita;

• nel Capitolo 5 descriveremo le risorse usate e il sistema di classifica-zione sviluppato per questa tesi; di quest’ultimo mostreremo quali fea-ture sono state usate e come sono state estratte; inoltre descriveremo l’algoritmo di classificazione e le strategie di valutazione del sistema; • nel Capitolo 6 cercheremo di rispondere alle domande n. 1 e n. 2 che

riguardano le dimensioni e il genere testuale del corpus a partire dal quale si creano gli embedding;

• nel Capitolo 7 cercheremo di rispondere alla domanda n. 3 relativa all’algoritmo migliore per la creazione dei embedding, confrontando embedding di parole ed embedding di n-grammi di caratteri;

• nel Capitolo 8 cercheremo di rispondere alle domande n. 4 e n. 5 su quale sia la strategia migliore per combinare gli embedding e su quale sia la categoria grammaticale che fornisce gli embedding più utili per il classificatore;

• nel Capitolo 9 discuteremo in maniera generale i risultati descritti nei tre capitoli precedenti;

• nel Capitolo 10 descriveremo i risultati di alcuni esperimenti particolari effettuati modificando le configurazioni che, fra quelle descritte nei ca-pitoli precedenti, ci hanno permesso di ottenere i valori di accuratezza più elevati;

(14)

• nel Capitolo 11 faremo delle considerazioni conclusive sull’intero lavoro; • nell’Appendice A illustreremo, mediante tabelle, le configurazioni di

(15)
(16)

Capitolo 2

Stato dell’arte nella Sentiment

Analysis

La Sentiment Analysis è, nell’ambito del Natural Language Processing, un’area di ricerca che sta acquisendo notevole popolarità. Essa consiste in una serie di metodi, tecniche e strumenti finalizzati a rilevare e estrarre infor-mazione soggettiva, come opinioni e atteggiamenti, dal materiale linguistico in analisi. In particolare, c’è un interesse verso la polarità del testo, ovve-ro sulla presenza di un’opinione positiva, negativa o neutrale, generica o a proposito di un determinato argomento (Mäntylä et al., 2016).

2.1

Storia della Sentiment Analysis

Le origini della Sentiment Analysis possono essere trovate negli studi di due periodi: le ricerche sull’opinione pubblica condotte nella prima metà del XX secolo e le analisi della soggettività testuale condotte negli anni ’90 dalla comunità della linguistica computazionale. Tuttavia, la vera esplosione del-l’analisi computazionale del sentimento si è avuta soltanto con la grande disponibilità sul Web di testi di natura soggettiva. Pertanto, il 99% degli articoli scientifici sull’argomento è stato pubblicato dopo il 2004. L’oggetto

(17)

primario di interesse in tale campo di ricerca sono state inizialmente le recen-sioni online; l’attenzione si è poi spostata sui testi provenienti dalle grandi reti sociali di Facebook e Twitter (Mäntylä et al., 2016).

2.1.1

Prima degli anni ’90

L’interesse riguardo l’opinione altrui è probabilmente tanto vecchio quanto la comunicazione stessa. Nel corso della storia, i governanti sono sempre stati interessati all’opinione dei loro subordinati, allo scopo di controllare il dissenso o di aumentare il consenso, sin dall’antichità. In tempi più recenti, ovvero nei primi decenni del XX secolo, ha fatto la sua comparsa un approccio basato sulla somministrazione di questionari per rilevare e misurare l’opinione pubblica; nel 1937 viene fondata la prima rivista scientifica avente come argomento l’opinione pubblica. I primi studi accademici sulla misurazione dell’opinione pubblica sono comparsi durante il secondo conflitto mondiale con finalità prettamente politiche, in ottica anticomunista (Mäntylä et al., 2016).

2.1.2

Dagli anni ’90 a oggi

A metà degli anni ’90 sono comparsi per la prima volta dei sistemi com-putazionali per l’analisi delle opinioni. In questa fase ad essere analizzate erano le opinioni di esperti o l’opinione pubblica, e non ancora l’opinione di clienti/utenti come in tempi più recenti. Fra le pubblicazioni di questo periodo, è significativo l’articolo di Sandri et al. (1995), in cui viene descritto un sistema per l’analisi delle opinioni di esperti nell’ambito della sicurezza industriale (Mäntylä et al., 2016).

Un altra linea di ricerca che ha influenzato la nascita della Sentiment Analy-sis moderna è quella della Linguistica Computazionale. L’uso di metodologie basate sul trattamento automatico del linguaggio ha permesso lo sviluppo della Sentiment Analysis computazionale; il primo articolo in tal senso è

(18)

quello di Wiebe (1990), in cui si propone un metodo per individuare le frasi soggettive all’interno di testi narrativi; in un articolo successivo (Wiebe et al., 1999) l’autore torna su tale tematica proponendo un gold standard per lo scopo.

A cavallo tra gli anni ’90 e il primo decennio del XXI secolo, sono stati pub-blicati alcuni articoli particolarmente rilevanti nel dare il via alla Sentiment Analysis moderna. Nel lavoro di Hatzivassiloglou et al. (1997), si effettua uno studio sugli aggettivi positivi e negativi presenti nel Wall Street Jour-nal Corpus. Poco dopo, nel 2002, con l’uso di recensioni presenti sul Web inizia quella che oggi chiamiamo Sentiment Analysis. In tale anno vengono infatti pubblicati due influenti articoli sulla tematica: nel primo (Pang et al., 2002) si sperimentano tecniche di machine learning (tra cui Support Vector Machines) su dati ricavati da IMDb; nel secondo (Turney, 2002) si descrive un algoritmo di apprendimento non supervisionato per la classificazione di recensioni online di vari prodotti.

Tuttavia, per vari anni il numero di pubblicazioni sulla Sentiment Analysis pubblicati è rimasto basso. Fino al 2000 il numero di articoli risultava in-feriore alla cinquantina, mentre il numero era aumentato a poco più di un centinaio nel 2005, anno a partire dal quale c’è stata un’inversione di tenden-za: gli articoli pubblicati entro la fine del 2010 erano di 10 volte più numerosi rispetto a quelli pubblicati entro la fine del 2005; il numero di articoli pub-blicati entro la fine del 2015 era di 50 volte superiore rispetto al 2005. Tale crescita di popolarità è dovuta alla possibilità di poter raccogliere e analiz-zare grandi quantità di dati. Come sarebbe lecito aspettarsi, il numero di citazioni sull’argomento è aumentato in maniera esplosiva insieme al numero di pubblicazioni.

Negli anni più recenti Twitter e i social media in generale hanno avuto una popolarità crescente nella Sentiment Analysis. Tra gli articoli più citati com-paiono vari lavori focalizzati su dati estratti da Twitter: Pak et al. (2010) presentano un metodo per ricavare un corpus dal microblogging (nell’esempio

(19)

presentato si usano dati di Twitter), sul quale poi addestrare un classificatore del sentiment, usando tecniche di machine learning; Tumasjan et al. (2010) analizzano un corpus di 100000 tweet per la predizione di risultati elettorali; O’Connor et al. (2010) descrivono come usare dei dati di Twitter per valutare l’opinione pubblica mediante time series.

2.1.3

La campagna SemEval

La crescente popolarità della Sentiment Analysis si riflette nella sua presenza all’interno di campagne di valutazione per sistemi di analisi semantica. Fra queste ha particolare rilievo SemEval, una campagna di valutazione la cui prima edizione risale al 2007; dal 2012 essa si svolge con cadenza annuale. La prima edizione in cui è stato presentato almeno un task di Sentiment Analysis è quella del 2007; ciò si è verificato una seconda volta nel 2010 e infine in tutte le edizioni a partire dal 2013. Inoltre, dal 2013 in poi è presente almeno un task di Sentiment Analysis su testi estratti da Twitter. I testi presi in analisi sono stati, oltre che in lingua inglese, in cinese, arabo, olandese, francese, russo, spagnolo e turco.

La natura dei task affrontati si è evoluta nel corso del tempo. Infatti, il semplice riconoscimento della polarità è stato affiancato da altri compiti, quali:

• l’assegnamento di un valore di polarità sia a livello del tweet sia a livello di frasi o sintagmi;

• l’assegnazione di un sentiment score a singole parole o a espressioni multi-word;

• l’identificazione della polarità riguardo un determinato topic o una determinata entità;

• la predizione della distribuzione dei tweet di diversa polarità all’interno del data-set;

(20)

• riconoscimento di ironia, sarcasmo, metafore o umorismo.

Per quanto riguarda gli approcci usati dai partecipanti, nel corso degli anni si è visto un progressivo affermarsi dei sistemi di machine learning: in par-ticolare, Support Vector Machines (SVM), Naïve Bayes (NB) e Maximum Entropy (MaxEnt) fino al 2015, insieme all’estrazione di feature ai vari li-velli di analisi linguistica e all’uso di risorse esterne; dal 2016 in poi si sono affermati in maniera netta i sistemi di deep learning, basati su reti neura-li, quali Convolutional Neural Networks (CNN), Recurrent Neural Networks (RNN), Long Short-Term Memory networks (LSTM). Nell’ambito dei sistemi di deep learning si è affermato l’uso di word-embedding (prevalentemente creati con Word2Vec o GloVe) come fonte delle feature con cui addestrare il sistema. Si è invece vista una diminuzione del numero di partecipanti che usano risorse esterne quali i lessici di polarità, in quanto tali sistemi hanno dimostrato di essere meno efficaci rispetto all’uso congiunto di sistemi di deep learning e di rappresentazioni mediante word-embedding.

2.1.4

La campagna Evalita

Evalita è una campagna periodica di valutazione dei sistemi di Natural Lan-guage Processing per la lingua italiana, la cui prima edizione si è svolta nel 2007.

Edizione del 2014

L’edizione del 2014 è stata la prima in cui sono è stato presentato un task di Sentiment Analysis. Tale task, denominato SENTIPOLC, è diviso in tre sotto-task:

• Sentiment Classification; • Polarity Classification; • Irony Detection.

(21)

Il task è stato, all’interno di Evalita, quello con il maggior numero di parte-cipanti. Questi potevano presentare uno o due sistemi: di questi uno doveva essere necessariamente di tipo constrained, ovvero un sistema che non usas-se per l’addestramento dati diversi da quelli forniti dagli organizzatori; in aggiunta, si poteva presentare anche un sistema unconstrained, ovvero che usasse dati aggiuntivi per l’addestramento.

La maggior parte dei sistemi presentati è stata di tipo constrained (solo tre team hanno presentato sistemi di tipo unconstrained). Erano di tipo con-strained sia il sistema che ha avuto il miglior risultato nel task Subjectivity Classification, sia quello che ha avuto il miglior risultato nel task Polarity Classification; era di tipo unconstrained il sistema che ha avuto il risultato migliore nel task Irony Detection.

La maggior parte dei sistemi hanno usato un approccio di apprendimento supervisionato, e l’algoritmo più popolare è stato Support Vector Ma-chines, che è stato usato dai sistemi che hanno ottenuto i migliori risultati nei tre task. Altri algoritmi usati sono stati Decision Trees, Naïve Bayes, K-Nearest Neighbours.

I sistemi hanno usato un’ampia varietà di feature ricavate mediante i diversi livelli di analisi linguistica. Secondo il team uniba2930, che ha presentato i migliori sistemi per i task Subjectivity e Polarity Classification, le feature semantico-distribuzionali sono quelle che hanno contribuito maggiormente al risultato. Il team UNITOR, che ha presentato il miglior sistema per il task Irony Detection, ha ideato delle feature specifiche per il task, legate all’uso di emoticons, della punteggiatura e di parole collocate in contesti inusuali; ha usato inoltre feature specifiche di Twitter.

Quasi tutti i team hanno usato lessici di sentiment come risorsa esterna, oltre a vari strumenti per il preprocessing.

Dall’analisi dei risultati ottenuti dai sistemi, è risultato che le espressioni ironiche costituiscono degli inversori di polarità, che vanno a compromettere l’accuratezza dei classificatori del sentimento. Va poi aggiunto che per i

(22)

par-tecipanti è risultato particolarmente difficile classificare correttamente i casi di polarità mista (sia positiva che negativa), più dei casi di polarità neutra. Edizione del 2016

In SENTIPOLC 2016 sono stati presentati gli stessi task dell’edizione del 2014. Vi sono tuttavia delle differenze nello schema di annotazione; poi, ai partecipanti è stato consentito di presentare fino a quattro sistemi. Per quanto riguarda le caratteristiche dei sistemi presentati, nel 2016 sono state usate per la prima volta reti neurali convoluzionali, con buoni risultati. Per quanto riguarda le performance dei sistemi, va sottolineato che i risultati ottenuti dai sistemi nel task Irony Detection sono stati significativamente più bassi.

Nel Capitolo 4 si descrive in maggiore dettaglio l’edizione di SENTIPOLC del 2016.

(23)
(24)

Capitolo 3

Dall’ipotesi distribuzionale ai

Word Embedding

In questo capitolo introdurremo l’approccio della semantica distribuzionale e i word embedding.

Nel corso degli ultimi dieci o quindici anni, l’approccio distribuziona-le si è dimostrato estremamente efficace in molti task nell’ambito dell’ela-borazione del linguaggio naturale (Mäntylä et al., 2016). In particolare, le rappresentazioni distribuzionali delle parole permettono di affrontare il pro-blema dell’alta dimensionalità (curse of dimensionality) legato alla necessità di calcolare la likelihood di un gran numero di lunghe catene di testo (Bengio et al., 2003).

3.1

Nascita dell’Ipotesi Distribuzionale

La semantica distribuzionale si basa sull’Ipotesi Distribuzionale, ovvero sull’assunto che parole con significato simile siano anche distribuite in ma-niera simile nei contesti linguistici (Lenci, 2014). Il primo a formulare tale ipotesi fu Harris (1954), il quale riteneva che l’approccio distribuzionale fosse l’unico valido per studiare la semantica; egli elaborò una tecnica di

(25)

classifi-cazione delle parole basandosi sulle loro relazioni sintattiche, che è stata alla base di lavori successivi nell’ambito dell’Information Retrieval (Lenci, 2014).

3.2

Caratteristiche dei modelli semantici

distri-buzionali

I modelli semantici distribuzionali sono delle rappresentazioni del signi-ficato delle parole; a ciascuna di queste ultime viene associato in questi mo-delli un vettore ordinato di numeri reali, le cui componenti vengono calcolate mediante l’analisi del contesto linguistico in cui le parole stesse compaiono. Questo tipo di rappresentazione del significato presenta il vantaggio di essere indipendente dallo specifico task di analisi semantica che si intende affronta-re, e di essere quindi utilizzabile più volte, una volta che il modello è stato creato estraendo da un corpus di addestramento l’informazione necessaria (Baroni et al., 2010).

Il processo di creazione di tali modelli si articola in quattro fasi (Lenci, 2014):

1. costruzione della matrice di co-occorrenza: per ogni parola pre-sente nel corpus di training viene costruito un vettore contenente le frequenze dei termini presenti nel contesto; l’insieme dei vettori così ottenuti va a costituire una matrice di co-occorrenza;

2. pesatura delle frequenze: in ogni vettore le frequenze vengono tra-sformate in pesi statistici;

3. riduzione delle dimensioni della matrice per ovviare alla sparsità della matrice, ovvero al fatto che la maggior parte dei valori presenti in essa hanno valore nullo, ovvero sono prive di informazione, si usano delle procedure matematiche con cui si ottiene una matrice di minori dimensioni e densa (ovvero la maggior parte delle sue componenti ha valore non nullo);

(26)

4. misura delle similarità: le parole vengono messe in relazione tra esse mediante il calcolo della similarità tra i vettori corrispondenti.

I vettori che, nel loro insieme, compongono la matrice vanno a identificare dei punti in uno spazio vettoriale, detto spazio vettoriale semantico, nel quale il numero di assi cartesiani è pari alla lunghezza dei vettori. Ogni vettore collega il punto di origine degli assi a un punto nello spazio. In tale spazio, è possibile misurare la similarità tra due parole mediante varie tecniche, tra le quali è molto comune il coseno dell’angolo θ tra i due vettori corrispondenti u e v (Lenci, 2014):

simcos(u, v) = cos(θ) =

u · v kuk kvk = Pn i=0uivi pPn i=1u2i pPn i=1v2i (3.1) Il coseno può variare tra un valore massimo di 1 (similarità massima) e 0 (nessuna similarità): nel primo caso i due vettori hanno stessa direzione (giacciono sulla stessa retta) e verso, per cui l’angolo tra essi misura 0°; nel secondo caso i due vettori sono ortogonali, pertanto l’angolo tra essi è di 90° (Lenci, 2014).

3.3

Parametri dei modelli distribuzionali

Il modo di costruire i modelli semantici distribuzionali è determinato da un insieme di parametri, che quindi influenzano la natura di tali modelli. Un primo parametro, fondamentale, è il tipo di corpus utilizzato per l’analisi dei contesti linguistici: da questo punto di vista, si è passati dall’uso di cor-pora di dominio specialistico di medie dimensioni – negli anni ’90 – all’uso di grandi corpora non specialistici, contenenti testi presi da giornali, da en-ciclopedie o dal web. L’uso di corpora di grandi dimensioni è utile al fine di dare maggiore copertura sul lessico e di ridurre la sparsità dei dati.

(27)

per la costruzione del modello. In particolare, si usano tre tipi di contesto, e si hanno di conseguenza tre tipi di modelli distribuzionali:

1. nei modelli basati sui documenti (document models), il contesto è costituito dalle parole che compaiono nello stesso documento in cui occorre la parola target;

2. nei modelli basati sulle parole (word models), il contesto è costi-tuito dalle parole che compaiono all’interno di una finestra – la cui dimensione è definita da un ulteriore parametro – intorno alla parola target;

3. nei modelli sintattici (syntactic models), il contesto è costituito dal-le parodal-le che sono in relazione di dipendenza sintattica con la parola target.

Ulteriori parametri nella costruzione dei modelli sono il tipo di misura statistica usato per pesare le frequenze dei contesti e il tipo di misura di similarità usato per confrontare i vettori delle parole nel modello. Nel primo caso la misura usata più di frequente è la Positive Pointwise Mutual Information; nel secondo caso la misura più usata è il coseno dell’angolo tra i due vettori confrontati (Lenci, 2014).

Infine, un parametro molto rilevante è il tipo di tecnica utilizzata per diminuire il numero di componenti dei vettori, in modo da ridurre la sparsità dei dati e la complessità del modello. Una strategia molto diffusa consiste nel proiettare la matrice originale sparsa su una matrice densa di di-mensioni minori, mediante vari metodi, quali Singular Value Decomposition, Non-Negative Matrix Factorization e Latent Dirichlet Allocation. Va sotto-lineato che mediante tale strategia si perde la possibilità di interpretare in maniera esplicita le caratteristiche semantiche codificate dai vettori. Un’al-tra tecnica parecchio diffusa è quella del Random Indexing, nella quale non si costruisce una matrice sparsa per poi ridurne le dimensioni, bensì si costrui-sce sin dall’inizio una matrice più densa mediante l’assegnazione a ciascuna

(28)

parola target di un vettore inizializzato in maniera casuale; ad ognuno di questi vettori casuali vengono poi sommati i vettori delle parole del contesto (Lenci, 2014).

3.4

I word embedding

I modelli ottenuti mediante la costruzione di una matrice sparsa, da ridimen-sionare opzionalmente, sono chiamati count models, in quanto essi vengono costruiti contando le co-occorrenze, pesandole ed eventualmente riducendo-le. A tali modelli si contrappongono i cosiddetti prediction models, nella costruzione dei quali le rappresentazioni vettoriali vengono create sin dall’i-nizio dense e con un numero contenuto di componenti. Tali rappresentazioni sono dette word embeddings, in quanto le parole target vengono incassate (embedded in lingua inglese) in uno spazio vettoriale a dimensionalità bassa.

3.4.1

Introduzione del concetto di word embedding

L’idea dei word embedding come li intendiamo oggi è stata introdotta da Bengio et al. (2003), dove con tale definizione ci si riferisce a dei vettori di numeri reali che costituiscono una rappresentazione delle parole nel training set. Tali vettori vengono appresi come prodotto collaterale di un task che consiste nel predire la parola successiva in una sequenza di testo, date le n parole precedenti.

Il modello di Bengio et al. (2003) è costituito da una rete neurale feed-forward, in cui sono presenti tre strati:

1. lo strato degli embedding, in cui a ogni parola è associato un vettore di pesi mediante una matrice di mappatura C ;

2. lo strato intermedio, in cui viene applicata una funzione di attiva-zione non lineare (tangente iperbolica);

(29)

3. lo strato della funzione softmax, in cui i pesi vengono compressi in una distribuzione di probabilità mediante la funzione softmax, che garantisce che la somma di tutte le probabilità sia 1.

In ogni iterazione dell’addestramento, i valori contenuti nei vettori vengono aggiornati, mediante il meccanismo di retro-propagazione, sulla base dell’out-put ottenuto dall’ultimo strato. L’obiettivo di ogni iterazione è di massimiz-zare la verosimiglianza della parola corrente dato il contesto, espressa dalla funzione obiettivo Jθ = T1 log p(w1, ..., wT). L’obiettivo dell’intero modello

è di massimizzare la verosimiglianza del corpus di training, espressa dalla funzione obiettivo Jθ = T1 T P i=1 log p(wt|wt−1, ..., wt−n+1).

3.4.2

Word2Vec

Word2Vecè una metodologia di addestramento di word embedding presen-tata da Mikolov, Chen et al. (2013), che si differenzia dal modello di Bengio et al. (2003) in quanto non utilizza alcuna funzione non lineare nello strato intermedio della rete neurale, e in quanto utilizza una finestra di contesto più ampia come input per il primo strato: vengono fornite all’algoritmo non solo le parole precedenti, ma anche le parole successive alla parola corrente. Word2Vec utilizza due diverse architetture (in figura 3.1) per la produzione degli embedding, ognuna con un diverso task di classificazione: continuous bag-of-words (CBOW) e skip-gram.

Nell’architettura CBOW il task consiste nel predire la parola corrente dato il suo contesto, ovvero date le n parole precedenti e le n parole successive. La funzione obiettivo è quindi la seguente:

Jθ = 1 T T X t=1 log p(wt|wt−n, ..., wt−1, wt+1, ..., wt+n).

In ogni timestep t il sistema riceve in input una finestra di n parole preceden-ti e n parole seguenpreceden-ti attorno alla parola target wt. Il valore che si cerca di

(30)

Figura 3.1: Architetture CBOW e skip-gram

massimizzare è la likelihood del training set, corrispondente alla media delle likelihood delle T parole dati i rispettivi contesti (Ruder, 2016).

Nell’architettura skip-gram il task consiste nel predire, data la parola cor-rente, il suo contesto, ovvero le n parole precedenti e le n parole successive. La funzione obiettivo è la seguente:

Jθ = 1 T T X t=1 X −n≤j≤n,6=0 log p(wt+j|wt).

In ogni timestep t il sistema riceve in input la parola di cui si cerca di predire il contesto. Il valore che si cerca di massimizzare è la likelihood del training set, corrispondente alla media delle likelihood dei contesti che compaiono at-torno alle T parole date in input al sistema; a sua volta, la likelihood del contesto è data dalla somma delle likelihood delle singole parole che ne fanno parte, data la parola centrale.

(31)

I word embedding costruiti da Mikolov, Chen et al. (2013) dimostrano di riuscire a codificare relazioni semantiche tra parole in maniera coerente. Per esempio, il vettore di "France" è simile al vettore di "Italy"; inoltre, sem-bra che tra "big" e "bigger" esista lo stesso tipo di relazione che c’è tra "small" e "smaller". Mediante operazioni di aritmetica vettoriale, è pos-sibile calcolare con buona approssimazione il vettore di una parola a partire dai vettori di altre parole correlate, come nei seguenti casi:

• vector(”smallest”) ' vector(”biggest”)−vector(”big”)+vector(”small”) • vector(”Rome”) ' (”P aris”)− ' (”F rance”)+ ' (”Italy”)

• vector(”queen”) ' (”king”)− ' (”man”)+ ' (”woman”)

3.4.3

FastText

FastTextè un’estensione del modello di Word2Vec (Bojanowski et al., 2016). Rispetto a quest’ultimo, tale estensione fornisce il vantaggio di tenere in con-siderazione la struttura morfologica delle parole che sono rappresentate nel modello. In Word2Vec tale informazione è assente, in quanto a ogni pa-rola è assegnato un vettore distinto, senza che vi sia informazione condivisa tra le parole. In FastText tale informazione morfologica viene invece tenuta in considerazione, in quanto ogni parola viene rappresentata come una bag-of-characterNgrams. Tale metodologia fornisce il vantaggio di poter poi assegnare una rappresentazione vettoriale anche a parole mai viste all’inter-no del training set.

A ogni parola vengono aggiunti i simboli < e > all’inizio e alla fine, in modo da distinguere i prefissi e i suffissi da altre sequenze di caratteri. Dopodiché la parola viene rappresentata da un set di sequenze di caratteri, che includono sia la stringa intera della parola sia gli n-grammi contenuti in essa. Si illustra l’esempio della parola where, con n = 3 ; la parola verrà rappresentata dai

(32)

seguenti n-grammi:

<wh, whe, her, ere, re> verrà inoltre rappresentata anche dalla seguente sequenza:

<where>

Va notato che la sequenza <her>, corrispondente alla parola her, è una cosa diversa dal tri-gramma her estratto dalla parola where. In FastText, vengono estratti tutti gli n-grammi con 3 ≤ n ≤ 6.

Dato il dizionario G di tutti gli n-grammi che occorrono nel training set, ogni parola w viene rappresentata dall’insieme di n-grammi che occorrono in essa: Gw ⊂ {1, ..., G}. A ogni n-gramma g viene associato un vettore zg.

Ogni parola viene rappresentata dalla somma dei vettori associati ai suoi n-grammi. La funzione di scoring che si vuole massimizzare diventa quindi:

s(w, c) = X

g∈Gw

z>gvc (3.2)

La likelihood della coppia (w, c), in cui w è la parola target e c il suo contesto, si ottiene dalla somma dei prodotti scalari tra il vettore di ogni n-gramma contenuto in w e il vettore che rappresenta il contesto c. Con questa scoring function viene quindi valutata l’informazione legata alla struttura mor-fologica della parola, cosa che non avviene con Word2Vec, dove la scoring function valuta solo la likelihood della coppia composta dalla parola target wt e da una delle parole del contesto wc:

s(wt, wc) = u>wtvwc (3.3)

tale likelihood viene calcolata mediante il prodotto scalare tra il vettore uwt

(33)

Nei modelli creati con FastText le parole possono quindi condividere le strut-ture di rappresentazione; è così possibile ottenere una rappresentazione vet-toriale affidabile anche per parole che occorrono raramente nel training set o non vi occorrono affatto.

(34)

Capitolo 4

Il task SENTIPOLC di Evalita

Negli esperimenti condotti nell’ambito di questo lavoro si sono voluti affron-tare i tre sotto-task in cui si articola il task SENTIPOLC, proposto nell’edi-zione del 2016 della campagna di valutanell’edi-zione Evalita. In questo capitolo si descrivono le caratteristiche del task.

4.1

La campagna

Il task SENTIPOLC (SENTIment POLarity Classification Task) trova nel-l’ambito di Evalita 2016 la sua seconda edizione. In tale campagna si valuta quanto i sistemi presentati dai partecipanti siano in grado di individuare al-cune caratteristiche relative al sentimento che viene espresso nei messaggi – in lingua italiana – pubblicati all’interno di Twitter. In particolare, a venire valutata è la capacità di riconoscere nei testi in analisi la polarità, l’eventuale soggettività del contenuto e l’eventuale presenza di ironia.

Alla campagna del 2016 hanno partecipato 13 gruppi, i quali hanno presentato nel complesso 57 run.

(35)

4.2

I task

In SENTIPOLC sono stati presentati tre sotto-task che riguardano gli aspetti del sentimento di cui si è accennato sopra: Subjectivity Classification, Polarity Classification e Irony Detection. Per ragioni di semplicità, in questo lavoro ci riferiremo ad essi quasi sempre chiamandoli task e non sotto-task.

Task 1: Subjectivity Classification

Il task della classificazione della soggettività consiste nel decidere se un tweet in analisi è soggettivo od oggettivo. Tale caratteristica è codificata mediante il tag subj, facente parte dell’annotazione dei tweet presenti nel data-set. Task 2: Polarity Classification

Il task della classificazione della polarità consiste nel decidere se un tweet in analisi è di sentimento positivo, negativo, neutrale o misto.

I sentimenti positivo e negativo sono codificati nel data-set ognuno me-diante un tag specifico (opos e oneg), che ne indica la presenza o l’assenza. Il valore di questi tag determina il sentimento complessivo del tweet, con quattro possibili combinazioni:

1. polarità positiva, caratterizzata dalla presenza di sentimento positivo e dall’assenza di sentimento negativo;

2. polarità negativa, caratterizzata dall’assenza di sentimento positivo e dalla presenza di sentimento negativo;

3. polarità neutrale, caratterizzata dall’assenza sia di sentimento posi-tivo sia di sentimento negaposi-tivo;

4. polarità mista, caratterizzata dalla presenza sia di sentimento posi-tivo sia di sentimento negaposi-tivo.

(36)

Task 3: Irony Detection

Il task del rilevamento dell’ironia consiste nel decidere se il tweet in analisi è ironico o meno. Anche questa caratteristica è codificata da un tag (iro) presente nell’annotazione dei tweet contenuti nel data-set.

L’ironia ha un impatto importante nell’ambito della Sentiment Analysis, in quanto la sua presenza è in grado di compromettere la capacità dei sistemi di riconoscere la polarità effettiva dei testi in analisi.

4.3

I data-set

Il data-set che è stato distribuito ai partecipanti è stato costruito con ma-teriale proveniente da altri corpora; di questi in alcuni casi è stata usata solo una porzione, mentre in altri casi ne è stata usata l’interezza. Più nel dettaglio, è stato riutilizzato l’intero data-set dell’edizione di SENTIPOLC del 2014 (comprensivo dei dati di training e test), composto da 6421 tweet; sono stati inoltre usati i corpora TWitterBuonaScuola (dal quale cui sono stati estratti 1500 tweet), TW-TWITA15 (di cui sono stati usati 1500 tweets) e TW-NEELIT(di cui sono stati usati 989 tweet); quest’ultima collezione di tweet è quella che è stata raccolta nell’ambito di un’altro task proposto all’interno di Evalita 2016, NEEL-IT.

4.3.1

Composizione del corpus e schema di annotazione

Il campo idtweet contiene l’identificatore del tweet, ottenuto durante la raccolta dei dati da Twitter.

I campi annotati manualmente sono sei:

1. subj (subjectivity) indica il valore di soggettività del tweet: per un tweet soggettivo si avrà subj = 1, mentre per un tweet oggettivo si avrà subj = 0;

(37)

2. opos (positive overall polarity) ha valore pari a 1 se il tweet ha una polarità effettiva positiva, 0 altrimenti;

3. oneg (negative overall polarity) ha valore pari a 1 se il tweet ha una polarità effettiva negativa, 0 altrimenti;

4. iro (irony) ha valore pari a 1 se nel tweet è presente ironia, 0 altrimenti; 5. lpos (positive literal polarity) ha valore pari a 1 se il tweet ha una

polarità letterale positiva, 0 altrimenti;

6. lneg (negative literal polarity) ha valore pari a 1 se il tweet ha una polarità letterale negativa, 0 altrimenti;.

Il campo top corrisponde al topic affrontato nel tweet; il suo valore è legato all’eventuale uso di keyword nella raccolta dei dati: top = 0 marca i tweet ottenuti casualmente, senza specificare alcuna keyword; top = 1 marca i tweet ottenuti specificando delle keyword e degli hashtag inerenti a tematiche politiche; top = 2 marca i tweet ottenuti specificando keyword e hashtag collegati all’argomento #labuonascuola, il cui topic è più specifico.

Il campo text corrisponde all’effettivo contenuto testuale del tweet.

4.3.2

Procedura di annotazione

L’annotazione dei dati provenienti dai corpora TW-BS e TW-SENTIPOLC è stata corretta in maniera semiautomatica: dove è stato possibile, le vecchie etichet-te sono staetichet-te convertietichet-te in modo da soddisfare i requisiti del nuovo schema di annotazione; dove non possibile, degli annotatori esperti hanno rivisto ma-nualmente le etichette.

L’annotazione dei dati provenienti dai corpora TW-NEELIT e TWITA15 è stata effettuata ex novo usando la piattaforma Crowd Flower.

I dati sono stati ripartiti tra development-set e test-set in modo che in en-trambi fosse presente sia materiale annotato da esperti che materiale anno-tato sulla piattaforma di crowd sourcing. In particolare, TW-SENTIPOLC14

(38)

e TW-BS sono stati inclusi per intero, rispettivamente, nel development-set e nel test-set; 500 tweet facenti parte dei dati raccolti sulla piattaforma so-no stati inclusi nel test-set, mentre la parte rimanente è stata inclusa nel development-set.

4.3.3

Formato e distribuzione

Ai partecipanti è stato fornito il development-set, composto da 7410 tweet, il quale contiene tutti i campi descritti in precedenza, ovvero l’id, le annotazioni relative ai task (con l’aggiunta dei tag lpos e lneg), il topic ed il testo del tweet.

Ai partecipanti è stata fornita inoltre una versione blind del test-set, ovvero una versione nella quale sono presenti soltanto i campi relativi all’id e al testo del tweet.

4.4

Il metodo di valutazione

Descriveremo il metodo di valutazione separatamente per ogni task. Task 1: Subjectivity Classification

La performance viene valutata in base al valore assegnato dal sistema al campo della soggettività (i valori possibili sono 0 e 1), che viene confrontato con l’annotazione gold. La precision (p), la recall (r) e la F-score (F ) viene calcolata per ognuna delle due classi (subj, obj) nel modo seguente:

pclass= #correctclass #assignedclass rclass= #correctclass #totalclass (4.1) Fclass = 2 pclassrclass pclass+ rclass

(39)

La F-score complessiva è data dalla media delle F-score per le due classi (soggettivo, oggettivo):

F = (Fsubj+ Fobj)

2 (4.2)

Task 2: Polarity Classification

Lo schema di annotazione prevede quattro possibili combinazioni dei valori di opos e oneg:

• 10 (polarità positiva); • 01 (polarità negativa); • 11 (polarità mista); • 00 (assenza di polarità).

Le performance relative a opos e oneg vengono valutate separatamente: per ognuno dei possibili valori (0 e 1) vengono calcolate precision (p), recall (r) e F-score (F ):

poposclass= #correct

opos class

#assignedoposclass p

oneg class =

#correctonegclass #assignedonegclass rclassopos = #correct

opos class

#totalclassopos r

oneg class=

#correctonegclass

#totalclassoneg (4.3) Fclassopos = 2 p

opos classr

opos class

poposclass+ roposclass F

oneg class = 2

ponegclassrclassoneg ponegclass+ rclassoneg

Per opos e oneg, la F-score è calcolata mediante la media delle F-score per i valori 0 e 1: Fopos= (F opos 0 + F opos 1 ) 2 F oneg = (F oneg 0 + F oneg 1 ) 2 (4.4)

(40)

Infine, la F-score complessiva si ottiene mediante la media delle F-score per opos e oneg:

F = (F

opos+ Foneg)

2 (4.5)

Task 3: Irony Detection

I sistemi vengono valutati in base ai valori assegnati (0 o 1) al campo dell’i-ronia. Una risposta è considerata corretta se corrisponde a quanto indicato dall’annotazione gold standard. Precision, recall e F-score vengono mi-surate per ciascuna classe (ironico, non ironico), in maniera simile a quanto visto per il Task 1, con le dovute modifiche.

4.5

I risultati ottenuti dai partecipanti

Tra i team di partecipanti, quasi tutti hanno partecipato sia al task Sub-jectivity Classification che al task Polarity Classification. Ogni team doveva consegnare almeno un run di tipo constrained (ovvero che non usasse materia-le aggiuntivo per l’addestramento del modello); inoltre ai team era consentito inviare fino a un massimo di quattro run, due constrained e due unconstrai-ned. I run consegnati per i tre task sono stati 19 (Subjectivity Classification), 26 (Polarity Classification) e 12 (Irony Detection). Tre team (UniPi, Unitor e tweet2check) hanno presentato run di entrambi i tipi per entrambi i task relativi alla soggettività e alla polarità. I run di tipo unconstrained hanno avuto performance migliori rispetto a quelli constrained.

La metrica tenuta in considerazione per determinare la graduatoria è la F-score. Per stabilire un limite inferiore per la performance dei sistemi, è stata sviluppata una baseline che è stata usata sui tre task.

(41)

Task 1: Subjectivity Classification

Per questo task sono stati inviati 19 run da 10 team. La F-score più al-ta (0.7444) è sal-taal-ta raggiunal-ta dal team Unitor con un sistema unconstrai-ned. Tra i sistemi constrained la F-score migliore (0.7184) è stata otte-nuta dal team samskara. Tutti i sistemi presentati hanno presentato un miglioramento rispetto alla baseline (0.3949).

Task 2: Polarity Classification

Il task Polarity Classification è stato il più partecipato, con 26 sistemi pre-sentati da 12 team. La F-score più alta (0.6638) è stata ottenuta dal team UniPi; tale valore è anche il più alto ottenuto da un sistema constrained. Tra i sistemi unconstrained, la F-score più alta (0.6620) è stata ottenuta dal team Unitor. Tutti i sistemi presentati hanno presentato un miglioramento rispetto alla baseline (0.4163).

Task 3: Irony Detection

Per il task Irony Detection sono stati presentati 12 sistemi da parte di 7 team. La F-score più alta (0.5412) è stata ottenuta dal team tweet2check, ed è anche il miglior risultato fra i run constrained. L’unico run unconstrained è stato presentato dal team Unitor; tale sistema ha ottenuto una F-score pari a 0.4810. Tutti i sistemi hanno mostrato un miglioramento rispetto alla baseline (0.4688); peraltro molti fra essi hanno ottenuto una F-score molto simile a tale valore, cosa che conferma la complessità del task del rilevamento dell’ironia.

4.6

Gli approcci usati dai partecipanti

I fattori che caratterizzano i sistemi dei partecipanti sono: il framework di classificazione, la strategia di rappresentazione dei tweet, l’eventuale uso di materiale di training aggiuntivo e l’eventuale uso di risorse esterne.

(42)

Framework di classificazione

Una novità di quest’edizione di SENTIPOLC è stata la sperimentazione di approcci basati su reti neurali convoluzionali (CNN). La maggior parte dei team ha utilizzato metodi già visti nell’edizione di SENTIPOLC del 2014. In particolare, le Support Vector Machines sono state l’algoritmo più adottato; altri team hanno usato altri approcci: un team ha adottato un approccio bayesiano, un altro ha adottato un sistema a regole.

4.6.1

Strategia di rappresentazione dei tweet

Per quanto riguarda la rappresentazione dei tweet, quasi tutti i team hanno adottato uno fra i seguenti due approcci:

1. feature engineering manuale; 2. uso di modelli distribuzionali.

I team che hanno adottato la strategia n. 1 hanno modellato le feature in maniera tradizionale, usando feature di parola di natura sintattica e seman-tica. Inoltre sono state adottate anche feature più specifiche del dominio, come la presenza di emoticon e hashtag.

La strategia n. 2 si fonda su una rappresentazione geometrica dei tweet, ovvero una rappresentazione vettoriale. Le parole presenti nei tweet vengo-no rappresentate mediante i Word Embedding, nella maggior parte dei casi creati con la metodologia Word2Vec o approcci simili. Alcuni team hanno ampliato tale rappresentazione con feature ricavate mediante metodologie aggiuntive.

4.6.2

Sfruttamento di tweet aggiuntivi per il training

Alcuni team hanno presentato dei run di tipo unconstrained, ovvero han-no usato per l’addestramento del sistema ulteriori dati estratti da Twitter e

(43)

annotati. In particolare, i team il cui sistema si basava su reti neurali con-voluzionali hanno usato dei corpora costituiti da dati estratti da Twitter che sono stati ricavati e annotati in varie maniere.

4.6.3

Uso di risorse esterne

Quasi tutti i team hanno usato risorse esterne, come lessici specifici per la Sentiment Analysis. Alcuni team hanno usato lessici preesistenti, altri hanno sviluppato delle proprie risorse specifiche per i task.

4.7

Considerazioni su

Irony Detection

Alcune considerazioni vanno fatte a proposito del task Irony Detection, che ha dimostrato di essere di notevole difficoltà. Persino il sistema migliore, presentato dal team Tweet2Check (F-score pari a 0.5412), ha ottenuto una recall molto bassa (0.1710); per quanto riguarda il secondo miglior sistema (a regole) presentato dal team CoMoDi si può fare un discorso analogo, in quanto le due performance sono molto simili.

La difficoltà del task potrebbe essere dovuta, oltre che alla sua complessità intrinseca, al fatto che la distribuzione delle classi nel development set era nettamente sbilanciata: solo un record su sette era classificato come ironico. Inoltre, va notato che, in confronto con SENTIPOLC 2014, le performance nel task relativo all’ironia hanno avuto un calo significativo. Ciò potrebbe essere spiegato dal fatto che, differentemente rispetto all’edizione 2014, in SENTIPOLC 2016 il topic del test-set era diverso da quello del training-set, e che probabilmente i sistemi, più che modellare l’ironia, hanno modellato il topic. È quindi probabile che il numero di esempi presenti nel training set non sia sufficiente per avere una buona generalizzazione sulla struttura dei tweet ironici.

(44)

Capitolo 5

Risorse linguistiche, feature e

metodologie sperimentali

In questo capitolo verranno descritti:

1. la preparazione delle risorse linguistiche;

2. la selezione delle caratteristiche linguistiche (di parola, delle emoticon, lessicali e semantico-distribuzionali) utilizzate per creare i modelli di classificazione;

3. la metodologia sperimentale.

5.1

Preparazione delle risorse linguistiche

Nella fase di preprocessing sono state svolte le seguenti operazioni: • raccolta dei dati da Twitter;

• pulizia del corpus Paisà e tokenizzazione dei due corpora; • creazione degli embedding delle parole.

(45)

5.1.1

Raccolta dei dati da Twitter

Il corpus di testi di Twitter è stato costruito nell’arco di alcuni mesi mediante l’uso dell’API di streaming fornita dal sito social, mediante la quale è possi-bile scaricare i tweet in tempo reale, quando vengono pubblicati sul sito. In particolare, si è scelto di scaricare i tweet relativi ai primi 10 trend del mo-mento su Twitter; la lista dei trend era fornita dall’API e veniva aggiornata una volta ogni ora.

Il risultato di tale processo è un corpus di grandi dimensioni, composto da quasi 70 milioni di tweet e più di un miliardo e 200 milioni di token, il quale è stato sottoposto a un processo di normalizzazione: gli hashtag sono stati sostituiti dalla stringa "_TAG_", le url dalla stringa "_URL_" e le mention dalla stringa "_USER_" seguendo l’approccio descritto da Basile et al. (2014). Il corpus così ottenuto è stato battezzato con il nome Tweets.

5.1.2

Pulizia del corpus Paisà e tokenizzazione dei due

corpora

Dal corpus Paisà – in formato xml – sono stati rimossi i tag ed i commenti, e si è proceduto quindi con la tokenizzazione dei due corpora. A questo scopo è stato usato il tokenizzatore TweetTokenizer fornito dalla suite NLTK, che è stato integrato con alcune regole per la gestione di alcune caratteristiche morfologiche dell’italiano, non riconosciute dal tokenizzatore essendo esso disponibile solo per la lingua inglese.

5.1.2.1 Descrizione del corpus Paisà

Paisà è un corpus costituito da una raccolta di testi in lingua italiana rac-colti sul web, che è stato sviluppato all’interno del progetto omonimo, con lo scopo di creare una risorsa esaustiva e di facile accesso per la didattica della lingua e della cultura italiana. Il corpus è stato costruito in modo da soddisfare alcuni requisiti: essere liberamente accessibile e riutilizzabile,

(46)

ave-re una copertura ampia che andasse dal linguaggio quotidiano a contenuti culturali ed essere arricchito da informazione linguistica aggiunta mediante annotazione automatica.

Il corpus contiene circa 388000 documenti (tutti pubblicati con licenza Creative Commons e risalenti ai mesi di settembre e ottobre 2010) prove-nienti da 1067 siti web, per un totale di 250 milioni di token. La parte più consistente (circa 269000 testi) è stata ricavata da testi facenti parte dei progetti di Wikimedia Foundation; la rimanente parte (119000 documenti) è stata raccolta mediante l’API di ricerca di Yahoo! da altre fonti, tra cui le pagine web guide.supereva.it e italy.indymedia.org e vari blog. Il corpus è stato arricchito di informazioni linguistiche mediante:

• lemmatizzazione;

• annotazione morfosintattica, effettuata con il Part-Of-Speech tagger descritto da Dell’Orletta (2009);

• annotazione sintattica, effettuata con il parser DeSR descritto da At-tardi et al. (2009).

Inoltre, esso è stato annotato con informazioni sulla complessità e sulla leggi-bilità del testo in questione. Per ogni documento vengono indicati i seguenti metadati:

• il numero di token contenuti; • il numero di frasi contenute; • la type-token ratio;

• il numero di parole contenute non facenti parte del vocabolario di base dell’italiano;

(47)

5.1.3

Creazione dei modelli distribuzionali

Per l’addestramento sono stati usati, come input, i due corpora tokenizzati nel modo che si è descritto sopra. Tra i due corpora c’è una grossa spropor-zione per quanto riguarda il numero di token contenuti: quasi 270 milioni nel caso di Paisà, più di 1200 milioni nel caso del corpus Tweets; pertan-to abbiamo creapertan-to 14 corpora di dimensioni minori, ognuno contenente una porzione dei quest’ultimo corpus, in modo da creare altrettanti modelli distribuzionali, e poter così verificare in che misura la dimensione del corpus a partire da cui si creano gli embedding influisca sull’accuratezza ottenuta poi dal classificatore. Il corpus più piccolo è composto da circa 10 milio-ni di token (corrispondenti approssimativamente ai primi 580000 documenti dell’intero corpus); aggiungendo a tale prima porzione dieci milioni di token per volta, sono stati ottenuti ulteriori nove corpora (da 20 a 100 milioni di token). Abbiamo poi creato quattro corpora di dimensioni maggiori, conte-nenti rispettivamente i primi 14, 28, 42 e 56 milioni di documenti contenuti nel corpus originale, in modo che ciascuno di essi fosse grosso modo, rispet-tivamente, 1/5, 2/5, 3/5 e 4/5 dell’intero corpus (rispettivamente circa 240, 480, 720 e 960 milioni di token); in questo modo abbiamo ottenuto una por-zione del corpus, quella corrispondente a 1/5 (240 milioni di token), che fosse paragonabile alle dimensioni di Paisà (quasi 270 milioni).

Effettuate queste operazioni, si è proceduto all’addestramento dei modelli distribuzionali. Per ciascuna delle due metodologie utilizzate (Word2Vec e FastText) sono stati addestrati 16 modelli: 14 usando come input le parti-zioni in cui è stato diviso il corpus Tweets e due usando entrambi i corpora nella loro interezza.

5.2

Le feature

Negli esperimenti abbiamo estratto diversi tipi di feature:

(48)

• ottenute dall’analisi delle emoticon presenti nei documenti in analisi; • ottenute dall’analisi del lessico contenuto nel testo dei tweet;

• ottenute dall’analisi linguistica dei testi a livello morfosintattico; • ottenute dai modelli distribuzionali (word embedding) creati con le

metodologie Word2Vec e FastText.

Le feature derivanti dall’analisi morfo-sintattica non sono state usate diret-tamente ma bensì hanno influito sul modo di sfruttare i word embedding. Le feature rimanenti possono essere raggruppate come segue:

• feature di parola; • feature delle emoticon;

• feature lessicali (bag-of-words);

• feature distribuzionali (word embedding).

Le feature di parola, delle emoticon e la bag-of-words sono state usate per definire un sistema baseline in base a cui valutare i risultati ottenuti usando le feature distribuzionali. Per gli esperimenti svolti in questo lavoro, sono stati usati dei documenti di configurazione in formato csv; attraverso di essi si indicava al sistema quali feature estrarre e alcuni parametri da usare per la classificazione.

5.2.1

Feature di parola e feature delle emoticon

Si tratta di un piccolo gruppo di caratteristiche delle parole e delle emoticon presenti nel documento che contribuiscono a formarne la rappresentazione vettoriale. Le feature di parola usate in questo lavoro sono le seguenti:

• ALL_CAPS, che assume come valore 1 se nel tweet tutte le parole sono in caps lock, 0 altrimenti;

(49)

• CONTAINS_CAPS, che assume come valore 1 se nel tweet esiste almeno una parola in caps lock, 0 altrimenti;

• ELONGATED_WORDS, che assume come valore 1 se nel tweet è contenuta almeno una parola il cui ultimo carattere è ripetuto almeno 3 volte, 0 altrimenti;

• NEGATIONS, che assume come valore 1 se nel tweet è contenuta almeno una negazione, 0 altrimenti.

Inoltre abbiamo usato le seguenti feature relative alle emoticon:

• POSITIVE_EMOTICONS, che assume come valore 1 se nel tweet è conte-nuta almeno un’emoticon con sentimento positivo, 0 altrimenti;

• NEGATIVE_EMOTICONS, che assume come valore 1 se nel tweet è conte-nuta almeno un’emoticon con sentimento negativo, 0 altrimenti; Ognuna di queste feature è stata estratta mediante delle espressioni regolari applicate ad ogni token di ogni tweet. In Tabella 5.1 sono illustrati alcuni esempi di come i tweet vengono effettivamente rappresentati mediante le feature di parola e delle emoticon.

5.2.2

Feature lessicali: bag-of-words

Le feature lessicali consistono in una matrice di occorrenza costituita da |T |righe e da |V | colonne, dove T è l’insieme dei tweet presenti nel training set e V è l’insieme delle parole occorrenti nel training set. Ogni tweet è quindi rappresentato da una riga della matrice, ovvero da un vettore in cui ogni i-esima componente contiene il numero di occorrenze nel tweet dell’i-esima parola in V. Per realizzare tale matrice, lo script di estrazione delle feature usa un dizionario complessivo di coppie D (della stessa dimensione di V ) in cui la chiave è il token ed il valore è l’indice ad esso assegnato; usa inoltre un dizionario d per ogni tweet t, in cui, per ogni token w degli n token

(50)

TESTO DEL TWEET ALL_CAPS CONT AINS_CAPS ELONGA TED_W ORDS NEGA TIONS POSITIVE_EMOTICONS NEGA TIVE_EMOTICONS

Mario Monti: Berlusconi risparmi all’Italia il bia-simo per aver causato un disastro #mariomonti-premier

0 0 0 0 0 0 Ma a quanta gente DEMOCRATICA rode che la

Borsa non ne voglia sapere di continuare a crollare? Povero Mario Monti sarà disperato

0 1 0 1 0 0 @leonardomaria c’è anche Mario Monti Burns :) 0 0 0 0 1 0 CRISI: MARCEGAGLIA, NO AL VOTO, SI’ A

GOVERNO MONTI 1 1 0 1 0 0 @yram__ grazie, ma sono al lavoro :( 0 0 0 0 0 1 il 1 maggio lo festeggio con #Grillo troppo

contento stò..tutto il resto e noiaaaa :) 0 0 1 0 1 0 Tabella 5.1: Esempi delle feature di parola e delle emoticon

diversi presenti in t, si ha una coppia in cui la chiave è l’indice che in D è associato a w e il valore è il numero di occorrenze di w in t; ogni dizionario d è stato trasformato in un oggetto lista di lunghezza |V |: le chiavi sono diventate gli indici della lista ed i valori corrispondenti sono diventati i valori memorizzati nelle posizioni indicate da tali indici; nelle posizioni rimanenti della lista sono stati inseriti dei valori nulli. Tali liste vengono poi inserite a loro volta in un oggetto lista; si viene così a creare una matrice di occorrenza; le fasi della costruzione di quest’ultima sono illustrate in Figura 5.1.

(51)

w1 w2 w3 . . . w|V |

iw1 iw2 iw3 . . . iw|V |

(a) Dizionario complessivo

iw1 count(t, w1)

iw2 count(t, w2)

iw3 count(t, w3)

... ... iwn count(t, wn)

(b) Dizionario per singo-lo tweet

w1 w2 w3 . . . w|V |

~t1 count(t1, w1) count(t1, w2) count(t1, w3) . . . count(t1, w|V |)

~t2 count(t2, w1) count(t2, w2) count(t2, w3) . . . count(t2, w|V |)

~t3 count(t3, w1) count(t3, w2) count(t3, w3) . . . count(t3, w|V |)

. . . .

~t|T | count(t|T |, w1) count(t|T |, w2) count(t|T |, w3) . . . count(t|T |, w|V |)

(c) Matrice di occorrenza

Figura 5.1: Fasi della costruzione della matrice di occorrenza lessicale

5.2.3

Feature distribuzionali

Le feature distribuzionali sono quelle di maggiore interesse per questo lavoro. Nella fase di feature extraction, si costruisce per ogni tweet una rappre-sentazione costituita da un vettore o da una concatenazione di più vettori, i

Riferimenti

Documenti correlati

Although the examined task is still far from real surgery, to the best of our knowledge this is the first framework that combines real-time situation awareness, adaptive

3 A POCL Algorithm for Planning with Preferences In this section, we introduce our POCL planning algorithm (cf. 1 is a standard flaw-based POCL algorithm, meaning that every

Also, residual stress measurements revealed that stress relaxation started with a high rate at the initial stages of loading and gradually increased at higher number of cycles

La placenta previa accreta è proporzionalmente as- sociata con il numero dei pregressi parti cesarei, il che predispone la cavità uterina ad impianti ben più bassi e profondi (da

Ora applicheremo questo concetto della teoria dei vettori a diversi ambiti fisici: centro dei sistemi di forze parallele; centro dei pesi, centro di massa, centro delle aree,

Oral administration of SJW or hypericin completely reversed the pPKCg (Fig. 3C) and pPKCe upregulation (Fig. 3D) detected 4 h after the administration of SNP or GTN in coincidence

unfastening of knotted fibers (T u ’).. The average of the reported values were included in Table 1 in the main text.. Strength and toughness modulus of control raw silk

In particular, we are talking about students involved in software engineering activities and, consequently, the ETC project creates an effective CSCL system for higher