Padding kalimat
Sekarang Anda akan mengimplementasikan fungsi bernama sents2seqs() yang nantinya akan Anda gunakan untuk mengubah data secara praktis ke format yang diterima oleh model neural machine translation (NMT). sents2seqs() menerima sebuah list berisi string kalimat dan,
- Mengonversi kalimat menjadi list urutan ID,
- Melakukan padding pada kalimat agar panjangnya sama, dan
- Secara opsional mengonversi ID menjadi vektor one-hot.
Anda telah disediakan en_tok, sebuah Tokenizer yang sudah dilatih pada data. Hal lain yang perlu diperhatikan adalah ketika mengimplementasikan fungsi sents2seqs() Anda akan melihat argumen yang belum digunakan bernama input_type. Nantinya, input_type ini akan digunakan untuk mengubah parameter yang bergantung pada bahasa seperti panjang urutan dan ukuran kosakata.
Latihan ini adalah bagian dari kursus
Penerjemahan Mesin dengan Keras
Petunjuk latihan
- Konversikan
sentencesmenjadi urutan menggunakan Tokenizeren_tok. - Lakukan padding pada urutan ke panjang tetap
en_lendengan jenis padding yang ditentukan olehpad_typedan gunakan pemotonganpost. - Konversikan ID kata
preproc_textmenjadi vektor one-hot dengan panjangen_vocabmenggunakan fungsito_categorical(). - Konversikan
sentencemenjadi urutan berpadded menggunakan metodesents2seqs()dengan paddingpre.
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
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=____)