Remplir (padding) les phrases
Vous allez maintenant implémenter une fonction appelée sents2seqs() que vous utiliserez ensuite pour transformer facilement des données au format accepté par le modèle de neural machine translation (NMT). sents2seqs() accepte une liste de chaînes représentant des phrases et :
- Convertit les phrases en une liste de séquences d'ID,
- Effectue le remplissage (padding) des phrases afin qu'elles aient une longueur égale et,
- Convertit éventuellement les ID en vecteurs onehot.
On vous a fourni en_tok, un Tokenizer déjà entraîné sur des données. À noter également qu'en implémentant la fonction sents2seqs(), vous verrez un argument inutilisé nommé input_type. Plus tard, cet input_type servira à modifier des paramètres dépendants de la langue, comme la longueur de la séquence et la taille du vocabulaire.
Cette activité fait partie du cours
Traduction automatique avec Keras
Instructions de l’exercice
- Convertissez
sentencesen séquences à l'aide du Tokenizeren_tok. - Remplissez les séquences à une longueur fixe
en_lenavec le type de remplissagepad_typeet une troncaturepost. - Convertissez les ID de mots de
preproc_texten vecteurs onehot de longueuren_vocaben utilisant la fonctionto_categorical(). - Convertissez
sentenceen une séquence rembourrée en utilisant la méthodesents2seqs()avec un remplissagepre.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
from tensorflow.keras.preprocessing.sequence import pad_sequences
from tensorflow.keras.utils import to_categorical
def sents2seqs(input_type, sentences, onehot=False, pad_type='post'):
# Convert sentences to sequences
encoded_text = ____.____(sentences)
# Pad sentences to en_len
preproc_text = ____(____, padding=____, truncating=____, maxlen=____)
if onehot:
# Convert the word IDs to onehot vectors
preproc_text = ____(____, num_classes=____)
return preproc_text
sentence = 'she likes grapefruit , peaches , and lemons .'
# Convert a sentence to sequence by pre-padding the sentence
pad_seq = sents2seqs('source', [____], pad_type=____)