Bắt đầu ngayBắt đầu miễn phí

Đệm độ dài câu (padding)

Bây giờ bạn sẽ hiện thực một hàm tên là sents2seqs() mà sau này bạn sẽ dùng để chuyển đổi dữ liệu thuận tiện sang định dạng mà mô hình neural machine translation (NMT) chấp nhận. sents2seqs() nhận vào một danh sách các chuỗi câu và,

  • Chuyển các câu thành danh sách các chuỗi ID,
  • Thêm padding cho các câu để chúng có cùng độ dài và,
  • Tùy chọn chuyển các ID thành vector one-hot.

Bạn đã được cung cấp en_tok, một Tokenizer đã được huấn luyện trên dữ liệu. Một điểm cần lưu ý là khi hiện thực hàm sents2seqs() bạn sẽ thấy một đối số chưa dùng tên là input_type. Sau này, input_type sẽ được dùng để thay đổi các tham số phụ thuộc ngôn ngữ như độ dài chuỗi và kích thước từ vựng.

Bài tập này là một phần của khóa học

Machine Translation với Keras

Xem khóa học

Hướng dẫn bài tập

  • Chuyển sentences thành chuỗi bằng Tokenizer en_tok.
  • Thêm padding cho các chuỗi tới độ dài cố định en_len với kiểu padding xác định bởi pad_type và dùng cắt bớt post.
  • Chuyển các ID từ preproc_text thành các vector one-hot có độ dài en_vocab bằng hàm to_categorical().
  • Chuyển sentence thành một chuỗi đã padding bằng phương thức sents2seqs() với kiểu padding pre.

Bài tập tương tác thực hành trực tiếp

Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.

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=____)
Chỉnh sửa và Chạy Mã