Функция генерации текста

Рекуррентные нейронные сети (RNN) для языкового моделирования с Keras

David Cecchini

Data Scientist

Генерация предложений

  • Предложение определяется знаками препинания: . (точка), ! (восклицательный) или ? (вопросительный).

    • Знаки препинания должны входить в словарь.
  • Используется токен предложения, например <SENT> и </SENT>, обозначающий его начало и конец.

    • Данные нужно предварительно обработать, чтобы вставить эти метки.
Рекуррентные нейронные сети (RNN) для языкового моделирования с Keras

Генерация предложений

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
Рекуррентные нейронные сети (RNN) для языкового моделирования с Keras

Масштабирование вероятностей

Масштабирование распределения вероятностей.

  • Температура: термин из физики
    • Малые значения: повышают уверенность предсказания
    • Значение равно единице: масштабирование не применяется
    • Большие значения: делают предсказание более творческим
    • Гиперпараметр: подбирайте разные значения под свои задачи
Рекуррентные нейронные сети (RNN) для языкового моделирования с Keras

Масштабирование вероятностей

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)
Рекуррентные нейронные сети (RNN) для языкового моделирования с Keras

Давайте потренируемся!

Рекуррентные нейронные сети (RNN) для языкового моделирования с Keras

Preparing Video For Download...