NMT로 번역 생성하기

Keras로 배우는 Machine Translation

Thushan Ganegedara

Data Scientist and Author

동기

  • 학습된 모델이 있습니다
  • 번역 작업에서 인간을 보조해야 합니다
  • 보지 못한 데이터로 모델을 테스트합니다

  • 방법

    • 홀드아웃 테스트 세트로 모델 평가
    • 한 문장의 번역을 예측하게 하여 모델을 테스트합니다.
Keras로 배우는 Machine Translation

입력 변환하기

  • 영어 문장
en_st = ['the united states is sometimes chilly during december , but it is sometimes freezing in june .']
  • 인코더 입력 변환
en_seq = sents2seqs('source', en_st, onehot=True, reverse=True)
print(np.argmax(en_seq, axis=-1)
English: ['the united states is sometimes chilly during december , 
           but it is sometimes freezing in june .']
Reversed sentence: ['june in freezing sometimes is it ...'] 
Reversed sequence: [[34   3  54       10        2  4  7 45  5 69 10  2 23 22  6]]
Keras로 배우는 Machine Translation

번역 생성하기

  • 예측 생성

    fr_pred = model.predict(en_seq)
    
  • fr_pred.shape

    • [sentences, seq len, vocab size]
  • 예측 클래스 가져오기
fr_seq = np.argmax(fr_pred, axis=-1)[0]
[[ 3  7 35 34  2 ...  5  4  4  0  0]] # <= fr_seq
  • fr_seq.shape
    • [num sentences, sequence len]

Keras로 배우는 Machine Translation

예측을 문장으로 변환

  • 리스트 컴프리헨션으로 예측된 단어 ID를 문장으로 변환
fr_sentence = ' '.join([fr_id2word[i] for i in fr_seq if i != 0])
English: the united states is sometimes chilly during december , but it is sometimes freezing in june .

French: les états unis est parfois froid en décembre mais il est parfois le gel en
French (Google Translate): les etats-unis sont parfois froids en décembre, mais parfois gelés en juin
Keras로 배우는 Machine Translation

리스트 컴프리헨션 자세히 보기

  • 리스트 컴프리헨션
word_list = [fr_tok.index_word[i] for i in fr_seq if i != 0]
  • for 루프
word_list = []
for i in fr_seq:
  if i != 0:
    word_list.append(fr_tok.index_word[i])
Keras로 배우는 Machine Translation

연습해 봅시다!

Keras로 배우는 Machine Translation

Preparing Video For Download...