kimwoonggon / publicservant_AI

김웅곤 - 텐서플로우와 케라스로 구현한 NLP 기초 (2020년 버전)
176 stars 94 forks source link

pad_token_id 관련 이슈 #4

Open monologg opened 4 years ago

monologg commented 4 years ago

안녕하세요:)

청와대 민원 분류 코드에서 아래와 같은 함수가 있는데, KoBERT에서는 [UNK]가 0, [PAD]가 1로 매핑이 되어 있는 것으로 알고 있습니다.

def convert_data(data_df):
    global tokenizer

    SEQ_LEN = 512 #SEQ_LEN : 버트에 들어갈 인풋의 길이

    tokens, masks, segments, targets = [], [], [], []

    for i in tqdm(range(len(data_df))):
        # token : 문장을 토큰화함
        token = tokenizer.encode(data_df[DATA_COLUMN][i], max_length=SEQ_LEN, pad_to_max_length=True)

        # 마스크는 토큰화한 문장에서 패딩이 아닌 부분은 1, 패딩인 부분은 0으로 통일
        num_zeros = token.count(0)
        mask = [1]*(SEQ_LEN-num_zeros) + [0]*num_zeros

위의 코드의 num_zeros = token.count(0)num_zeros = token.count(tokenizer.pad_token_id) 로 바꾸는게 맞을 것 같아 이슈 올리게 되었습니다.

혹시나 잘못된 부분이 있거나 하면 알려주세요!

좋은 코드 감사합니다:)