Reti Neurali Ricorrenti (RNN) per il Language Modeling con Keras
David Cecchini
Data Scientist

# Istanzia il modello model = Sequential()# Livello Embedding per la lingua di input model.add(Embedding(input_language_size, input_wordvec_dim, input_length=input_language_len, mask_zero=True))# Aggiungi livello LSTM model.add(LSTM(128))# Ripeti l’ultimo vettore model.add(RepeatVector(output_language_len))
# Subito dopo l’encoder model.add(LSTM(128, return_sequences=True))# Aggiungi TimeDistributed model.add(TimeDistributed(Dense(eng_vocab_size, activation='softmax')))

# Importa i moduli
from tensorflow.keras.preprocessing.text import Tokenizer
from tensorflow.keras.preprocessing.sequence import pad_sequences
# Usa la classe Tokenizer tokenizer = Tokenizer() tokenizer.fit_on_texts(input_texts_list)# Testo in sequenze di indici numerici X = tokenizer.texts_to_sequences(input_texts_list)# Padding delle sequenze X = pad_sequences(X, maxlen=length, padding='post')
# Usa la classe Tokenizer tokenizer = Tokenizer() tokenizer.fit_on_texts(output_texts_list)# Testo in sequenze di indici numerici Y = tokenizer.texts_to_sequences(output_texts_list)# Padding delle sequenze Y = pad_sequences(Y, maxlen=length, padding='post')
# Istanzia una variabile temporanea ylist = list()# Itera sulla sequenza di indici numerici for sequence in Y:# One-hot encode di ogni indice nella frase corrente encoded = to_categorical(sequence, num_classes=vocab_size)# Aggiungi i one-hot alla lista ylist.append(encoded)# Trasforma in np.array e fai reshape Y = np.array(ylist).reshape(Y.shape[0], Y.shape[1], vocab_size)
Addestrare il modello:
model.fit(X, Y, epochs=N)
Valutazione:
nltk.translate.bleu_scoreReti Neurali Ricorrenti (RNN) per il Language Modeling con Keras