ComenzarEmpieza gratis

Generar traducciones

Ahora generarás traducciones al francés utilizando un modelo de inferencia entrenado con Teacher Forcing.

Este modelo (nmt_tf) se ha entrenado durante 50 épocas con 100 000 frases, lo que ha permitido alcanzar una precisión de alrededor del 98 % en un conjunto de validación de más de 35 000 frases. Este ejercicio puede tardar más tiempo en inicializarse, ya que es necesario cargar el modelo entrenado. Se te proporciona la función « sents2seqs() ». También se te han asignado dos nuevas funciones:

word2onehot(tokenizer, word, vocab_size) que acepta:

  • tokenizer: un objeto Keras Tokenizer.

  • word: cadena que representa una palabra del vocabulario (por ejemplo, « 'apple' »).

  • vocab_size - Tamaño del vocabulario

probs2word(probs, tok) que acepta:

  • probs: salida del modelo de la forma. [1,<French Vocab Size>]

  • tok: un objeto Keras de « Tokenizer » (entrega de resultados).

Puedes echar un vistazo al código fuente de estas funciones escribiendo « print(inspect.getsource(word2onehot)) » y « print(inspect.getsource(probs2word)) » en la consola.

Este ejercicio forma parte del curso

Traducción automática con Keras

Ver curso

Instrucciones del ejercicio

  • Predice el estado inicial del decodificador (de_s_t) con el codificador.
  • Predice la salida y el nuevo estado del decodificador utilizando la predicción anterior (salida) y el estado anterior como entradas. Recuerda generar recursivamente el nuevo estado.
  • Obtén la cadena de palabras a partir de la salida de probabilidad utilizando la función probs2word().
  • Convierte la cadena de palabras en una secuencia one-hot utilizando la función « word2onehot() ».

Ejercicio interactivo práctico

Prueba este ejercicio completando el código de muestra.

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 y ejecutar código