Zacznij terazZacznij za darmo

Odwracanie zdań

W tym ćwiczeniu dowiesz się, jak odwracać zdania na potrzeby modelu enkodera. Jak już wspomniano, odwracanie zdań źródłowych pomaga w zbudowaniu silnego połączenia początkowego między enkoderem a dekoderem, co przekłada się na lepszą wydajność modelu. Pamiętaj jednak, że korzyść z tego zabiegu zależy od pary języków, między którymi dokonujesz tłumaczenia – działa najlepiej wtedy, gdy oba języki mają taki sam szyk podmiotu, orzeczenia i dopełnienia.

W tym ćwiczeniu zmodyfikujesz funkcję sents2seqs() tak, aby w razie potrzeby mogła odwracać zdania. Użytkownik będzie mógł określić logiczny argument słownikowy reverse, który steruje odwracaniem tekstu.

To ćwiczenie jest częścią kursu

Tłumaczenie maszynowe z Keras

Zobacz kurs

Instrukcje do ćwiczenia

  • Napisz sygnaturę funkcji sents2seqs(), dodając nowy argument słownikowy reverse z wartością domyślną False.
  • Odwróć zwracane identyfikatory sekwencji wzdłuż wymiaru czasowego (używając składni ::-1), tak aby identyfikator pierwszego słowa znalazł się na ostatnim miejscu.
  • Wywołaj funkcję sents2seqs(), odwracając podane zdania sentences, zachowując wszystkie pozostałe domyślne wartości parametrów bez zmian.

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

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))
Edytuj i uruchom kod