Machine Translation de otros idiomas a Inglés: herramientas, datasets y modelos preentrenados

Interesantísimo artículo de Thamme Gowda, Zhao Zhang, Chris A Mattmann, y Jonathan May presentando herramientas útiles para la investigación con Traducción Automática: MTData, NLCodec y RTG. Modelo de traducción automática neural multilingüe capaz de traducir desde 500 idiomas de origen (Español, Francés, Alemán, etc) al Inglés.

machine translationTraduccino Automatica
16 diciembre, 2021 Herramientas de Machine Translation
16 diciembre, 2021 Herramientas de Machine Translation

Traducción de Inglés a Español realizada por Jose, traductor de Inglés experto en Machine Translation con más de 20 años de experiencia traduciendo textos de todo tipo para la agencia de traducción Ibidem Group.

Texto original escrito por Thamme Gowda y publicado en
https://www.isi.edu/~tg/posts/2021/04/mtdata-nlcodec-rtg-many-english/

***

Enlaces

Resumen

Estas son las 3 herramientas de traducción automática que vamos a usar:

MTData

Una herramienta para descargar conjuntos de datos de traducción automática https://github.com/thammegowda/mtdata/

  pip install mtdata  

NLCodec

https://isi-nlp.github.io/nlcodec/

 pip install nlcodec 

RTG

https://isi-nlp.github.io/rtg/

  pip install rtg 
Guiones, tablas y gráficos: https://github.com/thammegowda/006-many-to-eng

El primer paso es usar estas herramientas para recopilar datasets grandes.

Descargar datasets

  1. Desde http://rtg.isi.edu/many-eng/data-v1.html.
  2. También disponible en OPUS https://opus.nlpl.eu/MT560.php

Y luego entrenar modelos multilingües masivos para la traducción automática al inglés.

Descargar modelos

http://rtg.isi.edu/many-eng/models/

Recommended: rtg500eng-tfm9L6L768d-bsz720k-stp200k-ens05.tgz

Proporcionamos una imagen docker con un modelo preentrenado que puede utilizarse fácilmente como servicio de traducción:

pick the latest image from https://hub.docker.com/repository/docker/tgowda/rtg-model
IMAGE=tgowda/rtg-model:500toEng-v1

To run without using GPU; requires about 5 to 6GB CPU RAM
docker run --rm -i -p 6060:6060 $IMAGE

Recommended: use GPU (e.g. device=0)
docker run --gpus '"device=0"' --rm -i -p 6060:6060 $IMAGE

Si no queremos usar docker, entonces haremos lo siguiente:

Paso 1: Configurar un entorno conda e instala la librería rtg.

Si falta conda en su sistema, instale miniconda para empezar.
conda create -n rtg python=3.7
conda activate rtg
pip install rtg==0.5.0 # install rtg and its dependencies
conda install -c conda-forge uwsgi # needed to deploy service

Paso 2: Descargar un modelo y ejecutar

Pick the latest version
MODEL=rtg500eng-tfm9L6L768d-bsz720k-stp200k-ens05.tgz
wget http://rtg.isi.edu/many-eng/models/$MODEL

tar xvf $MODEL # Extract and run
uwsgi --http 127.0.0.1:6060 --module rtg.serve.app:app --pyargv "/path/to/extracted/dir"
Alternatively, without uWSGI (not recommended)
rtg-serve /path/to/extracted/dir
See "rtg-serve -h" to learn optional arguments for --pyargv "" of uWSGI

Interacción con la API REST

  • Interfaz web: se ha creado una sencilla interfaz web en http://localhost:6060.
  • La API REST está disponible en http://localhost:6060/translate.
    Un ejemplo de interacción con la API REST:
API=http://localhost:6060/translate
curl $API --data "source=Comment allez-vous?" \
--data "source=Bonne journée"
API also accepts input as JSON data
curl -X POST -H "Content-Type: application/json" $API\
--data '{"source":["Comment allez-vous?", "Bonne journée"]}'
Para saber más sobre el servicio RTG y cómo interactuar con él, vaya a RTGDocs

Decodificación por lotes

pip install rtg==0.5.0 should have already installed sacremoses-xt
pip install sacremoses-xt==0.0.44
sacremoses normalize -q -d -p -c tokenize -a -x -p :web: < input.src > input.src.tok

CUDA_VISIBLE_DEVICES=0 # set GPU device ID
rtg-decode /path/to/model-extract -if input.src.tok -of output.out

post process; drop s, detokenize
cut -f1 output.out | sed 's///g' | sacremoses detokenize > output.out.detok

Transferencia de padres a hijos para MT de bajos recursos

El modelo preentrenado puede adaptarse a un dataset específico, utilizando una configuración de transferencia padre-hijo.

Consulta la documentación de RTG para la transferencia de padres a hijos

La tasa de aprendizaje del entrenador del modelo hijo es un parámetro crucial: una tasa de aprendizaje más alta destruiría los pesos del modelo padre, y una tasa de aprendizaje más baja significa menos adaptación al conjunto de datos hijo. Por lo tanto, la tasa de aprendizaje debe ser la adecuada; consulta los archivos conf.yml en https://github.com/thammegowda/006-many-to-eng/tree/master/lowres-xfer

Referencias

https://aclanthology.org/2021.acl-demo.37/

@inproceedings{gowda-etal-2021-many,
title = "Many-to-{E}nglish Machine Translation Tools, Data, and Pretrained Models",
author = "Gowda, Thamme and
Zhang, Zhao and
Mattmann, Chris and
May, Jonathan",
booktitle = "Proceedings of the 59th Annual Meeting of the Association for Computational Linguistics and the 11th International Joint Conference on Natural Language Processing: System Demonstrations",
month = aug,
year = "2021",
address = "Online",
publisher = "Association for Computational Linguistics",
url = "https://aclanthology.org/2021.acl-demo.37",
doi = "10.18653/v1/2021.acl-demo.37",
pages = "306--316",
}

Agradecimientos

Gracias a USC CARC, y TACC por facilitar los recursos técnicos. Gracias a Jörg Tiedemann por alojar los datasets en OPUS.

Rate this post

Articulos relacionados


Traducción a Español de un texto en Inglés de Justin Houghton (Product Manager al BrainBase) explicando la evolución de la MT (Machine Translation) , desde la MT basada en reglas, a la MT estadística, la MT basada en ejemplos, la MT híbrida y finalmente la MT neuronal.

Traducción a Español de un artículo en Inglés de Teven Le Scao explicando los paradigmas y la evolución histórica de la Traducción Automática (MT): desde sus orígenes en 1933, y la posterior Traducción Automática basada en reglas, hasta la Traducción Automática basada en...

Traducción a Español de un artículo en Inglés de Some Aditya Mandal donde se explican los esfuerzos de los investigadores que hicieron avanzar la Traducción Automática Estadística hasta la actual Traducción Automática Neuronal.