Nöral Makine Çevirisi

Keras ile Dil Modellemesi için Yinelenen Sinir Ağları (RNN)

David Cecchini

Data Scientist

Kodlayıcı ve kod çözücüler

Nöral Makine Çevirisi mimarisi. Bu mimari, sırasıyla giriş ve çıkış dili için bir kodlayıcı ve kod çözücü olarak ikiye ayrılır. Kodlayıcı, giriş dili için bir dil modeli öğrenir; kod çözücü, çıkış dili için bir dil modeli öğrenir. Kodlayıcının son durumu, başka bir girdisi olmayan kod çözücüye aktarılır.

Keras ile Dil Modellemesi için Yinelenen Sinir Ağları (RNN)

Kodlayıcı örneği

# Instantiate the model
model = Sequential()

# Embeding layer for input language model.add(Embedding(input_language_size, input_wordvec_dim, input_length=input_language_len, mask_zero=True))
# Add LSTM layer model.add(LSTM(128))
# Repeat the last vector model.add(RepeatVector(output_language_len))
Keras ile Dil Modellemesi için Yinelenen Sinir Ağları (RNN)

Kod çözücü örneği

# Right after the encoder
model.add(LSTM(128, return_sequences=True))

# Add Time Distributed model.add(TimeDistributed(Dense(eng_vocab_size, activation='softmax')))
Keras ile Dil Modellemesi için Yinelenen Sinir Ağları (RNN)

Veri hazırlığı

Kodlayıcı ve kod çözücü metin hazırlığı. Kodlayıcıda giriş dilini sayısal indeks dizisine dönüştürürüz; kod çözücüde çıkış dili için aynısını yapar, ayrıca her indeksi one-hot olarak kodlarız.

Keras ile Dil Modellemesi için Yinelenen Sinir Ağları (RNN)

Giriş dili için veri hazırlığı

# Import modules
from tensorflow.keras.preprocessing.text import Tokenizer
from tensorflow.keras.preprocessing.sequence import pad_sequences
# Use the Tokenizer class
tokenizer = Tokenizer()
tokenizer.fit_on_texts(input_texts_list)

# Text to sequence of numerical indexes X = tokenizer.texts_to_sequences(input_texts_list)
# Pad sequences X = pad_sequences(X, maxlen=length, padding='post')
Keras ile Dil Modellemesi için Yinelenen Sinir Ağları (RNN)

Çıktı dilini tokenleştirme

# Use the Tokenizer class
tokenizer = Tokenizer()
tokenizer.fit_on_texts(output_texts_list)

# Text to sequence of numerical indexes Y = tokenizer.texts_to_sequences(output_texts_list)
# Pad sequences Y = pad_sequences(Y, maxlen=length, padding='post')
Keras ile Dil Modellemesi için Yinelenen Sinir Ağları (RNN)

Çıktı dilini one-hot kodlama

# Instantiate a temporary variable
ylist = list()

# Loop over the sequence of numerical indexes for sequence in Y:
# One=hot encode each index on current sentence encoded = to_categorical(sequence, num_classes=vocab_size)
# Append one-hot encoded values to the list ylist.append(encoded)
# Transform to np.array and reshape Y = np.array(ylist).reshape(Y.shape[0], Y.shape[1], vocab_size)
Keras ile Dil Modellemesi için Yinelenen Sinir Ağları (RNN)

Eğitim ve değerlendirme notu

Modeli eğitme:

model.fit(X, Y, epochs=N)

Değerlendirme:

  • BLEU kullanın
    • nltk.translate.bleu_score
Keras ile Dil Modellemesi için Yinelenen Sinir Ağları (RNN)

Hadi pratik yapalım!

Keras ile Dil Modellemesi için Yinelenen Sinir Ağları (RNN)

Preparing Video For Download...