Mạng nơ-ron hồi quy (RNN) cho Mô hình ngôn ngữ với Keras
David Cecchini
Data Scientist

# Khởi tạo mô hình model = Sequential()# Lớp Embedding cho ngôn ngữ đầu vào model.add(Embedding(input_language_size, input_wordvec_dim, input_length=input_language_len, mask_zero=True))# Thêm lớp LSTM model.add(LSTM(128))# Lặp lại vector cuối model.add(RepeatVector(output_language_len))
# Ngay sau encoder model.add(LSTM(128, return_sequences=True))# Thêm TimeDistributed model.add(TimeDistributed(Dense(eng_vocab_size, activation='softmax')))

# Nhập mô-đun
from tensorflow.keras.preprocessing.text import Tokenizer
from tensorflow.keras.preprocessing.sequence import pad_sequences
# Sử dụng lớp Tokenizer tokenizer = Tokenizer() tokenizer.fit_on_texts(input_texts_list)# Văn bản thành chuỗi chỉ số X = tokenizer.texts_to_sequences(input_texts_list)# Đệm chuỗi X = pad_sequences(X, maxlen=length, padding='post')
# Sử dụng lớp Tokenizer tokenizer = Tokenizer() tokenizer.fit_on_texts(output_texts_list)# Văn bản thành chuỗi chỉ số Y = tokenizer.texts_to_sequences(output_texts_list)# Đệm chuỗi Y = pad_sequences(Y, maxlen=length, padding='post')
# Tạo biến tạm ylist = list()# Lặp qua chuỗi chỉ số for sequence in Y:# One-hot cho từng chỉ số trong câu hiện tại encoded = to_categorical(sequence, num_classes=vocab_size)# Thêm giá trị one-hot vào danh sách ylist.append(encoded)# Đổi sang np.array và reshape Y = np.array(ylist).reshape(Y.shape[0], Y.shape[1], vocab_size)
Huấn luyện mô hình:
model.fit(X, Y, epochs=N)
Đánh giá:
nltk.translate.bleu_scoreMạng nơ-ron hồi quy (RNN) cho Mô hình ngôn ngữ với Keras