CommencezCommencez gratuitement

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

Voir le cours

Instructions de l’exercice

  • Convertissez sentences en séquences à l'aide du Tokenizer en_tok.
  • Remplissez les séquences à une longueur fixe en_len avec le type de remplissage pad_type et une troncature post.
  • Convertissez les ID de mots de preproc_text en vecteurs onehot de longueur en_vocab en utilisant la fonction to_categorical().
  • Convertissez sentence en une séquence rembourrée en utilisant la méthode sents2seqs() avec un remplissage pre.

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=____)
Modifier et exécuter le code