Recurrent Neural Networks (RNNs) для моделювання мови з Keras
David Cecchini
Data Scientist

# Створіть модель model = Sequential()# Шар Embedding для вхідної мови model.add(Embedding(input_language_size, input_wordvec_dim, input_length=input_language_len, mask_zero=True))# Додайте шар LSTM model.add(LSTM(128))# Повторіть останній вектор model.add(RepeatVector(output_language_len))
# Одразу після encoder'а model.add(LSTM(128, return_sequences=True))# Додайте TimeDistributed model.add(TimeDistributed(Dense(eng_vocab_size, activation='softmax')))

# Імпортуйте модулі
from tensorflow.keras.preprocessing.text import Tokenizer
from tensorflow.keras.preprocessing.sequence import pad_sequences
# Використайте клас Tokenizer tokenizer = Tokenizer() tokenizer.fit_on_texts(input_texts_list)# Текст у послідовність числових індексів X = tokenizer.texts_to_sequences(input_texts_list)# Доповніть послідовності (pad) X = pad_sequences(X, maxlen=length, padding='post')
# Використайте клас Tokenizer tokenizer = Tokenizer() tokenizer.fit_on_texts(output_texts_list)# Текст у послідовність числових індексів Y = tokenizer.texts_to_sequences(output_texts_list)# Доповніть послідовності (pad) Y = pad_sequences(Y, maxlen=length, padding='post')
# Створіть тимчасову змінну ylist = list()# Пройдіться циклом по послідовностях індексів for sequence in Y:# One-hot кодуйте кожен індекс у поточному реченні encoded = to_categorical(sequence, num_classes=vocab_size)# Додайте one-hot кодування до списку ylist.append(encoded)# Перетворіть на np.array і змініть форму Y = np.array(ylist).reshape(Y.shape[0], Y.shape[1], vocab_size)
Навчання моделі:
model.fit(X, Y, epochs=N)
Оцінювання:
nltk.translate.bleu_scoreRecurrent Neural Networks (RNNs) для моделювання мови з Keras