ПочатиПочніть безкоштовно

Доповнення речень (padding)

Тепер ви реалізуєте функцію sents2seqs(), яку згодом використаєте, щоб зручно перетворювати дані до формату, прийнятного для моделі нейронного машинного перекладу (NMT). sents2seqs() приймає список рядків-речень і

  • перетворює речення на список послідовностей ідентифікаторів (ID),
  • доповнює (pad) речення так, щоб вони мали однакову довжину, та
  • за потреби перетворює ID на one-hot вектори.

Вам надано en_tokTokenizer, уже натренований на даних. Зверніть також увагу, що під час реалізації функції sents2seqs() ви побачите невикористаний аргумент input_type. Згодом input_type буде використано, щоб змінювати мовозалежні параметри, зокрема довжину послідовності та розмір словника.

Ця вправа є частиною курсу

Machine Translation з Keras

Переглянути курс

Інструкції до вправи

  • Перетворіть sentences на послідовності за допомогою токенізатора en_tok.
  • Доповніть послідовності до фіксованої довжини en_len із заданим типом доповнення pad_type та використовуйте усічення post.
  • Перетворіть ідентифікатори слів у preproc_text на one-hot вектори довжини en_vocab за допомогою функції to_categorical().
  • Перетворіть sentence на доповнену послідовність за допомогою методу sents2seqs() із доповненням pre.

Інтерактивна практична вправа

Спробуйте виконати цю вправу, доповнивши цей зразок коду.

from tensorflow.keras.preprocessing.sequence import pad_sequences
from tensorflow.keras.utils import to_categorical

def sents2seqs(input_type, sentences, onehot=False, pad_type='post'):
	# Convert sentences to sequences      
    encoded_text = ____.____(sentences)
    # Pad sentences to en_len
    preproc_text = ____(____, padding=____, truncating=____, maxlen=____)
    if onehot:
		# Convert the word IDs to onehot vectors
        preproc_text = ____(____, num_classes=____)
    return preproc_text
sentence = 'she likes grapefruit , peaches , and lemons .'  
# Convert a sentence to sequence by pre-padding the sentence
pad_seq = sents2seqs('source', [____], pad_type=____)
Редагувати та запускати код