Дополнение предложений
Сейчас вы реализуете функцию 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=____)