Obrácení pořadí vět
V tomto cvičení se naučíš, jak obrátit pořadí vět pro model enkodéru. Jak jsme si řekli, obrácení zdrojových vět pomáhá vytvořit silné počáteční propojení mezi enkodérem a dekodérem, což zlepšuje výkon modelu. Pamatuj ale, že přínos závisí na dvojici jazyků, mezi kterými překládáš. Pokud mají stejné pořadí podmět, sloveso a předmět, model z toho těží.
V tomto cvičení upravíš funkci sents2seqs() tak, aby uměla věty podle potřeby obrátit. Uživatel může zadat logický argument reverse, který určuje, zda se má text obrátit.
Toto cvičení je součástí kurzu
Machine Translation with Keras
Pokyny k cvičení
- Doplň signaturu funkce
sents2seqs()o nový keyword argumentreverses výchozí hodnotouFalse. - Obrať vrácená ID sekvencí podél časové dimenze (pomocí syntaxe
::-1), aby se ID prvního slova dostalo na poslední místo. - Zavolej
sents2seqs(), obrať zadané větysentencesa ponech všechny ostatní parametry s jejich výchozími hodnotami.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
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))