Inizia subitoInizia gratis

Padding delle frasi

Ora implementerai una funzione chiamata sents2seqs() che userai più avanti per trasformare comodamente i dati nel formato accettato dal modello di neural machine translation (NMT). sents2seqs() accetta una lista di stringhe di frasi e,

  • Converte le frasi in una lista di sequenze di ID,
  • Applica il padding alle frasi in modo che abbiano la stessa lunghezza e,
  • Opzionalmente converte gli ID in vettori one-hot.

Ti è stato fornito en_tok, un Tokenizer già addestrato sui dati. Un'altra cosa da notare è che, durante l'implementazione della funzione sents2seqs(), vedrai un argomento inutilizzato chiamato input_type. Più avanti, questo input_type verrà usato per modificare parametri dipendenti dalla lingua come la lunghezza della sequenza e la dimensione del vocabolario.

Questo esercizio fa parte del corso

Traduzione automatica con Keras

Visualizza corso

Istruzioni dell'esercizio

  • Converte sentences in sequenze usando il Tokenizer en_tok.
  • Applica il padding alle sequenze fino a una lunghezza fissa en_len con il tipo di padding specificato in pad_type e usa il troncamento post.
  • Converte gli ID delle parole di preproc_text in vettori one-hot di lunghezza en_vocab usando la funzione to_categorical().
  • Converte sentence in una sequenza con padding usando il metodo sents2seqs() con padding pre.

esercizio interattivo pratico

Prova questo esercizio completando questo codice di esempio.

from tensorflow.keras.preprocessing.sequence import pad_sequences
from tensorflow.keras.utils import to_categorical

def sents2seqs(input_type, sentences, onehot=False, pad_type='post'):
	# Convert sentences to sequences      
    encoded_text = ____.____(sentences)
    # Pad sentences to en_len
    preproc_text = ____(____, padding=____, truncating=____, maxlen=____)
    if onehot:
		# Convert the word IDs to onehot vectors
        preproc_text = ____(____, num_classes=____)
    return preproc_text
sentence = 'she likes grapefruit , peaches , and lemons .'  
# Convert a sentence to sequence by pre-padding the sentence
pad_seq = sents2seqs('source', [____], pad_type=____)
Modifica ed esegui il codice