Encher frases
Agora você vai implementar uma função chamada “ sents2seqs() ”, que você vai usar mais tarde para transformar dados de um jeito prático para o formato aceito pelo modelo de tradução automática neural (NMT). “ sents2seqs() ” aceita uma lista de strings de frases e,
- Converte as frases em uma lista de sequências de IDs,
- Preencha as frases para que elas tenham o mesmo tamanho e,
- Se quiser, dá pra converter os IDs em vetores onehot.
Você recebeu um modelo pré-treinado chamado en_tok, um modelo de rede neural convolucional ( Tokenizer ) que já foi treinado com dados. Outra coisa a se notar é que, ao implementar uma funçã sents2seqs(), você verá um argumento não utilizado chamado input_type. Depois, esse input_type vai ser usado pra mudar os parâmetros que dependem do idioma, tipo o tamanho da sequência e do vocabulário.
Este exercício faz parte do curso
Tradução automática com Keras
Instruções do exercício
- Converta o
sentencesem sequências usando o tokenizadoren_tok. - Pad as sequências para um comprimento fixo de
en_lencom um tipo de preenchimento especificado depad_typee usapost-truncating. - Converta os IDs de palavras “
preproc_text” em vetores onehot de comprimentoen_vocabusando a função “to_categorical()”. - Converte um objeto de lista (
sentence) em uma sequência preenchida usando o método "sents2seqs()" com o parâmetro "pre-padding".
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
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=____)