더북(TheBook)

다음은 데이터셋 전처리를 진행한 결과입니다.

<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
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.