Đảo ngược câu
Tại đây bạn sẽ học cách đảo ngược câu cho mô hình encoder. Như đã thảo luận, đảo ngược câu nguồn giúp hình thành kết nối ban đầu chặt chẽ giữa encoder và decoder, từ đó cải thiện hiệu năng của mô hình. Tuy nhiên, luôn nhớ rằng lợi ích này còn phụ thuộc vào cặp ngôn ngữ bạn đang dịch. Miễn là chúng có cùng trật tự chủ ngữ, động từ và tân ngữ, mô hình sẽ được hưởng lợi.
Trong bài này bạn sẽ chỉnh hàm sents2seqs() để có thể đảo câu khi cần. Người dùng có thể truyền một đối số từ khóa kiểu boolean reverse để thực hiện đảo chuỗi ký tự.
Bài tập này là một phần của khóa học
Machine Translation với Keras
Hướng dẫn bài tập
- Viết chữ ký hàm
sents2seqs()bằng cách thêm đối số từ khóa mớireversevới giá trị mặc định làFalse. - Đảo ngược các ID của chuỗi trả về theo chiều thời gian (dùng cú pháp
::-1), sao cho ID từ đầu tiên trở thành cuối cùng. - Gọi
sents2seqs()và đảo ngượcsentencesđã cho, giữ nguyên tất cả các tham số mặc định khác.
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.
sentences = ["california is never rainy during july ."]
# Add new keyword parameter reverse which defaults to False
def ____(input_type, sentences, onehot=False, pad_type='post', ____=____):
encoded_text = en_tok.texts_to_sequences(sentences)
preproc_text = pad_sequences(encoded_text, padding=pad_type, truncating='post', maxlen=en_len)
if reverse:
# Reverse the text using numpy axis reversing
preproc_text = preproc_text[:, ____]
if onehot:
preproc_text = to_categorical(preproc_text, num_classes=en_vocab)
return preproc_text
# Call sents2seqs to get the padded and reversed sequence of IDs
pad_seq = ____('source', ____, ____=____)
rev_sent = [en_tok.index_word[wid] for wid in pad_seq[0][-6:]]
print('\tReversed: ',' '.join(rev_sent))