T'has preguntat mai com funciona la traducció automàtica? Poques línies de codi són suficients per crear eines semblants a Google Translate, DeepL, etc. En aquest article, us guiarem pel procés de creació d'un model de traducció automàtica de seqüència a seqüència (seq2seq). Al final, podreu entendre com funciona i com tenir un model de traducció desplegable.
Entendre el model Seq2Seq
Per comprendre el concepte del model seq2seq, anem a capbussar-nos en un exemple. Imagina que tens una frase en anglès:
"How are you?"
i voleu traduir-lo al tamazight:
"Amek tettiliḍ?"
El model seq2seq consta d'un codificador i un descodificador, que treballen conjuntament per realitzar aquesta traducció.
-
Codificador: El codificador pren la frase font, "Com estàs?", i la processa paraula per paraula. Codifica la informació en un vector de longitud fixa anomenat vector de context. En el nostre exemple, el codificador analitzarà cada paraula i crearia una representació significativa de la frase.
-
Decodificador: El descodificador rep el vector de context del codificador i comença a generar la frase objectiu, "Amek tettiliḍ?". Ho fa paraula per paraula, tenint en compte el vector de context i les paraules generades prèviament. El descodificador aprèn a generar la traducció correcta a partir dels patrons que descobreix durant l'entrenament.
Preparació de dades
Ara que tenim una comprensió del model seq2seq, parlem de la preparació de dades utilitzant el mateix exemple.
Per entrenar un model de traducció automàtica, es requereix un corpus paral·lel, que consta de parells de frases alineades tant en la llengua d'origen (en el nostre cas en anglès) com en les llengües d'arribada (tamazight). Diversos recursos com Europarl i UN Parallel Corpus proporcionen grans quantitats de dades multilingües.
-
Tokenització: el primer pas en la preparació de dades és la tokenització. Desglossem les frases en anglès i tamazight en fitxes o paraules individuals. Per exemple, la frase anglesa "How are you?" es representaria en ['Com', 'sou', 'tu', '?'] i la frase tamazight "Amek tettiliḍ?" es convertiria en tokens en ['SOS', 'Amek', 'tettiliḍ', '?', 'EOS']. Utilitzem SOS i EOS per indicar l'inici i el final de la seqüència.
-
Neteja i normalització: A continuació, realitzem la neteja i la normalització de les frases tokenitzades. Això implica eliminar qualsevol caràcter innecessari, signes de puntuació o símbols especials que puguin dificultar el procés de traducció. Per exemple, podríem eliminar el signe d'interrogació al final de les frases en anglès i en tamazight per simplificar les dades d'entrenament.
En funció de les característiques de les llengües d'origen i de destinació, poden ser necessaris passos addicionals de preprocessament específics de l'idioma. Per exemple, en francès, potser hauríem de manejar caràcters especials com els accents o els diacrítics.
- Creació de vocabulari: Creem un vocabulari recopilant paraules úniques tant de les frases font com de destinació. A continuació, a cada paraula se li assigna un índex o identificador únic, donant lloc al que anomenem un mapa d'inserció de paraules, que s'utilitzarà durant el procés d'entrenament:
6: "how"
330: "are"
537: "you"
Amb això, el nostre exemple tokenitzat seria així:
[6, 330, 537] # How Are You
[420, 775] # Amek tettiliḍ
- Recoiximent de seqüències: per garantir longituds de seqüència uniformes, emplenen les frases amb fitxes especials (per exemple, "PAD" o 0) perquè totes tinguin la mateixa longitud. El farciment és necessari perquè les xarxes neuronals solen esperar entrades de longitud fixa. En afegir fitxes de farciment al final de frases més curtes, creem seqüències d'igual longitud, permetent un entrenament eficient. La longitud seria el nombre de paraules de la frase d'entrada més llarga.
Per exemple, aplicar un farciment de 13 als nostres testimonis d'entrada i sortida donarà el resultat següent:
[6, 330, 537, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] # How Are You
[420, 775, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] # Amek tettiliḍ
Formació de models
Amb les dades preparades, podem continuar amb l'entrenament del nostre model de traducció automàtica. Dividim les dades en conjunts de formació i validació. El conjunt d'entrenament s'utilitza per actualitzar els paràmetres del model durant l'entrenament, mentre que el conjunt de validació ens ajuda a controlar el rendiment del model i evitar un sobreajustament.
Entrenament en xarxes neuronals
Durant l'entrenament, alimentem el model amb les frases font (anglès) com a entrada i les frases de destinació corresponents (Tamazight) com a sortida desitjada. El model genera prediccions per a les frases objectiu, paraula per paraula, a partir de les seqüències d'entrada. Aquestes prediccions es comparen amb les seqüències objectiu reals mitjançant una funció de pèrdua, com ara l'entropia creuada categòrica.
Retropropagació i actualitzacions de paràmetres
Mitjançant el procés de retropropagació, el model calcula els gradients de la pèrdua respecte als seus paràmetres. Aquests gradients indiquen la direcció i la magnitud de les actualitzacions de paràmetres necessàries per minimitzar la pèrdua. L'algoritme d'optimització, com ara el descens del gradient estocàstic (SGD) o Adam, utilitza aquests gradients per actualitzar els paràmetres del model de manera iterativa, fent que les prediccions siguin més precises al llarg del temps.
Formació iterativa
El procés d'entrenament es produeix de manera iterativa durant diverses èpoques. En cada època, el model recorre tot el conjunt de dades d'entrenament, actualitzant els seus paràmetres i afinant la seva comprensió dels patrons de traducció. En repetir aquest procés, el model esdevé cada cop més competent per generar traduccions precises.
Validació i avaluació
Al llarg de la formació, avaluem periòdicament el rendiment del model en el conjunt de validació. Aquesta avaluació ens ajuda a fer un seguiment del progrés del model i a fer ajustos si cal. Podem utilitzar mètriques com BLEU (Bilingual Evaluation Understudy) per avaluar la qualitat de les traduccions i comparar-les amb les traduccions de referència.
Desplegament
Un cop s'ha entrenat i avaluat el model, està llest per al desplegament. TensorFlow ofereix diverses opcions per desplegar models de traducció automàtica, com ara TensorFlow Serving, TensorFlow Lite i TensorFlow.js. TensorFlow Serving permet servir el model a través d'una API REST, la qual cosa permet una fàcil integració amb altres aplicacions. TensorFlow Lite permet executar el model en dispositius mòbils amb recursos limitats. TensorFlow.js permet el desplegament en navegadors web, fent que la traducció sigui accessible als usuaris directament als llocs web.
També es pot utilitzar un marc web com FastAPI per crear una API REST.
També podeu consultar el nostre article sobre com implementar el vostre model d'aprenentatge automàtic per obtenir més detalls.
Millora contínua
Construir un model de traducció automàtica és un procés iteratiu. El seguiment dels comentaris dels usuaris, la recollida de dades addicionals i la perfeccionament del model mitjançant actualitzacions periòdiques són essencials per a la millora contínua. La flexibilitat i escalabilitat de TensorFlow faciliten l'adaptació del model als requisits en evolució i als nous llenguatges.