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
sentences
em sequências usando o tokenizadoren_tok
. - Pad as sequências para um comprimento fixo de
en_len
com um tipo de preenchimento especificado depad_type
e usapost
-truncating. - Converta os IDs de palavras “
preproc_text
” em vetores onehot de comprimentoen_vocab
usando 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=____)