less than 1 minute read

인코딩 값을 되돌리기

decode

from transformers import AutoTokenizer, AutoModelForSequenceClassification
model_name = "nlptown/bert-base-multilingual-uncased-sentiment"
tokenizer = AutoTokenizer.from_pretrained(model_name)
ids = tokenizer("Father enters the room")['input_ids']
tokenizer.decode(ids, skip_special_tokens=True)

ref huggingface tutorial huggingface tokenizer documemnt: https://huggingface.co/docs/transformers/main_classes/tokenizer

decode() list[int]만 받는다. 배치 단위로 바꾸려면 batch_decode 사용

for batch in train_loadera:
    ids = batch['more_toxic_ids'] # (B, max_seq_len)
    print( tokenizer.batch_decode(ids, skip_special_tokens = True) )
  • 기본 토크나이저 클래스는 tokenization_utils.py 의 PreTrainedTokenizer(PreTrainedTokenizerBase) class이다. 자주 쓰는 roberta는 이 순서로 상속 함. roberta -> gpt tokenizer -> PreTrainedTokenizer -> PreTrainedTokenizerBase으로 상속. PreTrainedTokenizer에 _decode 함수가 있고, 사용은 PreTrainedTokenizerBase의 decode 함수를 사용한다. _decode는 list[int] 만 받는다. 그래서 배치를 한꺼번에 되돌리려면 batch_decode을 쓰면 됨.

https://github.com/huggingface/transformers/blob/v4.15.0/src/transformers/tokenization_utils.py

ref https://huggingface.co/docs/transformers/main_classes/tokenizer

Comments