НачатьНачать бесплатно

Дополнение предложений

Сейчас вы реализуете функцию sents2seqs(), которую позже будете использовать для удобного преобразования данных в формат, принимаемый моделью нейронного машинного перевода (NMT). Функция sents2seqs() принимает список строк-предложений и:

  • преобразует предложения в список последовательностей идентификаторов,
  • дополняет предложения до одинаковой длины,
  • при необходимости конвертирует идентификаторы в векторы с унитарным кодированием (onehot).

Вам предоставлен объект en_tok — токенизатор Tokenizer, уже обученный на данных. Обратите внимание: при реализации функции sents2seqs() вы увидите неиспользуемый аргумент input_type. В дальнейшем он будет применяться для изменения языковых параметров, таких как длина последовательности и размер словаря.

Это упражнение является частью курса

Машинный перевод с Keras

Посмотреть курс

Инструкции к упражнению

  • Преобразуйте sentences в последовательности с помощью токенизатора en_tok.
  • Дополните последовательности до фиксированной длины en_len, указав тип дополнения pad_type и используя усечение типа post.
  • Преобразуйте идентификаторы слов из preproc_text в векторы с унитарным кодированием длиной 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=____)
Редактировать и запускать код