เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

การกลับลำดับประโยค

ในแบบฝึกหัดนี้ จะได้เรียนรู้วิธีกลับลำดับประโยคสำหรับโมเดล encoder ดังที่กล่าวไปแล้ว การกลับลำดับประโยคต้นทางช่วยสร้างความเชื่อมโยงเริ่มต้นที่แข็งแกร่งระหว่าง encoder และ decoder ซึ่งช่วยเพิ่มประสิทธิภาพของโมเดล อย่างไรก็ตาม ควรคำนึงไว้เสมอว่าประโยชน์ที่ได้ขึ้นอยู่กับคู่ภาษาที่ใช้แปล หากทั้งสองภาษามีลำดับประธาน กริยา และกรรมที่เหมือนกัน การกลับลำดับจะช่วยให้โมเดลทำงานได้ดีขึ้น

ในแบบฝึกหัดนี้ จะแก้ไขฟังก์ชัน sents2seqs() ให้สามารถกลับลำดับประโยคได้เมื่อต้องการ โดยผู้ใช้สามารถระบุอาร์กิวเมนต์คีย์เวิร์ดแบบบูลีนชื่อ reverse เพื่อกำหนดว่าต้องการกลับลำดับข้อความหรือไม่

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

Machine Translation ด้วย Keras

ดูคอร์ส

คำแนะนำการฝึกหัด

  • เขียน signature ของฟังก์ชัน sents2seqs() โดยเพิ่มอาร์กิวเมนต์คีย์เวิร์ดใหม่ชื่อ reverse ซึ่งมีค่าเริ่มต้นเป็น False
  • กลับลำดับ sequence ID ที่ส่งคืนบน มิติเวลา (time dimension) (โดยใช้ไวยากรณ์ ::-1) เพื่อให้ ID ของคำแรกกลายเป็นคำสุดท้าย
  • เรียกใช้ sents2seqs() แล้วกลับลำดับ sentences ที่กำหนดให้ โดยคงค่าพารามิเตอร์เริ่มต้นอื่น ๆ ทั้งหมดไว้ตามเดิม

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

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))
แก้ไขและรันโค้ด