Menghasilkan terjemahan dari model

Penerjemahan Mesin dengan Keras

Thushan Ganegedara

Data Scientist and Author

Model lama vs model baru

Encoder decoder repeat vector

Encoder decoder input mana

Penerjemahan Mesin dengan Keras

Model terlatih

Model terlatih Teacher Forcing

Penerjemahan Mesin dengan Keras

Decoder pada model inferensi

  • Masukan

    • Satu kata one-hot
    • State input (state dari timestep sebelumnya)
  • Keluaran

    • State baru
    • Prediksi (yaitu sebuah kata)
  • Umpankan kembali kata yang diprediksi dan state ke model secara rekursif

Penerjemahan Mesin dengan Keras

Model inferensi lengkap

  • Model inferensi dengan decoder rekursif

Encoder decoder rekursif

  • Model inferensi dari bab sebelumnya Encoder decoder sebelumnya
Penerjemahan Mesin dengan Keras

Nilai token sos dan eos

  • sos menandai awal terjemahan (mis. kalimat Prancis).

    • Masukkan sos sebagai kata pertama ke decoder dan terus prediksi
  • eos menandai akhir terjemahan.

    • Prediksi berhenti saat model memprediksi kata eos
  • Sebagai langkah aman, batasi panjang maksimum yang dapat diprediksi model

Penerjemahan Mesin dengan Keras

Mendefinisikan encoder generator

  • Mengimpor layers dan Model

    # Import Keras layers
    import tensorflow.keras.layers as layers
    from tensorflow.keras.models import Model
    
  • Mendefinisikan layer model

    en_inputs = layers.Input(shape=(en_len,en_vocab))
    en_gru = layers.GRU(hsize, return_state=True)
    en_out, en_state = en_gru(en_inputs)
    
  • Mendefinisikan objek Model

    encoder = Model(inputs=en_inputs, outputs=en_state)
    
Penerjemahan Mesin dengan Keras

Mendefinisikan decoder generator

  • Mendefinisikan layer Input decoder
de_inputs = layers.Input(shape=(1, fr_vocab))
de_state_in = layers.Input(shape=(hsize,))
  • Mendefinisikan layers antara decoder
de_gru = layers.GRU(hsize, return_state=True)
de_out, de_state_out = de_gru(de_inputs, initial_state=de_state_in)

de_dense = layers.Dense(fr_vocab, activation='softmax') de_pred = de_dense(de_out)
  • Mendefinisikan Model decoder
decoder = Model(inputs=[de_inputs, de_state_in], outputs=[de_pred, de_state_out])
Penerjemahan Mesin dengan Keras

Menyalin bobot

  • Ambil bobot layer l1
    • w = l1.get_weights()
  • Setel bobot layer l2 dengan w
    • l2.set_weights(w)
  • Pada model kita, ada tiga layer dengan bobot
    • Encoder GRU, Decoder GRU, dan Decoder Dense
en_gru_w = tr_en_gru.get_weights()
en_gru.set_weights(en_gru_w)

Atau dapat ditulis sebagai:

en_gru.set_weights(tr_en_gru.get_weights())
Penerjemahan Mesin dengan Keras

Menghasilkan terjemahan

en_sent = ['the united states is sometimes chilly during 
           december , but it is sometimes freezing in june .']
  • Mengonversi kalimat Inggris ke urutan
en_seq = sents2seqs('source', en_st, onehot=True, reverse=True)
  • Mendapatkan vektor konteks
de_s_t = encoder.predict(en_seq)
  • Mengonversi "sos" (kata awal untuk decoder) ke urutan
de_seq = word2onehot(fr_tok, 'sos', fr_vocab)
Penerjemahan Mesin dengan Keras

Menghasilkan terjemahan

fr_sent = ''

for _ in range(fr_len): de_prob, de_s_t = decoder.predict([de_seq,de_s_t])
de_w = probs2word(de_prob, fr_tok)
de_seq = word2onehot(fr_tok, de_w, fr_vocab)
if de_w == 'eos': break fr_sent += de_w + ' '
Penerjemahan Mesin dengan Keras

Saatnya menerjemahkan!

Penerjemahan Mesin dengan Keras

Preparing Video For Download...