• Non ci sono risultati.

MMFeat4 è un toolkit in Python (Kiela, 2016) appositamente pensato per semplificare l’estrazione e l’analisi di risorse visive ed audio da applicare a lavori di elaborazione del linguaggio naturale. In particolar modo, MMFeat permette di estrarre:

• BoVW: Bag of Visual Words, estratte tramite l’utilizzo dei descrittori SIFT; • BoAW: Bag of Audio Words per i file audio;

• CNN: rappresentazione tramite rete neurale convoluzionale.

MMFeat ha presenta due comandi principali: miner.py e extract.py. Il primo prende in input le informazioni relative a che tipo di fonte utilizzare (ed eventualmente quanti file estrarre), un file contenente una lista di richieste e il nome della directory in cui memorizzare i dati. Il comando di miner.py si presenta pertanto nel modo che segue:

miner.py [-n int] {bing,google,etc} query-file data-directory

Anche il secondo comando prende in input almeno tre argomenti, ossia: il tipo di modello da applicare (boaw, bovw o cnn), la directory in cui so- no memorizzati i dati e l’indice e infine la tipologia di file output richiesta. Facoltativamente si possono poi indicare altre opzioni, come -k che esplicita il numero di cluster da usare nel metodo di bag-of-words e -s permette una sotto-campionatura del numero di file usati per il clustering

extract.py [-k int] [-c string] [-o {pickle,json,csv}] [-s float]

\ {boaw,bovw,cnn} data_dir out_file

Oltre questi comandi, il toolkit comprende 4 moduli principali, riportati di seguito:

mmfeat.miner: è il modulo che permette l’estrazione delle risorse audio o visive; le risorse possono essere scaricate da ImageNet, Google Images 5, Bing Images6 e Free Sound7. Per utilizzare i dati di queste ultime tre fonti è

necessario acquisire le loro API key 8 mentre per ImageNet non sono richieste API e ciò semplifica ulteriormente il processo di estrazione delle immagini. Questo modulo dispone i dati raccolti in un indice, organizzato sotto forma di dizionario Python; questo indice viene poi utilizzato dai moduli miner.bow e

miner.cnn per ottenere le rappresentazioni delle immagini o dei file audio.

mmfeat.bow: permette di estrarre le Bag-of-Visual-Words e le Bag-of- Audio-Words (BoAW). In particolare le BoVW utilizzano SIFT densi per

5Google:https://images.google.com 6Bing:https://www.bing.com/images 7FreeSound:https://www.freesound.org

8Le API (Application Programming Interface) costituiscono un insieme di protocolli e strumenti utilizzati nella realizzazione di un’applicazione software (Fonte: Wikipedia https://en.wikipedia.org/wiki/Application_programming_interface).

l’individuazione dei descrittori locali dell’immagine. Tramite l’algoritmo SIFT (Scale Inveriant Feature Transform) sono prima individuati i i principali punti di interesse di un’immagine, come mostrato in Figura 5.49 ed è poi individuato il descrittore dei punti (Fig. 5.5). Il descrittore viene creato calcolando la magnitudine del gradiente e l’orientamento di ciascun punto campionato nell’immagine. Questi punti vengono pesati tramite l’ausilio di una finestra Gaussiana e sono successivamente organizzati in istogrammi che ne riassumono i contenuti. Il descrittore è formato da un vettore contenente i valori di tutte le voci dell’istogramma di orientamento, corrispondenti alle lunghezze delle frecce sul lato destro della Figura 5.5. Il vettore viene poi normalizzato per ridurre gli effetti dei cambiamenti di luminosità. Una caratteristica importante dei descrittori SIFT è infatti l’essere in grado di rimanere inalterati anche a ridotti cambiamenti di posizione, cambio di luminosità o di prospettiva. Dal clustering dei descrittori vengono individuate le BoVW, come già descritto in Figura 2.3.

Figura 5.4: Individuazione dei punti di interesse

mmfeat.cnn: simile al precedente, permette di rappresentare le immagini attraverso l’utilizzo di una rete neurale convoluzionale profonda.

mmfeat.space: contiene metodi per semplificare la manipolazione dei dati estratti. Tra gli altri, consente di aggregare le rappresentazioni delle immagini e dei file audio, combinandole con elementi testuali per creare uno spazio multimodale e calcolando i valori di similarità o di correlazione.

9Questa immagine e la successiva sono tratte da Lowe," Distinctive Image Features from Scale-Invariant Keypoints", 2004.

Figura 5.5: Calcolo dei descrittori

I moduli sopra presentati sono alla base del codice utilizzato per la ricerca oggetto della tesi. Il programma utilizzato per l’estrazione delle immagini (descritto interamente in Appendice) si sviluppa quindi secondo i seguenti

passaggi:

• Prende in input il file in cui sono memorizzati i concetti di cui si vogliono estrarre le immagini e estrae le immagini da ImageNet

from mmfeat.miner import *

concept_file = ’./IMM_100_1’

data_dir = ’./IMM_100’

n_images = 5

concepts = open(concept_file).read().splitlines()

print(’Mining concept images’)

miner = ImageNetMiner(data_dir, ’../../miner.yaml’) miner.getResults(concepts, n_images)

miner.save()

• costruisce la rappresentazione delle immagini utilizzando le Bag-of-Visual- Words

from mmfeat.bow import *

model.load(data_dir) model.fit()

• costruisce lo spazio visivo utilizzando le rappresentazioni delle immagini

from mmfeat.space import * for lkp in model.toLookup():

vs = AggSpace(lkp, ’mean’) print vs.space

In questo modo sono estratte le immagini raffiguranti le co-occorrenze dei verbi di SimLex, di cui si riporta un esempio in Figura 5.6.

Tuttavia, non tutti i tipi di nomi hanno una corrispondenza in Image- Net. Per alcuni infatti non è possibile ottenere alcuna rappresentazione visiva perché appartenenti alla classe dei nomi astratti (come theory e experience). La problematicità dell’estrarre rappresentazioni visive di concetti astratti è d’altronde attestata anche in altre ricerche (Hill e Korhonen2014, Anderson 2017); pertanto il risultato ottenuto tramite le query di MMFeat non appare inaspettato.

Figura 5.6: Esempio di immagini estratte da ImageNet

Per quanto riguarda le immagini raffiguranti le co-occorrenze nominali non astratte, queste sono invece scaricate e ne sono individuati i descrittori

tramite l’utilizzo di MMFEAT. Per le immagini di tutti gli altri tipi presenti in ImageNet invece, tramite l’ausilio di MMFeat sono individuati i descrittori SIFT e, sempre automaticamente, estratte le Bag of Visual Words dalle immagini. Le Visual Words che rappresentano lo stesso concetto sono quindi aggregate e all’interno di ogni gruppo di immagini viene individuato il centroide 10. In questo modo tutti i valori delle Visual Words sono ridotte a un singolo valore per immagine/concetto.

A questo punto, avendo i verbi target, i nomi contesto, e la rappresentazione visiva dei concetti, è possibile passare al passo successivo dello sviluppo del progetto, ossia la costruzioni delle matrici e la creazione dei modelli semantici distribuzionali

10In geometria il centroide di un’immagine bidimensionale rappresenta la posizione media di tutti i suoi punti.

Capitolo 6

Verso la costruzione delle matrici

Il prossimo step del nostro progetto riguarda la costruzione delle matrici di co-occorrenza sia testuali che visiva. Nel presente Capitolo si illustrano pertanto le varie fasi che hanno portato alla costruzione di tali modelli distribuzionali.

6.1

Dalla matrice sparsa ...

Come prima cosa, i dati testuali e visivi raccolti vengono organizzati in matrici di co-occorrenza, utilizzate per descrivere lo spazio vettoriale distribu- zionale.

Una matrice di co-occorrenza M (anche definita come tensore di secondo ordine) è una matrice |T| x |C| in cui le righe corrispondono ai target (nel nostro caso, i verbi SimLex-999) e le colonne rappresentano i contesti (i soggetti e gli oggetti dei verbi) , come illustrato dalla Figura 6.2.

Tale matrice descrive uno spazio distribuzionale a n-dimensioni; la dimen- sione dello spazio vettoriale coincide con il contesto C e ogni lessema target t è descritto da un vettore distribuzionale in questo modo:

ti = (wti,c1, wti,c2, ...wti,cn) (6.1)

Per il progetto descritto nella presente tesi, le matrici distribuzionali sono realizzate utilizzando il codice1 sviluppato da Baroni e Lenci in DM (Baroni e

Lenci, 2010).

Questo script prende in input un file il cui contenuto segue la disposizione

elemento riga, elemento colonna, valore e produce un file.col e un file.mat. Il

primo comprende gli elementi della colonna, disposti uno per riga e nell’ordine in cui figurano all’interno della matrice. Il secondo genera invece una matrice in cui ogni riga corrisponde a un elemento-riga del file input. All’interno della matrice, il primo campo contiene l’elemento riga mentre gli altri campi della riga sono riempiti dai punteggi di quell’elemento con ogni degli elementi posti in colonna. La mancata occorrenza di un elemento di riga con l’elemento di colonna viene registrata come 0.

Figura 6.2: Esempio del risultato ottenuto applicando lo

script di Baroni e Lenci.

Utilizzando questo script è stata creata la matrice dei verbi con le 10 co- occorrenze nominali con LMI più alta per le due relazioni (M1) e la matrice comprendente tutti i soggetti e gli oggetti dei verbi (M2).

Lo stesso script è poi utilizzato anche per le immagini. In questo caso le entrate della matrice sono rappresentate dal centroide calcolato per ogni tipo di immagine sulla base delle Bag of Visual Words estratte con MMFeat. Pertanto

nella matrice delle immagini i verbi costituiscono le righe della matrice, le immagini le colonne e i centroidi le entrate della matrice. Il vettore associato a ogni verbo è così rappresentato come la sequenza dei centroidi delle sue occorrenze visive. Similmente alla matrice testuale inoltre anche in quella visiva se un verbo non co-occorre con un’immagine nell’entrata costituita dall’intersezione della riga di uno e della colonna dell’altra viene riportato il valore di zero.

A questo punto, i vettori sia delle matrici testuali M1 e M2 sia di quella visiva (MV), vengono normalizzati. La normalizzazione è un’operazione che permette di passare da un vettore v a un vettore vn che differisce da v a

meno di un multiplo scalare e tale da avere norma 1. Le matrici risultanti da tale normalizzazione sono però sparse ed utilizzano vettori espliciti ad alta dimensionalità.

Viene definito esplicito un vettore u a n-dimensioni tale che ogni componente del vettore ui corrisponde a un contesto linguistico ci ∈ C. Il problema dei

vettori sparsi (noto come "curse of dimensionality") è che tendono ad essere tutti equidistanti l’uno dall’altro e ciò non permette di discriminare efficacemente tra i vettori che sono effettivamente simili rispetto a quelli che non lo sono. Inoltre,alcune delle possibili co-occorrenze possono rimanere inosservate a causa della distribuzione distorta dei dati.

Per risolvere il problema della curse of dimensionality è necessario trasfor- mare i vettori espliciti in impliciti. Sia i vettori espliciti che quelli impliciti costituiscono delle rappresentazioni distribuzionali perché rappresentano le co-occorrenze dei lessemi all’interno del contesto linguistico; mentre però i vettori espliciti codificano direttamente le co-occorrenze nei loro componenti, i vettori impliciti rappresentano le co-occorrenze indirettamente, codificando come componenti i tratti (features) latenti estratti dai dati (Fig. 6.3 2).

Una rappresentazione distribuzionale implicita è costituita da un vettore

u a k-dimensioni, tale che: le dimensioni corrispondono alle k features latenti

estratte dalle co-occorrenze; il numero di queste features (tipicamente nell’ordine

2Immagine tratta dalle slide del corso "Distributional Semantics" tenuto da A.Lenci presso la Scuola Normale Superiore di Pisa (2017

Figura 6.3: Individuazione di features latenti

di poche centinaia) è minore rispetto a quello registrato nella matrice originaria. Trasformando il vettore da sparso a denso si effettua inoltre lo smoothing sulle componenti il cui valore è pari a 0.

Per creare i vettori distribuzionali impliciti vengono utilizzate tecniche di riduzione della dimensionalità che spostano i dati da un spazio ad alta dimen- sionalità di contesti linguistici a uno di bassa dimensionalità. Le dimensioni dello spazio ridotto costituiscono i nuovi tratti estratti dai dati originali. La trasformazione di una matrice da sparsa a densa presenta essenzialmente 4 vantaggi:

• la riduzione del rumore all’interno della matrice,

• la possibilità di individuare le strutture semantiche latenti tra dati e di • catturare le co-occorrenze di alto livello,

• la realizzazione dello smoothing su valori pari a zero (trasformando così il vettore in denso).

Per migliorare la qualità dello spazio semantico si è scelto quindi di tra- sformare i vettori testuali e visivi ottenuti da espliciti ad impliciti, utiliz- zando la Singular Value Decomposition come tecnica per la riduzione della dimensionalità.

6.2

... A quella ridotta

La Singular Value Decomposition (SVD) è una tecnica di riduzione della dimensionalità che consente di individuare la migliore approssimazione dei punti dei dati originali in uno spazio a bassa dimensionalità i cui vettori (dimensioni latenti) sono selezionati per catturare il più possibile le differenze nello spazio originale. Si realizza così una riduzione R della matrice sparsa M nella corrispettiva matrice densa M’ in cui D rappresenta le dimensioni latenti di C, come espresso di seguito:

R = MT ∗C → MT ∗D0 (6.2)

Seguendo la descrizione di (Bruni et al., 2014), la Singular Value Decompo- sition di una matrice M di rango r è una fattorizzazione della forma:

M = U ΣVt

dove :

(6.3)

• U è la matrice di autovettori derivata da M*Mt, considerando Mt come la

trasposta di M,

• Σ è la matrice diagonale r x r di σ valori singolari, • σ è la radice quadrata degli autovalori 3 di M*Mt,

• Vt è la matrice di autovettori derivata da Mt*M (Figura 6.44).

Tramite l’applicazione della Singular Value Decomposition, il vettore denso di una parola è calcolato come la combinazione lineare dei dati di ogni cella della matrice. Per discriminare le similarità tra i verbi target all’interno dello spazio distribuzionale e catturare in maniera più profonda il loro significato, è quindi applicata sia alla matrice testuale che a quella visiva una SVD di 100 dimensioni latenti. Il motivo per cui sono selezionate 100 dimensioni è

3Un autovettore di una funzione tra spazi vettoriali è un vettore non nullo la cui immagine è il vettore stesso moltiplicato per un numero (reale o complesso) detto autovalore.

4L’esempio è tratto dalle slide del corso "Distributional Semantics" tenuto da A. Lenci nel 2017 presso la Scuola Normale Superiore di Pisa

Figura 6.4: Esempio di SVD applicata a una matrice di

co-occorrenze testuali

che minore è il numero di dimensioni selezionare (sempre parlando nell’ordine delle centinaia), più efficiente a livello computazionale risulta essere il modello distribuzionale, come descritto anche da Bullinaria e Levy (2012).

Alla fine di questo processo le tre matrici M1,M2 e MV, normalizzate e ridotte, possono essere confrontate e può essere valutata la bontà del nostro modello visivo.

Capitolo 7

Valutazione dei modelli

Dopo aver generato i due modelli testuali e il modello visivo, lo step successivo è quello di valutare se e in che misura quest’ultimo contribuisca effettivamente a individuare meglio la similarità tra i verbi. Per effettuare questa verifica è anzitutto utilizzata una funzione di similarità, descritta nel dettaglio nella sezione successiva; tale funzione prende il nome di cosine similarity.

7.1

Calcolare la similarità semantica con i coseni

Per misurare la similarità1 tra due parole esistono diverse funzioni tra cui il coseno di similitudine (cosine similarity), il coefficiente di Jaccard o la distanza euclidea 2.

Per il lavoro oggetto di questa tesi, come detto già in precedenza, la simi- larità tra i verbi è calcolata utilizzando la cosine similarity. Questa funzione di similarità risulta essere particolarmente efficace nell’estrarre informazioni semantiche; inoltre, stando alla definizione fornita da Landuauer e Dumais (1997), può essere considerata come un indicatore della qualità di un significato.

Misuriamo quindi la similarità tra due verbi nei termini del coseno3 dell’an-

golo tra i due vettori all’interno dello spazio distribuzionale, come mostrato in

1Due parole vengono definite semanticamente simili se condividono dei tratti fisici, la funzione o se rientrano nella spessa categoria (e.g. car-bike). Due parole sono invece dette semanticamente correlate se tendono ad essere utilizzate all’interno degli stessi contesti linguistici.

2Per un’analisi comparata delle differenti misure di similarità si faccia riferimento al lavoro di Weeds (2003).

3Dato un angolo α sulla circonferenza goniometrica, si definisce coseno dell’angolo α l’ascissa del punto P associato ad α

Fig. 7.1. Questa misura è direttamente correlata alla distanza tra i due punti descritta dalla proiezione dei vettori nello spazio in cui sono contenuti.

Figura 7.1: Coseno tra due vettori

Il coseno tra due valori semantici u e v è pari al loro prodotto scalare diviso il prodotto della loro lunghezza:

cos(u, v) = u ∗ v || u |||| v || = n P i=1 uivi s n P i=1 u2 i s n P i=1 v2 i (7.1)

Il prodotto scalare, che coincide con la somma delle componenti dei due vettori, è a sua volta così definito:

u ∗ v = uivi+ ... + unvn= n

X

i=1

uivi (7.2)

Il valore del coseno può variare da 0 (vettori ortogonali) a ± 1, dove 1 indica la corrispondenza perfetta (aka vettore identico) e -1 indica due vettori paralleli ma in direzione opposta.

Sia per i vettori dei modelli testuali che per quelli del modello visivo è quindi calcolata la cosine similarity utilizzando il codice per il calcolo dei coseni scritto nel 2009 da M.Baroni per la manipolazione del tensore DM. Lo script4

elaborato da Baroni prende in input due file: il primo comprende una lista di coppie di elementi (nel nostro caso, verbo-verbo) mentre il secondo è il file contenente la matrice. In output viene generato un file in cui è riportato, per

ogni coppia di elementi del file di input, il loro coseno calcolato sulla base dei vettori nella matrice. Se non c’è alcuna similarità tra i due elementi viene restituito il valore di 0, come mostrato in Figura 7.2.

Figura 7.2: Esempio del risultato ottenuto tramite lo script per il

calcolo dei coseni

Il Paragrafo successivo presenta alcune delle analisi effettuate sulla base dei coseni calcolati.

Documenti correlati