You shall know a word by the company it keep

J.R. Firth

Nei distributional semantic models (DSMs) , come già visto in questo articolo , le parole vengono rappresentate come un punto nello spazio da un  vettore di n numeri che corrispondono alle coordinate rispetto a n assi cartesiani (dimensioni dello spazio). In questo modo  il contenuto semantico di una parola è rappresentato dalla sua posizione in uno spazio definito da un sistema di coordinate, determinato dai contesti linguistici in cui la parola può ricorrere.
I vettori sono il principale strumento di rappresentazione matematica del contenuto lessicale nella semantica distribuzionale, proponendo così un’analogia fra lo spazio geometrico e quello  semantico. 
Il word-vector però non ha nessun valore semantico intrinseco , ma serve solo a definire la posizione nello spazio e la distanza da altre parole.
Word embedding è il termine che viene maggiormente utilizzato visto il recente successo dell’utilizzo di reti neurali artificiali (ANN) con i predictions models. In linguistica computazionale , si preferisce invece “Distributional semantic model” (DSMs)  rifacendosi così  all’ipotesi distribuzionale.

Preparazione delle risorse

Come funziona la mood-lamp? La procedura necessaria è abbastanza standard e possiamo ridurla in pochi steps.

1- Training di uno spazio semantico in italiano nella maniera più quick-and-dirty possibile con word2vec (implementazione in python).
2- Recupero delle frasi dal contenuto emotivo in italiano e relative labels (tristezza, sorpresa, gioia, disgusto, paura, rabbia ).

Per aumentare velocemente la dimensione del dataset ho provato prima utilizzando un questionario online  e di recente ho scoperto che Tumblr è davvero ricco di frasi dal contenuto emotivo in italiano (tristezza, sorpresa, gioia, disgusto, paura, rabbia ).

L’ideale sarebbe che le frasi nel training e testing set abbiano in media la stessa lunghezza (numero delle parole) e frequenza lessicale (media delle parole contenute nella frase).

Step-1: Data cleaning and text pre-processing

Normalizzazione di ogni frase contenuta nel dataset: lower case, stopwords , espressioni regolari, punteggiatura, tokenizzazione.

 

Step-2: From words to word-vectors

Trasformazione di ogni frase  nella sua rappresentazione vettoriale , più esattamente  nel vettore medio di tutte le parole che compongono ogni  frase.

esempio di word dense vector a 300 dimensioni della frase di Tumblr

La somma dei vettori per ogni parola ci restituirà un nuovo vettore che (più o meno cattura) il contenuto semantico della frase intera che ci servirà inseguito  come feature per il classificatore randomForest (scikit-learn) per predire la label.

Step-3: Classificatore

1- Computare on-line la rappresentazione vettoriale del testo in input: ad ogni parola immessa, ricalcolare il vettore medio.
2- Ad ogni nuova parola, usare il vettore risultante, assieme ai pesi stimati sopra, per predire la label emotiva.
3- Ad ogni nuova parola, update del colore nella mood-lamp.

 

 

Bibliografia

[1]  Magnus Sahlgren, The word-space model: Using distributional analysis torepresent syntagmatic and paradigmatic relations between words in high-dimensional vector spaces, Department of Linguistics,Stockholm University, 2006
[2]  Magnus Sahlgren, The distributional hypothesis, Italian Journal of Linguistics, 2008
[3] Jurafsky Martin, Speech and language processing, Pearson Education, 2008
[4] P. Turney, and P. Pantel, From frequency to meaning: Vector Space Models of Semantics, J. Artif. Intell. Res.(JAIR), 2010
[5] Baroni M., G. Dinu, G. Kruszewski, Don’t count, predict! A systematic comparison of context-counting vs. context-predicting semantic vectors, Proceedings of the 52nd Annual Meeting of the Association for Computational Linguistics, 2014
[6] E. M. Ponti, M. Budassi, Compter, parler, soigner. Tra linguistica e intelligenza artificiale. Atti del Convegno, Pavia University Press, 2016

Sitografia
[1] Magnus Sahlgren, A brief history of word embeddings (and some clarifications), Linkedin, 2015