CommencezCommencez gratuitement

Inverser des phrases

Ici, vous allez apprendre à inverser des phrases pour le modèle d'encodeur. Comme nous l'avons vu, inverser les phrases sources aide à créer un lien initial solide entre l'encodeur et le décodeur, ce qui améliore la performance du modèle. Toutefois, gardez toujours en tête que l'avantage dépend des deux langues entre lesquelles vous traduisez. Tant qu'elles ont le même ordre sujet, verbe et complément, le modèle en tirera profit.

Dans cet exercice, vous allez modifier la fonction sents2seqs() pour qu'elle puisse inverser les phrases au besoin. L'utilisateur peut préciser un argument mot-clé booléen reverse qui effectue l'inversion du texte.

Cette activité fait partie du cours

Traduction automatique avec Keras

Voir le cours

Instructions de l’exercice

  • Écrivez l'en-tête de la fonction sents2seqs() en ajoutant un nouvel argument mot-clé reverse dont la valeur par défaut est False.
  • Inversez les identifiants de séquence renvoyés sur la dimension temporelle (en utilisant la syntaxe ::-1), de sorte que l'identifiant du premier mot devienne le dernier.
  • Appelez sents2seqs() et inversez les sentences fournies en gardant inchangées toutes les autres valeurs des paramètres par défaut.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

sentences = ["california is never rainy during july ."]
# Add new keyword parameter reverse which defaults to False
def ____(input_type, sentences, onehot=False, pad_type='post', ____=____):     
    encoded_text = en_tok.texts_to_sequences(sentences)
    preproc_text = pad_sequences(encoded_text, padding=pad_type, truncating='post', maxlen=en_len)
    if reverse:
      # Reverse the text using numpy axis reversing
      preproc_text = preproc_text[:, ____]
    if onehot:
        preproc_text = to_categorical(preproc_text, num_classes=en_vocab)
    return preproc_text
# Call sents2seqs to get the padded and reversed sequence of IDs
pad_seq = ____('source', ____, ____=____)
rev_sent = [en_tok.index_word[wid] for wid in pad_seq[0][-6:]] 
print('\tReversed: ',' '.join(rev_sent))
Modifier et exécuter le code