Kerasで学ぶ言語モデリングのためのRecurrent Neural Networks (RNNs)
David Cecchini
Data Scientist

# モデルを作成 model = Sequential()# 入力言語の埋め込み層 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))
# エンコーダ直後 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)# シーケンスをパディング 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)# シーケンスをパディング Y = pad_sequences(Y, maxlen=length, padding='post')
# 一時変数を作成 ylist = list()# 数値インデックス列をループ for sequence in Y:# 各インデックスをワンホット化 encoded = to_categorical(sequence, num_classes=vocab_size)# ワンホットをリストに追加 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_scoreKerasで学ぶ言語モデリングのためのRecurrent Neural Networks (RNNs)