ComeçarComece de graça

Gerando traduções

Agora você vai gerar traduções em francês usando um modelo de inferência treinado com o Teacher Forcing.

Esse modelo (nmt_tf) foi treinado por 50 épocas em 100.000 frases, alcançando cerca de 98% de precisão em um conjunto de validação com mais de 35.000 frases. Esse exercício pode demorar mais pra começar, porque o modelo treinado precisa ser carregado. Você tem a função “ sents2seqs() ”. Você também ganhou duas novas funções:

word2onehot(tokenizer, word, vocab_size) que aceita:

  • tokenizer - Um objeto Keras Tokenizer

  • palavra - Uma sequência de caracteres que representa uma palavra do vocabulário (por exemplo, “ 'apple' ”)

  • vocab_size - Tamanho do vocabulário

probs2word(probs, tok) que aceita:

  • probs - Uma saída do modelo da forma [1,<French Vocab Size>]

  • tok - Um objeto Keras ( Tokenizer )

Você pode dar uma olhada no código-fonte dessas funções digitando print(inspect.getsource(word2onehot)) e print(inspect.getsource(probs2word)) no console.

Este exercício faz parte do curso

Tradução automática com Keras

Ver curso

Instruções do exercício

  • Preveja o estado inicial do decodificador (de_s_t) com o codificador.
  • Preveja a saída e o novo estado do decodificador usando a previsão anterior (saída) e o estado anterior como entradas. Lembre-se de gerar recursivamente o novo estado.
  • Pega a sequência de palavras da saída de probabilidade usando a função “ probs2word() ”.
  • Converta a sequência de palavras em uma sequência one-hot usando a função “ word2onehot() ”.

Exercício interativo prático

Experimente este exercício completando este código de exemplo.

en_sent = ['the united states is sometimes chilly during december , but it is sometimes freezing in june .']
print('English: {}'.format(en_sent))
en_seq = sents2seqs('source', en_sent, onehot=True, reverse=True)
# Predict the initial decoder state with the encoder
de_s_t = ____.predict(____)
de_seq = word2onehot(fr_tok, 'sos', fr_vocab)
fr_sent = ''
for i in range(fr_len):    
  # Predict from the decoder and recursively assign the new state to de_s_t
  de_prob, ____ = ____.predict([____,____])
  # Get the word from the probability output using probs2word
  de_w = probs2word(____, fr_tok)
  # Convert the word to a onehot sequence using word2onehot
  de_seq = word2onehot(fr_tok, ____, fr_vocab)
  if de_w == 'eos': break
  fr_sent += de_w + ' '
print("French (Ours): {}".format(fr_sent))
print("French (Google Translate): les etats-unis sont parfois froids en décembre, mais parfois gelés en juin")
Editar e executar o código