Aan de slagGa gratis aan de slag

Zinnen omkeren

Hier leer je hoe je zinnen omkeert voor het encoder‑model. Zoals besproken helpt het omkeren van bronzinnen om een sterke eerste koppeling te leggen tussen de encoder en de decoder, wat de prestaties van het model verbetert. Bedenk wel dat dit voordeel afhangt van de twee talen waar je tussen vertaalt. Zolang ze dezelfde volgorde van onderwerp, werkwoord en lijdend voorwerp hebben, is dit gunstig voor het model.

In deze oefening pas je de functie sents2seqs() aan zodat zinnen indien nodig kunnen worden omgekeerd. De gebruiker kan een booleaanse keyword-argument reverse opgeven dat de tekst omkeert.

Deze oefening maakt deel uit van de cursus

Machine Translation met Keras

Cursus bekijken

Oefeninstructies

  • Schrijf de functiedefinitie van sents2seqs() door een nieuw keyword-argument reverse toe te voegen dat standaard op False staat.
  • Keer de geretourneerde sequentie-ID’s om over de tijdsdimensie (met ::-1-syntaxis), zodat de eerste woord-ID de laatste wordt.
  • Roep sents2seqs() aan en keer de meegegeven sentences om, en laat alle andere standaardparameterwaarden ongewijzigd.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

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))
Code bewerken en uitvoeren