ÎncepețiÎncepe gratuit

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

Vezi cursul

Instrucțiuni pentru exercițiu

  • Scrie semnătura funcției sents2seqs() adăugând un nou argument de tip keyword reverse, 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))
Editează și rulează codul