728x90
반응형
오늘은 가볍게 Tokenizer에 special token을 추가하는 방법에 대해 얘기해보겠습니다.
일반적으로 스페셜 토큰을 얘기하면, [CLS], [SEP], ][MASK] 등과 같이 사전학습 Tokenizer에 이미 정의되어 있는 스페셜 토큰을 얘기합니다. 하지만 내가 원하는 토큰 혹은 단어를 스페셜 토큰으로 직접 추가 할 수 있습니다.
스페셜 토큰을 직접 추가하는 이유는 말 그대로 스페셜 토큰으로 정의한 해당 단어를 올바르게 모델이 인식할 수 있게 도와주기 위함이라고 생각합니다. 예를 들어, 고유명사와 같은 단어를 스페셜 토큰으로 정의해 해당 단어를 올바르게 모델에 주입할 수 있겠죠.
그럼 지금부터 스페셜 토큰을 추가하는 방법에 대해 설명하겠습니다.
1. special token 추가
token_list = ['yuntaeyang']
special_tokens_dict = {'additional_special_tokens': token_list}
tokenizer.add_special_tokens(special_tokens_dict)
추가하는 방법은 간단한 합니다.
자신이 추가하기를 원하는 토큰 리스트를 정의하고 해당 토큰의 명칭과 함께 딕셔너리 구조로 저장합니다.
그후 add_special_tokens으로 tokenizer에 추가하면 됩니다.
2. resize_embedding
model.resize_token_embeddings(len(tokenizer))
스페셜 토큰을 추가했다면, tokenizer의 사이즈가 더 늘어났을 겁니다.
따라서 사용하는 모델의 임베딩 사이즈도 이에 맞게 변경해주어야합니다.
만약 스페셜 토큰 추가 후 그대로 모델을 사용하신다면 에러가 발생하게 되고 이는 보통 resize_embedding을 안했기 때문입니다.
오늘은 special token 추가에 대해 살펴보고 정리해봤습니다.
감사합니다.
728x90
반응형
'딥러닝' 카테고리의 다른 글
좋은 논문 작성 방법(NLP paer) 1 (0) | 2024.02.06 |
---|---|
AI 연구자의 필수 사이트 (0) | 2023.05.03 |
[논문 리뷰] EmotionFlow: Capture the Dialogue Level Emotion Transitions (0) | 2023.01.14 |
[딥러닝][NLP] Tokenizer 정리 (0) | 2023.01.13 |
[MLOps][딥러닝][실험] Wandb 간단한 사용법 (0) | 2022.12.12 |
댓글