파트 1: 데이터 전처리

Keras로 배우는 Machine Translation

Thushan Ganegedara

Data Scientist and Author

데이터 소개

  • 데이터

    • en_text : 문장 리스트. 각 문장은 공백으로 구분된 단어 문자열입니다.
    • fr_text: 문장 리스트. 각 문장은 공백으로 구분된 단어 문자열입니다.
  • 데이터 일부 출력

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 .
...
Keras로 배우는 Machine Translation

단어 토크나이즈

  • 토크나이즈

    • 문장/구를 단어/문자 단위로 분할하는 과정
    • 예: "I watched a movie last night, it was okay." →
    • [I, watched, a, movie, last, night, it, was, okay]
  • Keras로 토크나이즈

    • 코퍼스를 사용해 단어→ID 매핑을 학습합니다.
    • 문자열을 ID 시퀀스로 변환할 수 있습니다.
from tensorflow.keras.preprocessing.text import Tokenizer
en_tok = Tokenizer()
Keras로 배우는 Machine Translation

Tokenizer 학습시키기

  • Tokenizer 학습(Fit)
    • 단어→ID 매핑을 배우려면 문장 데이터에 대해 학습이 필요합니다.
en_tok = Tokenizer()
en_tok.fit_on_texts(en_text)
  • 단어→ID 조회
    • Tokenizer의 word_index 속성을 사용합니다.
id = en_tok.word_index["january"] # => returns 51
  • ID→단어 조회
w = en_tok.index_word[51] # => returns 'january'
Keras로 배우는 Machine Translation

문장을 시퀀스로 변환

seq = en_tok.texts_to_sequences(['she likes grapefruit , peaches , and lemons .'])
[[26, 70, 27, 73, 7, 74]]
Keras로 배우는 Machine Translation

어휘 크기 제한

  • Keras Tokenizer에서 어휘 크기를 제한할 수 있습니다.
tok = Tokenizer(num_words=50)
  • OOV(어휘 외) 단어

    • 학습 코퍼스에서 드문 단어
    • 학습 세트에 없는 단어
  • 예시

    • tok.fit_on_texts(["I drank milk"])
    • tok.texts_to_sequences(["I drank water"])
    • water는 OOV 단어로 무시됩니다.
Keras로 배우는 Machine Translation

어휘 외(OOV) 단어 처리

  • OOV 토큰 정의
tok = Tokenizer(num_words=50, oov_token='UNK')
  • 예시
    • tok.fit_on_texts(["I drank milk"])
    • tok.texts_to_sequences(["I drank water"])
    • water는 OOV 단어로 UNK로 대체됩니다.
      • 즉, Keras는 "I drank UNK"로 인식합니다
Keras로 배우는 Machine Translation

연습해 봅시다!

Keras로 배우는 Machine Translation

Preparing Video For Download...