Розвертання речень
Тут ви навчитеся розвертати речення для моделі кодувальника. Як ми обговорювали, розвертання вихідних речень допомагає встановити сильний початковий зв'язок між кодувальником і декодувальником, що підвищує продуктивність моделі. Однак пам'ятайте, що користь залежить від пари мов, між якими ви перекладаєте. Якщо в обох мовах однаковий порядок підмета, присудка та додатка, це буде корисно для моделі.
У цій вправі ви зміните функцію sents2seqs(), щоб за потреби вона могла розвертати речення. Користувач може вказати булівську іменовану змінну reverse, яка вмикає розворот тексту.
Ця вправа є частиною курсу
Machine Translation з Keras
Інструкції до вправи
- Запишіть сигнатуру функції
sents2seqs(), додавши новий іменований аргументreverse, який типово дорівнюєFalse. - Розверніть повернуті ідентифікатори послідовності вздовж виміру часу (за допомогою синтаксису
::-1), щоб перший ID слова став останнім. - Викличте
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))