Sätze auffüllen
Jetzt implementierst du eine Funktion namens „ sents2seqs()
“, die du später verwenden wirst, um Daten bequem in das vom neuronalen maschinellen Übersetzungsmodell (NMT) akzeptierte Format zu konvertieren. „ sents2seqs()
“ akzeptiert eine Liste von Satzzeichenfolgen und
- Konvertiert die Sätze in eine Liste von IDs,
- Füll die Sätze auf, damit sie alle gleich lang sind, und
- Optional kannst du die IDs in Onehot-Vektoren umwandeln.
Du hast „ en_tok
“ bekommen, ein „ Tokenizer
“, das schon mit Daten trainiert wurde. Außerdem solltest du beachten, dass du bei der Implementierung der Funktion „ sents2seqs()
“ ein ungenutztes Argument namens „ input_type
“ siehst. Später wird dieses „ input_type
” benutzt, um sprachabhängige Parameter wie die Länge der Sequenz und die Größe des Vokabulars zu ändern.
Diese Übung ist Teil des Kurses
Maschinelle Übersetzung mit Keras
Anleitung zur Übung
- Konvertier die „
sentences
” mit dem Tokenizer „en_tok
” in Sequenzen. - Füge die Pad-Sequenzen zu einer festen Länge „
en_len
“ mit dem angegebenen Auffülltyp „pad_type
“ zusammen und verwende „post
-truncating“. - Konvertier die Wort-IDs aus „
preproc_text
“ mit der Funktion „to_categorical()
“ in One-Hot-Vektoren der Länge „en_vocab
“. - Konvertier „
sentence
“ mit der Methode „sents2seqs()
“ und „pre
-padding“ in eine aufgefüllte Sequenz.
Interaktive Übung
Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.
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=____)