TECH | 20 Feb 2018

Machine learning e l’immersione delle parole

Trasformare parole semanticamente simili in punti vicini dello spazio: quale la relazione tra assi cartesiani e parole?

Alle superiori tutti ci siamo sentiti raccontare l’aneddoto relativo ai famosi “panni in Arno” del Manzoni: vuole la leggenda che l’Alessandro nazionale abbia usato l’espressione “sciacquare i panni in Arno” per indicare la sua revisione linguistica dei Promessi Sposi, svolta sulla base dell’italiano parlato in Toscana (anzi a Firenze); l’operazione riuscì così bene che la frase esatta è riferita all’Arno “nelle cui acque risciacquai i miei cenci”.

Questa immersione di panni lessicali nel bel fiume che bacia la Toscana era all’epoca un’arguta metafora poetica, ma oggi viene alla mente leggendo la moderna espressione “word embedding”: quest’ultima designa una tecnica di analisi di testi scritti in una (qualsiasi) lingua naturale che in sostanza immerge un testo in un fiume di numeri, che vengono poi dati in pasto (anzi offerti da bere!) a un algoritmo di machine learning per trarne informazioni sulla semantica stessa del testo.

Trasformare informazione numerica in simbolica

L’idea di trasformare l’informazione numerica in informazione simbolica è tutt’altro che recente (come molte delle buone idee dell’informatica moderna) ed è stata utilizzata per decenni nel campo dell’Information Retrieval, cioè delle tecniche per svolgere ricerche efficienti all’interno di corpus documentali:  questa idea era anche nota come Vector Space Model.

Per capirla è necessaria un po’ di immaginazione: tutti conosciamo (sempre dalle superiori) l’idea della geometria cartesiana, che consiste nell’identificare i punti del piano e le coppie di numeri. Più precisamente, ogni punto del piano viene rappresentato da una coppia di coordinate, che sono numeri qualsiasi, e viceversa. Il piano stesso può quindi essere pensato come l’insieme delle coppie (x,y) di numeri, dove x e y variano indipendentemente e in tutti i modi possibili. Lo stesso vale per lo spazio cartesiano, solo che stavolta i punti sono rappresentati da triple di numeri (x,y,z).

Punti nel piano cartesiano: ciascun punto è una coppia di numeri, le sue coordinate rispetto agli assi: per esempio (2,3) ha coordinata x=2 e y=3, il che vuol dire che proiettando il punto sull’asse delle x la proiezione cade a distanza 2 dall’origine, e proiettandolo sull’asse delle y cade a distanza 3 dall’origine.
(fonte: Wikipedia)

Nel XIX secolo i matematici hanno realizzato che, sebbene sia impossibile visualizzare o immaginare spazi con più di tre dimensioni, è comunque possibile trattarli algebricamente: infatti, per analogia con i casi precedenti, possiamo pensare a uno spazio a N dimensioni come all’insieme delle N-ple di numeri (x1,x2,…,xN) dove ciascun xi varia indipendentemente dagli altri in tutti i modi possibili. Ciascuna posizione in una N-pla si chiama “dimensione” e l’insieme di tutte le N-ple si chiama spazio cartesiano N-dimensionale.

Tutta la geometria del piano e dello spazio può essere svolta in uno spazio N-dimensionale, in particolare si può parlare di punti, rette, piani, etc. È anche possibile calcolare la distanza fra due punti utilizzando una immediata estensione della distanza fra due punti nel piano, sempre una rimembranza delle superiori: se X = (x1,x2,…,xN) e Y = (y1,y2,…,yN) sono punti dello spazio N-dimensionale allora la loro distanza euclidea è

Per chi ama riflettere su queste cose, la formula è sostanzialmente il teorema di Pitagora in N dimensioni.

Spazi cartesiani e AI

L’uso degli spazi cartesiani in dimensione N è essenziale nell’Intelligenza Artificiale: infatti, gli algoritmi come le reti neurali si aspettano che i dati da elaborare siano punti dello spazio cartesiano, cioè N-ple di numeri. E gli algoritmi di elaborazione dei testi non fanno eccezione: per capire come un testo sia trattabile in questo modo, vediamo come sciacquare i nostri panni negli spazi N-dimensionali, fuor di metafora: immergere le parole in uno spazio cartesiano di N dimensioni.

La tecnica standard consiste per prima cosa nel suddividere il testo nella successione delle parole che lo compongono, e nell’identificare in qualche modo parole che rappresentino la stessa cosa (per esempio scrivendo tutto in minuscolo, etc.). L’idea è ora di fissare una dimensione N abbastanza alta per dare “spazio” alle parole che vogliamo inserire, per esempio per un testo di miliardi di parole (molte delle quali ovviamente ripetute) sceglieremo uno spazio di dimensione N=100 o simili.

Riuscendo a mappare parole su punti dello spazio cartesiano N-dimensionale in modo che parole semanticamente simili finiscano su punti vicini (nel senso della distanza euclidea sopra riportata) si potrebbe trasformare la relazione di prossimità semantica (cioè “avere lo stesso significato di”) in una relazione di vicinanza geometrica fra punti.

Mappare le parole

Una delle sorprendenti conquiste degli ultimi anni nel campo del machine learning sono proprio algoritmi di questo tipo, di word embedding appunto, che riescono, semplicemente analizzando un corpus di documenti, a mappare le parole che in essi ricorrono in modo da trasformare la semantica in geometria.

L’idea di questi algoritmi viene in realtà dalle ricerche di alcuni linguisti degli anni ’50 (come Zellig Harris e John Rupert Firth) che affermavano che il significato di una parola è in qualche modo codificato dalle parole che la circondano nel testo in cui compare: in termini più semplici che il significato è legato al contesto o, come ha scritto Firth “conosci una parola dalle compagnie che frequenta”.

Una classe di algoritmi distribuzionali, inventati nel 2013 da Tomas Mikolov che allora lavorava a Google (e che ora è in Facebook Research), è word2vector: consiste nell’usare un particolare tipo di rete neurale, detta ricorrente, che impara in modo non supervisionato i contesti delle parole e li codifica in un layer interno della rete stessa; questo layer contiene tante N-ple di numeri quante sono le parole incontrate dalla rete nel suo addestramento, e quindi fornisce l’associazione richiesta fra le parole del corpus e i punti nello spazio cartesiano di dimensione N.

Il fatto sorprendente di questo algoritmo, che lo rende prezioso in moltissime applicazioni (come per esempio la traduzione automatica, le ricerche testuali, sistemi di “recommendation”, etc.), è che non solo trasforma parole semanticamente simili in punti vicini dello spazio, ma traduce concetti in relazioni lineari, cioè concetti che legano coppie di parole corrispondono a segmenti che congiungono i punti corrispondenti: in questo modo si ottiene una sorta di “geometria del significato” che consente di tradurre concetti semantici in relazioni nello spazio cartesiano, le cui formule sono studiate da quattro secoli.

Proiezione sul piano cartesiano del risultato di word2vec applicato a un corpus in lingua inglese: il segmento che unisce i punti corrispondenti alle parole “re” e “uomo” e il segmento che unisce “regina” e “donna” sono identici a parte la posizione: applicando il segmento che va da “uomo” a “re” al punto “donna” si è condotti al punto “regina”. In altri termini, quel segmento codifica il concetto di “regalità”.
(fonte: http://www.caressa.it/vettorieparole/)

Come sempre, vecchie ma buone idee trovano con le tecnologie moderne nuove dimensioni (è il caso di dirlo!) applicative, a ribadire che scienza e tecnologia devono conservare memoria del loro passato per poter costruire il proprio futuro.

Paolo Caressa