Funkcja generująca tekst

Rekurencyjne sieci neuronowe (RNN) do modelowania języka w Keras

David Cecchini

Data Scientist

Generowanie zdań

  • Zdanie wyznaczają znaki interpunkcyjne, np. . (kropka), ! (wykrzyknik) lub ? (pytajnik).

    • Znaki interpunkcyjne muszą znajdować się w słowniku.
  • Token zdania, np. <SENT> i </SENT>, wyznacza jego początek i koniec.

    • Dane wymagają wstępnego przetworzenia w celu wstawienia etykiet.
Rekurencyjne sieci neuronowe (RNN) do modelowania języka w Keras

Generowanie zdań

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
Rekurencyjne sieci neuronowe (RNN) do modelowania języka w Keras

Skalowanie prawdopodobieństwa

Skalowanie rozkładu prawdopodobieństwa.

  • Temperatura: nazwa z fizyki
    • Małe wartości: zwiększają pewność predykcji
    • Wartość równa jeden: brak skalowania
    • Wyższe wartości: zwiększają kreatywność predykcji
    • Hiperparametr: należy dobrać wartość odpowiednią do potrzeb
Rekurencyjne sieci neuronowe (RNN) do modelowania języka w Keras

Skalowanie prawdopodobieństwa

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)
Rekurencyjne sieci neuronowe (RNN) do modelowania języka w Keras

Czas na ćwiczenia!

Rekurencyjne sieci neuronowe (RNN) do modelowania języka w Keras

Preparing Video For Download...