본문 바로가기
딥러닝

[딥러닝][NLP] special token 추가

by 방구석 데이터사이언티스트 2023. 2. 21.
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
반응형

댓글