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
Instructions de l’exercice
- Écrivez l'en-tête de la fonction
sents2seqs()en ajoutant un nouvel argument mot-cléreversedont la valeur par défaut estFalse. - 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 lessentencesfournies 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))