본문 바로가기

~2023

[NLP] HuggingFace 토크나이저 커스텀하기 (커스텀 토큰 추가)

728x90
반응형

지금 NLP 분야에서는 새로운 모델을 학습시키는 것보다 Pre-trained 된 모델을 가져와 재학습 시키는 경우가 많다. 그럼 해당하는 모델이 사용하는 Embedding Layer를 지나가기 위해 토큰 정보를 담은 토크나이저는 수정할 수 없는걸까? 아니 커스터마이징 할 수 있다. 지금 내가 해결하고자 하는 문제에 대한 단어들이 토크나이저에 없을 수 있는데 추가할 수 있는 방법은 매우 간단하다. 일단 추가할 토큰을 명시하고 토크나이저에 추가한 다음에 해당 모델의 Embedding Layer input을 바꿔주면 된다.

1. 추가할 토큰 명시

add_tokens = ['[NEW']

2. 토크나이저 업데이트

tokenizer = AutoTokenizer.from_pretrained({model_name})
tokenizer.add_special_tokens({
        'additional_special_tokens': add_tokens
})

3. 모델 layer 업데이트

model = AutoModel.from_pretrained(pretrained_model_name_or_path={model_name})
model.resize_token_embeddings(len(tokenizer))
728x90
반응형