다음은 데이터셋 전처리를 진행한 결과입니다.
<start> may i borrow this book ? <end>
b'<start> \xc2\xbf puedo tomar prestado este libro ? <end>'
문장의 시작과 끝에 <start>와 <end>가 찍혔으며, book 다음에 오는 ? 앞에도 공백이 있는 것을 확인할 수 있습니다.
이제 단어의 악센트를 제거하고 [ENGLISH, SPANISH] 형식으로 단어가 반환되도록 코드로 구현하겠습니다.
코드 10-28 [ENGLISH, SPANISH] 형식의 단어 반환
def create_dataset(path, num_examples):
lines = io.open(path, encoding='UTF-8').read().strip().split('\n')
word_pairs = [[preprocess_sentence(w) for w in l.split('\t')] for l in
lines[:num_examples]]
return zip(*word_pairs)
def max_length(tensor):
return max(len(t) for t in tensor)
def tokenize(lang): ------ 문장의 토큰화
lang_tokenizer = tf.keras.preprocessing.text.Tokenizer(
filters='')
lang_tokenizer.fit_on_texts(lang)
tensor = lang_tokenizer.texts_to_sequences(lang)
tensor = tf.keras.preprocessing.sequence.pad_sequences(tensor, padding='post')
return tensor, lang_tokenizer
def load_dataset(path, num_examples=None): ------ 입력/출력(english, spanish) 쌍 만들기
targ_lang, inp_lang = create_dataset(path, num_examples)
input_tensor, inp_lang_tokenizer = tokenize(inp_lang)
target_tensor, targ_lang_tokenizer = tokenize(targ_lang)
return input_tensor, target_tensor, inp_lang_tokenizer, targ_lang_tokenizer