COME UTILIZZARE IL MULTILINGUAL SENTENCE ENCODER IN PRATICA
Questo articolo non sarebbe stato di alcuna utilità senza una spiegazione relativa alle modalità di utilizzo di questo potente strumento di NLP. Grazie allo spirito magnanimo dei ricercatori di
Google AI, tutti questi modelli pre-addestrati sono disponibili su tensorflow-hub e facilmente eseguibili su un qualunque laptop con Python 3 utilizzando il framework di deeplearning Tensorflow. Non è necessario avere grande familiarità con Tensorflow; è possibile prendere il codice che seguirà come una scatola nera che mappa da frasi ad array codificati che ne rappresentino coerentemente il significato.
Mostriamo come usarlo con un esempio. Supponiamo di essere dei madrelingua inglesi che si apprestano a tradurre un testo dall'italiano all'inglese. Supponiamo anche che "Mamma mia" e "Pizza" siano le uniche parole italiane che possiamo ricordare, ma il testo che si intende tradurre parla di una complessa ricetta italiana. Supponiamo infine di essere molto esigenti. Intendo MOLTO esigenti. Non è sufficiente gettare il testo all'interno di Google Translate e fare copia-incolla di tutto ciò che potrebbe uscirne. Stiamo cercando il miglior servizio di traduzione online, dal momento che nulla di questo gustoso capolavoro italiano dovrà andare perso a causa di traduzioni scadenti. Ma come si può confrontare la qualità della traduzione da una lingua che non si conosce? Bene, è possibile farlo se quella lingua rientra nelle sedici elencate in precedenza, e per fortuna l'italiano lo è.
Per risolvere questo problema stiamo cercando, tra alcuni dei servizi di traduzione online più utilizzati, quelli per cui le frasi fornite in input e i risultati tradotti sono più simili usando la rappresentazione del Multilingual Sentence Encoder. Questo perché più due rappresentazioni sono vicine tra loro, più le due frasi codificate sono simili ovvero contengono la stessa informazione nonostante la differenza di lingua. Poiché le rappresentazioni delle frasi non sono altro che vettori di 512 dimensioni normalizzate, una misura di similarità tra due vettori può essere calcolata utilizzando il prodotto scalare. Abbiamo ridotto il problema originale al compito di cercare il traduttore le cui frasi tradotte codificate hanno il prodotto scalare più elevato con le frasi italiane codificate. Un gioco da ragazzi, no?
Questo è un piccolo estratto del testo italiano di partenza:
Per preparare gli arancini di riso, iniziate lessando il riso in 1,2 l di acqua bollente salata, in modo da far sì che, a cottura avvenuta, l’acqua sia stata completamente assorbita (questo permetterà all’amido di rimanere tutto in pentola e otterrete un riso molto asciutto e compatto). Fate cuocere per circa 15 minuti, poi sciogliete lo zafferano in pochissima acqua calda e unitelo al riso ormai cotto. Unite anche il burro a pezzetti.
E queste sono le traduzioni ottenute rispettivamente utilizzando
Google Translate, Reverso e Bing Translator.
- Google Translate (gt)
To prepare the rice arancini, start by boiling the rice in 1.2 l of salted boiling water, so that, once cooked, the water has been completely absorbed (this will allow the starch to remain all in the pot and you will get a very dry and compact rice). Cook for about 15 minutes, then dissolve the saffron in very little hot water and add it to the now cooked rice. Also add the butter into small pieces.
- Reverso (rv)
To prepare the rice oranges, start by boiling the rice in 1.2 l of boiling salted water, so that, once cooked, the water has been completely absorbed (this will allow the starch to stay in the pot and you will get a very dry and compact rice). Cook for about 15 minutes, then melt the saffron in very little hot water and add it to the rice now cooked. Add the butter pieces too.
- Bing Translator (bng)
To prepare the rice arancini, start by boiling the rice in 1.2 l of boiling salted water, so that, when cooked, the water has been completely absorbed (this will allow the starch to stay all in the pot and you will get a very dry rice compact). Cook for about 15 minutes, then melt the saffron in very little hot water and add it to the cooked rice. Add the butter into small pieces.
Sembrano abbastanza simili ma in molti passaggi i diversi traduttori hanno preso decisioni diverse, ad esempio nell'ultima frase. Quale di queste traduzioni è la più fedele alla ricetta italiana originale?
Per scoprirlo buttiamo giù un po’ di codice. Per prima cosa importiamo i pacchetti necessari e impostiamo la variabile url del modello desiderato.
Carichiamo il testo in italiano e le tre traduzione candidate.
Impostiamo il model graph di Tensorflow.
Calcoliamo la rappresentazione vettoriale di tutte le frasi di tutti e quattro i documenti. Ogni frase è mappata in una matrice di 512 elementi, quindi ogni documento è rappresentato come una matrice M x 512 dove M è il numero di frasi nel documento originale.
Ora il passo finale. Per verificare le somiglianze tra frasi italiane e inglesi non ci resta che calcolare il prodotto scalare tra la codifica delle frasi italiane e la codifica delle corrispondenti frasi in tutti i diversi traduttori. Infine calcoleremo la media delle somiglianze tra tutte le frasi tradotte.
Ed ecco i risultati ottenuti:
La differenza nelle somiglianze medie è molto bassa (abbastanza ovvio poiché tutte le traduzioni sono dello stesso testo), ma Google Translate pare abbia generato delle frasi il cui significato sembra leggermente più vicino a quelle originali italiane. Questo approccio può anche essere usato per calcolare un punteggio approssimativo di quanto una traduzione sia fedele al testo originale fornito.