BaşlayınÜcretsiz Başlayın

Çeviri üretme

Şimdi Teacher Forcing kullanılarak eğitilmiş bir çıkarım (inference) modeliyle Fransızca çeviriler üreteceksin.

Bu model (nmt_tf), 100.000 cümle üzerinde 50 epoch eğitildi ve 35.000+ doğrulama kümesinde yaklaşık %98 doğruluk elde etti. Eğitilmiş model yüklenmesi gerektiğinden bu egzersizin başlatılması biraz daha uzun sürebilir. Sana sents2seqs() fonksiyonu verildi. Ayrıca iki yeni fonksiyon daha sağlandı:

word2onehot(tokenizer, word, vocab_size) şu parametreleri alır:

  • tokenizer - Bir Keras Tokenizer nesnesi
  • word - Sözlükteki bir kelimeyi temsil eden bir string (ör. 'apple')
  • vocab_size - Sözlük boyutu

probs2word(probs, tok) şu parametreleri alır:

  • probs - Modelden gelen [1,<French Vocab Size>] şeklindeki çıktı
  • tok - Bir Keras Tokenizer nesnesi

Bu fonksiyonların kaynak koduna, konsola print(inspect.getsource(word2onehot)) ve print(inspect.getsource(probs2word)) yazarak göz atabilirsin.

Bu egzersiz

Keras ile Machine Translation

kursunun bir parçasıdır
Kursu Görüntüle

Egzersiz talimatları

  • Encoder ile ilk decoder durumunu (de_s_t) tahmin et.
  • Decoder'dan, önceki tahmini (çıktı) ve önceki durumu girdi olarak kullanarak hem çıktıyı hem de yeni durumu tahmin et. Yeni durumu özyinelemeli (recursive) şekilde üretmeyi unutma.
  • Olasılık çıktısından probs2word() fonksiyonunu kullanarak kelime string'ini al.
  • word2onehot() fonksiyonunu kullanarak kelime string'ini one-hot dizisine dönüştür.

Uygulamalı interaktif egzersiz

Bu örnek kodu tamamlayarak bu egzersizi bitirin.

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")
Kodu Düzenle ve Çalıştır