Kom igångKom igång gratis

Vända meningar

Här lär du dig hur man vänder meningar för encodermodellen. Som diskuterats hjälper det att vända källmeningarna till att skapa en stark initial koppling mellan encoder och decoder, vilket förbättrar modellens prestanda. Kom dock alltid ihåg att nyttan beror på de två språk du översätter mellan. Så länge de har samma ordning för subjekt, verb och objekt gynnar det modellen.

I den här övningen modifierar du funktionen sents2seqs() så att den kan vända meningar vid behov. Användaren kan ange ett booleskt nyckelordsargument reverse som styr om texten ska vändas.

Den här övningen är en del av kursen

Maskinöversättning med Keras

Visa kurs

Övningsinstruktioner

  • Skriv funktionssignaturen för sents2seqs() genom att lägga till ett nytt nyckelordsargument reverse som har standardvärdet False.
  • Vänd de returnerade sekvens-ID:na längs tidsdimensionen (med syntaxen ::-1) så att det första ord-ID:t hamnar sist.
  • Anropa sents2seqs(), vänd de givna sentences och behåll alla övriga standardparametrar oförändrade.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

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))
Redigera och kör kod