Začněte nyníZačněte zdarma

Padding vět

Teď implementuješ funkci sents2seqs(), kterou později použiješ k pohodlnému převodu dat do formátu, který očekává model neuronového strojového překladu (NMT). Funkce sents2seqs() přijímá seznam řetězců vět a:

  • Převede věty na seznam sekvencí ID,
  • Doplní věty paddingem tak, aby měly stejnou délku,
  • Volitelně převede ID na onehot vektory.

Máš k dispozici en_tok, tedy Tokenizer již natrénovaný na datech. Důležité je také to, že při implementaci funkce sents2seqs() narazíš na nepoužitý argument input_type. Ten bude později sloužit ke změně jazykově závislých parametrů, jako je délka sekvence nebo velikost slovní zásoby.

Toto cvičení je součástí kurzu

Machine Translation with Keras

Zobrazit kurz

Pokyny k cvičení

  • Převeď sentences na sekvence pomocí Tokenizeru en_tok.
  • Doplň sekvence paddingem na pevnou délku en_len se zadaným typem paddingu pad_type a použij zkracování typu post.
  • Převeď ID slov v preproc_text na onehot vektory délky en_vocab pomocí funkce to_categorical().
  • Převeď sentence na sekvenci s paddingem pomocí metody sents2seqs() s paddingem typu pre.

Interaktivní cvičení na vyzkoušení si v praxi

Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.

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=____)
Upravit a spustit kód