ComeçarComece de graça

Aplicando padding às sentenças

Agora você vai implementar uma função chamada sents2seqs() que será usada depois para transformar os dados no formato aceito pelo modelo de tradução automática neural (NMT). sents2seqs() recebe uma lista de strings de sentenças e,

  • Converte as sentenças em uma lista de sequências de IDs,
  • Aplica padding nas sentenças para que todas tenham o mesmo comprimento e,
  • Opcionalmente converte os IDs em vetores one-hot.

Foi fornecido o en_tok, um Tokenizer já treinado nos dados. Outra coisa importante: ao implementar a função sents2seqs(), você verá um argumento não utilizado chamado input_type. Depois, esse input_type será usado para alterar parâmetros dependentes do idioma, como o comprimento da sequência e o tamanho do vocabulário.

Este exercício faz parte do curso

Machine Translation with Keras

Ver curso

Instruções do exercício

  • Converta sentences em sequências usando o Tokenizer en_tok.
  • Faça o padding das sequências para um comprimento fixo en_len com o tipo de preenchimento definido por pad_type e use truncamento post.
  • Converta os IDs de palavras em preproc_text para vetores one-hot de comprimento en_vocab usando a função to_categorical().
  • Converta sentence em uma sequência com padding usando o método sents2seqs() com padding pre.

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=____)
Editar e executar o código