더북(TheBook)

10.2.1 seq2seq

seq2seq(sequence to sequence)는 입력 시퀀스(input sequence)에 대한 출력 시퀀스(output sequence)를 만들기 위한 모델입니다. seq2seq는 품사 판별 같은 시퀀스 레이블링(sequence labeling)과는 차이가 있습니다. 시퀀스 레이블링이란 입력 단어가 x1, x2, …, xn이라면 출력은 y1, y2, …, yn이 되는 형태입니다. 즉, 입력과 출력에 대한 문자열(sequence)이 같습니다. 하지만 seq2seq는 품사 판별보다는 번역에 초점을 둔 모델입니다. 번역은 입력 시퀀스의 x1:n과 의미가 동일한 출력 시퀀스 y1:m을 만드는 것이며, xi, yj 간 관계는 중요하지 않습니다. 그리고 각 시퀀스 길이도 서로 다를 수 있습니다.

그럼 지금부터 seq2seq를 텐서플로 2를 이용하여 구현해 보겠습니다. 스페인어를 영어로 번역하는 예제입니다. 이 예제는 텐서플로 튜토리얼에 게시된 코드를 일부 수정한 것입니다. 튜토리얼 코드와 비교하면서 실행해도 좋습니다.

먼저 필요한 라이브러리를 호출합니다.

코드 10-25 라이브러리 호출

from __future__ import absolute_import, division, print_function, unicode_literals

import tensorflow as tf
import os
import io
import re
import time
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker
from sklearn.model_selection import train_test_split
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.