文本生成函数

使用 Keras 构建语言建模的循环神经网络(RNN)

David Cecchini

Data Scientist

生成句子

  • 句子由标点决定,如 .(句号)、!(感叹号)、?(问号)。

    • 标点需包含在词表中。
  • 使用句子标记(如 <SENT></SENT>)指示句子起止。

    • 需预处理数据以插入这些标签。
使用 Keras 构建语言建模的循环神经网络(RNN)

生成句子

sentence = ''

# Loop until end of sentence while next_char != '.':
# Predict next char: Get pred array in position 0 pred = model.predict(X)[0]
char_index = np.argmax(pred)
next_char = index_to_char(char_index)
# Concatenate to sentence sentence = sentence + next_char
使用 Keras 构建语言建模的循环神经网络(RNN)

概率缩放

对概率分布进行缩放。

  • 温度(Temperature):名称源自物理学
    • 较小取值:预测更保守
    • 等于 1:不缩放
    • 较大取值:预测更有创造性
    • 超参数:可调参以匹配需求
使用 Keras 构建语言建模的循环神经网络(RNN)

概率缩放

def scale_softmax(softmax_pred, temperature=1.0):
    # Take the logarithm
    scaled_pred = np.log(softmax_pred) / temperature

# Re-apply the exponential scaled_pred = np.exp(scaled_pred)
# Build probability distribution scaled_pred = scaled_pred / np.sum(scaled_pred)
# Simulate multinomial scaled_pred = np.random.multinomial(1, scaled_pred, 1)
# Return simulated class return np.argmax(scaled_pred)
使用 Keras 构建语言建模的循环神经网络(RNN)

让我们来练习!

使用 Keras 构建语言建模的循环神经网络(RNN)

Preparing Video For Download...