Inversarea propozițiilor
În acest exercițiu vei învăța cum să inversezi propoziții pentru modelul encoder. Așa cum s-a discutat, inversarea propozițiilor sursă ajută la formarea unei conexiuni inițiale puternice între encoder și decoder, ceea ce îmbunătățește performanța modelului. Totuși, reține că beneficiul depinde de cele două limbi între care faci traducerea. Atâta timp cât au aceeași ordine a subiectului, verbului și obiectului, modelul va beneficia de pe urma acestei tehnici.
În acest exercițiu vei modifica funcția sents2seqs() pentru a putea inversa propozițiile, dacă este necesar. Utilizatorul poate specifica un argument de tip boolean reverse, care activează inversarea textului.
Acest exercițiu face parte din cursul
Traducere automată cu Keras
Instrucțiuni pentru exercițiu
- Scrie semnătura funcției
sents2seqs()adăugând un nou argument de tip keywordreverse, cu valoarea implicităFalse. - Inversează ID-urile secvenței returnate pe dimensiunea temporală (folosind sintaxa
::-1), astfel încât primul ID de cuvânt să devină ultimul. - Apelează
sents2seqs(), inversează propozițiile (sentences) date și păstrează nemodificate toate celelalte valori implicite ale parametrilor.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
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))