Completarea cu padding a propozițiilor
Vei implementa acum o funcție numită sents2seqs(), pe care o vei folosi ulterior pentru a transforma datele în formatul acceptat de modelul de traducere automată neuronală (NMT). sents2seqs() primește o listă de propoziții sub formă de șiruri de caractere și:
- Convertește propozițiile într-o listă de secvențe de ID-uri,
- Aplică padding propozițiilor pentru ca acestea să aibă lungime egală și,
- Opțional, convertește ID-urile în vectori onehot.
Ți-a fost furnizat en_tok, un Tokenizer deja antrenat pe date. Un alt lucru de reținut este că, la implementarea funcției sents2seqs(), vei observa un argument neutilizat numit input_type. Ulterior, acest input_type va fi folosit pentru a modifica parametri dependenți de limbă, cum ar fi lungimea secvenței și dimensiunea vocabularului.
Acest exercițiu face parte din cursul
Traducere automată cu Keras
Instrucțiuni pentru exercițiu
- Convertește
sentencesîn secvențe folosind Tokenizer-ulen_tok. - Aplică padding secvențelor până la o lungime fixă
en_len, cu un tip de padding specificat prinpad_type, și folosește trunchiere de tippost. - Convertește ID-urile de cuvinte din
preproc_textîn vectori onehot de lungimeen_vocabfolosind funcțiato_categorical(). - Convertește
sentenceîntr-o secvență cu padding folosind metodasents2seqs()cu padding de tippre.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
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=____)