Разворот предложений
В этом упражнении вы узнаете, как разворачивать предложения для модели кодировщика. Как уже обсуждалось, разворот исходных предложений помогает установить прочную начальную связь между кодировщиком и декодировщиком, что повышает качество модели. Однако важно помнить, что эффект зависит от конкретной пары языков, между которыми выполняется перевод: разворот приносит пользу тогда, когда в обоих языках порядок подлежащего, сказуемого и дополнения совпадает.
В этом упражнении вам нужно доработать функцию sents2seqs() так, чтобы она могла при необходимости разворачивать предложения. Пользователь может передать булев именованный аргумент reverse, управляющий этим поведением.
Это упражнение является частью курса
Машинный перевод с Keras
Инструкции к упражнению
- Добавьте в сигнатуру функции
sents2seqs()новый именованный аргументreverseсо значением по умолчаниюFalse. - Разверните возвращаемые идентификаторы последовательности по временно́му измерению (используя синтаксис
::-1), чтобы идентификатор первого слова стал последним. - Вызовите
sents2seqs(), передав ей заданныеsentencesс включённым разворотом, оставив все остальные параметры по умолчанию без изменений.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
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))