Kerasで学ぶ言語モデリングのためのRecurrent Neural Networks (RNNs)
David Cecchini
Data Scientist
文は句読点で区切られます。例: .(ピリオド)、!(感嘆符)、?(疑問符)。
文トークン(例: <SENT> と </SENT>)で開始と終了を示します。
sentence = ''# 文章の終わりまでループ while next_char != '.':# 次の文字を予測: 位置0の配列を取得 pred = model.predict(X)[0]char_index = np.argmax(pred)next_char = index_to_char(char_index)# 文に連結 sentence = sentence + next_char
確率分布をスケーリングします。
def scale_softmax(softmax_pred, temperature=1.0): # 対数を取る scaled_pred = np.log(softmax_pred) / temperature# 指数を再適用 scaled_pred = np.exp(scaled_pred)# 確率分布を作成 scaled_pred = scaled_pred / np.sum(scaled_pred)# 多項分布をサンプリング scaled_pred = np.random.multinomial(1, scaled_pred, 1)# サンプルされたクラスを返す return np.argmax(scaled_pred)
Kerasで学ぶ言語モデリングのためのRecurrent Neural Networks (RNNs)