テキスト生成関数

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

David Cecchini

Data Scientist

文の生成

  • 文は句読点で区切られます。例: .(ピリオド)、!(感嘆符)、?(疑問符)。

    • 句読点は語彙に含める必要があります。
  • 文トークン(例: <SENT></SENT>)で開始と終了を示します。

    • ラベルを挿入する前処理が必要です。
Kerasで学ぶ言語モデリングのためのRecurrent Neural Networks (RNNs)

文の生成

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
Kerasで学ぶ言語モデリングのためのRecurrent Neural Networks (RNNs)

確率のスケーリング

確率分布をスケーリングします。

  • 太字: 物理からの名称
    • 小さい値: 予測がより確信的に
    • 1 のとき: スケーリングなし
    • 大きい値: 予測がより創造的に
    • ハイパーパラメータ: 目的に合わせて値を試す
Kerasで学ぶ言語モデリングのためのRecurrent Neural Networks (RNNs)

確率のスケーリング

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)

練習しましょう!

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

Preparing Video For Download...