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
Pokyny k cvičení
- Převeď
sentencesna sekvence pomocí Tokenizeruen_tok. - Doplň sekvence paddingem na pevnou délku
en_lense zadaným typem paddingupad_typea použij zkracování typupost. - Převeď ID slov v
preproc_textna onehot vektory délkyen_vocabpomocí funkceto_categorical(). - Převeď
sentencena sekvenci s paddingem pomocí metodysents2seqs()s paddingem typupre.
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=____)