MulaiMulai sekarang secara gratis

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

Lihat Kursus

Petunjuk latihan

  • Konversikan sentences menjadi urutan menggunakan Tokenizer en_tok.
  • Lakukan padding pada urutan ke panjang tetap en_len dengan jenis padding yang ditentukan oleh pad_type dan gunakan pemotongan post.
  • Konversikan ID kata preproc_text menjadi vektor one-hot dengan panjang en_vocab menggunakan fungsi to_categorical().
  • Konversikan sentence menjadi urutan berpadded menggunakan metode sents2seqs() dengan padding pre.

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=____)
Edit dan Jalankan Kode