Esta es una versión modificada para la realización de las prácticas de la asignatura de traducción automática del máster IARFID. Para más información acerca de NMT-Keras, consultar el repositorio oficial.
- Instalación
- Definición de variables
- Descripción de la red
- Entrenamiento
- Traducción
- Evaluación
- Ajuste de parámetros
- Bibliografía
Para instalar NMT-Keras, se asume que se tiene creado un directorio “TA” donde se realizarán las prácticas. Por simplicidad, a lo largo de esta guía asumiremos que
este directorio se encuentra ubicado en el home. De forma similar, asumimos que
se desea instalar NMT-Keras en el directorio “TA”. De no ser ası́, bastará con modificar $INSTALLATION PATH
.
~/TA$ wget https://raw.githubusercontent.com/PRHLT/nmt-keras_practicas-TA\
/master/full_installation.sh
~/TA$ chmod +x full_installation.sh
~/TA$ export INSTALLATION_PATH=~/TA
~/TA$ ./full_installation.sh ${INSTALLATION_PATH}
Una vez finalizada la instalación, se deberá asegurar que Tensorflow está configurado como backend de Keras. Para ello, se deberá comprobar que en el fichero ~/.keras/keras.json
aparece la siguiente lı́nea:
"backend": "tensorflow"
Alternativamente, en el directorio docker hay instrucciones para usar el toolkit mediante Docker.
Para el correcto uso de NMT-Keras, es necesario configurar las siguientes variables:
~/TA$ export TA=~/TA
~/TA$ export NMT=${INSTALLATION_PATH}/NMT_TA
~/TA$ export PATH=${NMT}/miniconda/bin/:${PATH}
~/TA$ export PYTHONPATH=${PYTHONPATH}:${NMT}/nmt-keras/keras:\
${NMT}/nmt-keras/coco-caption:${NMT}/nmt-keras/multimodal_keras_wrapper
En el fichero ${NMT}/nmt-keras/config.py
está detallada la red que se va a utilizar. Por defecto, ésta se compone de:
- El codificador es un LSTM bidireccional de 64 neuronas.
- El tamaño del vector para codificar las palabras fuente es de 64.
- El decodificador es un LSTM de 64 neuronas.
- El tamaño del vector para codificar las palabras destino es de 64.
- El factor de aprendizaje inicial es de 0.001.
- El número de epochs es 5.
- Otros parámetros de la red se encuentran en
config.py
.
Asumiendo que los datos de entrenamiento se encuentran en el directorio "Practica2" (para más información acerca de los datos, consultar el boletín), el entrenamiento se inicia mediante:
~/TA/Practica2$ python ${NMT}/nmt-keras/main.py 2>traza &
Este proceso dura unos minutos. La evolución del mismo se puede seguir haciendo:
~/TA/Practica2$ tail -f traza | grep "\[*\]"
Una vez entrenada la red, la traducción se realiza de la siguiente forma:
~/TA/Practica2$ ln -s trained_models/EuTrans_esen_AttentionRNNEncoderDecoder_\
src_emb_64_bidir_True_enc_LSTM_64_dec_ConditionalLSTM_64_deepout_\
linear_trg_emb_64_Adam_0.001 trained_model
~/TA/Practica2$ python ${NMT}/nmt-keras/sample_ensemble.py \
--models trained_model/epoch_5 \
--dataset datasets/Dataset_EuTrans_esen.pkl \
--text Data/EuTrans/test.es \
--dest hyp.test.en
La traducción se puede evaluar mediante:
~/TA/Practica2$ {$NMT}/nmt-keras/utils/multi-bleu.perl \
-lc Data/EuTrans/test.en < hyp.test.en
Para poder modificar los parámetros de la red, es aconsejable realizar una copia local del fichero config.py
:
~/TA/Practica2$ cp ${NMT}/nmt-keras/config.py .
Tras esto, se procederá a modificar los parametros deseados que están definidos en la copia local que acabamos de crear. Una vez definidos los parámetros deseados, se procederá a realizar el entrenamiento de la red de la siguiente manera:
~/TA/Practica2$ python ${NMT}/nmt-keras/main.py -c config.py 2>traza &
De manera similar, la traducción pasará a realizarse del siguiente modo:
~/TA/Practica2$ python ${NMT}/nmt-keras/sample_ensemble.py \
--models trained_model/epoch_5 \
--dataset datasets/Dataset_EuTrans_esen.pkl \
--text Data/EuTrans/test.es \
--dest hyp.test.en \
--config config.py
Álvaro Peris and Francisco Casacuberta. NMT-Keras: a Very Flexible Toolkit with a Focus on Interactive NMT and Online Learning. The Prague Bulletin of Mathematical Linguistics. 2018.