Penerjemahan Mesin dengan Keras
Thushan Ganegedara
Data Scientist and Author



Masukan
Keluaran
Umpankan kembali kata yang diprediksi dan state ke model secara rekursif



sos menandai awal terjemahan (mis. kalimat Prancis).
sos sebagai kata pertama ke decoder dan terus prediksieos menandai akhir terjemahan.
eosSebagai langkah aman, batasi panjang maksimum yang dapat diprediksi model
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)
Input decoderde_inputs = layers.Input(shape=(1, fr_vocab))
de_state_in = layers.Input(shape=(hsize,))
layers antara decoderde_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)
Model decoderdecoder = Model(inputs=[de_inputs, de_state_in], outputs=[de_pred, de_state_out])
l1w = l1.get_weights()l2 dengan wl2.set_weights(w)GRU, Decoder GRU, dan Decoder Denseen_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())
en_sent = ['the united states is sometimes chilly during
december , but it is sometimes freezing in june .']
en_seq = sents2seqs('source', en_st, onehot=True, reverse=True)
de_s_t = encoder.predict(en_seq)
de_seq = word2onehot(fr_tok, 'sos', fr_vocab)
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