Textgenereringsfunktionen

Återkommande neurala nätverk (RNN) för språkmodellering med Keras

David Cecchini

Data Scientist

Generera meningar

  • En mening avgränsas av skiljetecken, t.ex. . (punkt), ! (utropstecken) eller ? (frågetecken).

    • Skiljetecknen måste finnas i vokabulären.
  • Det finns en meningstoken, t.ex. <SENT> och </SENT>, som markerar var en mening börjar och slutar.

    • Data måste förbearbetas för att infoga etiketterna.
Återkommande neurala nätverk (RNN) för språkmodellering med Keras

Generera meningar

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
Återkommande neurala nätverk (RNN) för språkmodellering med Keras

Sannolikhetsskalning

Skala sannolikhetsfördelningen.

  • Temperatur: namn från fysiken
    • Låga värden: gör prediktionen säkrare
    • Värde lika med ett: ingen skalning
    • Högre värden: gör prediktionen mer kreativ
    • Hyperparameter: Prova olika värden för att anpassa prediktionerna efter dina behov
Återkommande neurala nätverk (RNN) för språkmodellering med Keras

Sannolikhetsskalning

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)
Återkommande neurala nätverk (RNN) för språkmodellering med Keras

Nu kör vi en övning!

Återkommande neurala nätverk (RNN) för språkmodellering med Keras

Preparing Video For Download...