Prétraitement des données
Vous devez maintenant traiter les données pour notre nouveau modèle qui comporte deux entrées et une seule sortie. Les deux entrées sont les mots anglais codés en one-hot et les mots français codés en one-hot, à l'exception du dernier mot.
Le résultat serait les mots français encodés en one-hot, à l'exception du premier mot. En d'autres termes, dans le décodeur, chaque mot français en entrée a une sortie, qui est le mot suivant. Vous apprendrez ici comment mettre cela en œuvre.
Vous avez reçu la fonction sents2seqs()
, en_text
et fr_text
.
Cet exercice fait partie du cours
Traduction automatique avec Keras
Instructions
- Obtenez un lot d'entrées d'encodeur (à partir de
i
versi+bsize
) à l'aide de la fonctionsents2seqs()
(encodées en onehot et inversées). - Obtenez un lot d'entrées et de sorties du décodeur (à partir de
i
versi+bsize
) à l'aide de la fonctionsents2seqs()
(encodage onehot). - Séparez les entrées du décodeur (tous les mots français sauf le dernier) de l'
de_xy
, en découpant sur la dimension temporelle. - Séparez les sorties du décodeur (tous les mots français sauf le premier) de
de_xy
.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
bsize = 250
for i in range(0, len(en_text), bsize):
# Get the encoder inputs using the sents2seqs() function
en_x = ____('source', ____[____:____], onehot=True, reverse=____)
# Get the decoder inputs/outputs using the sents2seqs() function
de_xy = sents2seqs('target', ____[____:____], onehot=True)
# Separate the decoder inputs from de_xy
de_x = de_xy[:,____,:]
# Separate the decoder outputs from de_xy
de_y = de_xy[:,____,:]
print("Data from ", i, " to ", i+bsize)
print("\tnp.argmax() => en_x[0]: ", np.argmax(en_x[0], axis=-1))
print("\tnp.argmax() => de_x[0]: ", np.argmax(de_x[0], axis=-1))
print("\tnp.argmax() => de_y[0]: ", np.argmax(de_y[0], axis=-1))