ตอนที่ 1: การเตรียมข้อมูล

Machine Translation ด้วย Keras

Thushan Ganegedara

Data Scientist and Author

แนะนำข้อมูล

  • ข้อมูล

    • en_text : Python list ของประโยค โดยแต่ละประโยคเป็น string ของคำที่คั่นด้วยช่องว่าง
    • fr_text: Python list ของประโยค โดยแต่ละประโยคเป็น string ของคำที่คั่นด้วยช่องว่าง
  • การแสดงข้อมูลบางส่วนในชุดข้อมูล

for en_sent, fr_sent in zip(en_text[:3], fr_text[:3]):
  print("English: ", en_sent)
  print("\tFrench: ", fr_sent)
English:  new jersey is sometimes quiet during autumn , and it is snowy in april .
    French:  new jersey est parfois calme pendant l' automne , et il est neigeux en avril .
English:  the united states is usually chilly during july , and it is usually freezing in november .
    French:  les états-unis est généralement froid en juillet , et il gèle habituellement en novembre .
...
Machine Translation ด้วย Keras

การตัดคำ (Word Tokenization)

  • การตัดคำ (Tokenization)

    • กระบวนการแบ่งประโยคหรือวลีออกเป็นคำหรืออักขระแต่ละหน่วย
    • เช่น "I watched a movie last night, it was okay." จะกลายเป็น
    • [I, watched, a, movie, last, night, it, was, okay]
  • การตัดคำด้วย Keras

    • เรียนรู้การแมปจากคำไปยัง word ID จากข้อมูลที่ให้
    • ใช้แปลง string เป็นลำดับ ID ได้
from tensorflow.keras.preprocessing.text import Tokenizer
en_tok = Tokenizer()
Machine Translation ด้วย Keras

การ Fit Tokenizer

  • การ fit Tokenizer กับข้อมูล
    • Tokenizer ต้องถูก fit กับข้อมูล (เช่น ประโยค) เพื่อเรียนรู้การแมปคำไปยัง word ID
en_tok = Tokenizer()
en_tok.fit_on_texts(en_text)
  • การดึง mapping จากคำไปยัง ID
    • ใช้ attribute word_index ของ Tokenizer
id = en_tok.word_index["january"] # => returns 51
  • การดึง mapping จาก ID ไปยังคำ
w = en_tok.index_word[51] # => returns 'january'
Machine Translation ด้วย Keras

การแปลงประโยคเป็นลำดับตัวเลข

seq = en_tok.texts_to_sequences(['she likes grapefruit , peaches , and lemons .'])
[[26, 70, 27, 73, 7, 74]]
Machine Translation ด้วย Keras

การจำกัดขนาด Vocabulary

  • สามารถจำกัดขนาด vocabulary ใน Tokenizer ของ Keras ได้
tok = Tokenizer(num_words=50)
  • คำนอก vocabulary (OOV words)

    • คำที่พบน้อยในข้อมูลฝึก (คือ corpus หรือชุดข้อความ)
    • คำที่ไม่มีอยู่ใน training set
  • เช่น

    • tok.fit_on_texts(["I drank milk"])
    • tok.texts_to_sequences(["I drank water"])
    • คำ water เป็น OOV word และจะถูกละเว้น
Machine Translation ด้วย Keras

การจัดการคำนอก Vocabulary

  • การกำหนด OOV token
tok = Tokenizer(num_words=50, oov_token='UNK')
  • เช่น
    • tok.fit_on_texts(["I drank milk"])
    • tok.texts_to_sequences(["I drank water"])
    • คำ water เป็น OOV word และจะถูกแทนที่ด้วย UNK
      • กล่าวคือ Keras จะมองว่าเป็น "I drank UNK"
Machine Translation ด้วย Keras

มาฝึกกันเถอะ!

Machine Translation ด้วย Keras

Preparing Video For Download...