더북(TheBook)

코드 10-28 텐서로 변환

def indexesFromSentence(lang, sentence): ------ 문장을 단어로 분리하고 인덱스를 반환
    return [lang.word2index[word] for word in sentence.split(' ')]

def tensorFromSentence(lang, sentence): ------ 딕셔너리에서 단어에 대한 인덱스를 가져오고 문장 끝에 토큰을 추가
    indexes = indexesFromSentence(lang, sentence)
    indexes.append(EOS_token)
    return torch.tensor(indexes, dtype=torch.long, device=device).view(-1, 1)

def tensorsFromPair(input_lang, output_lang, pair): ------ 입력과 출력 문장을 텐서로 변환하여 반환
    input_tensor = tensorFromSentence(input_lang, pair[0])
    target_tensor = tensorFromSentence(output_lang, pair[1])
    return(input_tensor, target_tensor)

파이토치에서 seq2seq 모델을 사용하기 위해서는 먼저 인코더와 디코더를 정의해야 합니다. 입력(영어) 문장이 인코더로 주입되면 디코더(프랑스어)로 번역되어 출력됩니다. 인코더와 디코더를 이용하면 문장의 번역뿐만 아니라 다음 입력을 예측하는 것도 가능합니다. 이때 각 입력 문장의 끝에는 문장의 끝을 알리는 토큰이 할당됩니다.

▲ 그림 10-15 인코더와 디코더

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.