토크나이저 구성 요소(Components)
토크나이저 구성 요소(Components)
토크나이저를 만들 때 여러 유형의 구성 요소를 붙여 동작을 커스터마이즈할 수 있어요. 이 문서는 각 단계에서 제공하는 대표 구성 요소를 정리해요.
정규화기(Normalizers)
Normalizer는 입력 문자열을 사용 사례에 맞게 전처리해요. 유니코드 정규화(NFD·NFKD·NFC·NFKC), 소문자화 등이 예시예요. 특이한 점은 정규화하면서 정렬(alignment)을 추적한다는 건데, 나중에 토큰을 원본 텍스트로 매핑할 때 꼭 필요해요. Normalizer는 선택 사항이에요.
대표 구현: NFD, NFKC, Lowercase, Strip, StripAccents, Replace, BertNormalizer, Sequence.
사전 토크나이저(Pre-Tokenizers)
PreTokenizer는 일련의 규칙으로 입력을 분할해요. 기본 모델이 여러 분할을 가로지르는 토큰을 만들지 않게 보장하는 게 목적이에요(예: 토큰 안에 공백이 없길 원하면 공백으로 나누기). 여러 PreTokenizer를 Sequence로 결합할 수 있고, 문자열을 수정할 수도 있어요(ByteLevel처럼).
대표 구현: ByteLevel, Whitespace, WhitespaceSplit, Punctuation, Metaspace, CharDelimiterSplit, Digits, Split, Sequence.
모델(Models)
모델은 실제 토크나이제이션 알고리즘이에요. 토크나이저에서 유일하게 필수인 구성 요소예요.
WordLevel: 고전적인 "단어 → ID" 매핑. 단순하지만 좋은 커버리지를 위해 매우 큰 어휘가 필요해요.PreTokenizer가 필수예요.BPE: 가장 인기 있는 서브워드 알고리즘. 문자에서 시작해 자주 함께 나타나는 쌍을 병합해 새 토큰을 만들어요. 작은 어휘로 희귀 단어도 서브워드로 표현해unk토큰을 줄여요.WordPiece: BPE와 유사하지만 더 긴 단어를 우선하는 그리디 알고리즘. BERT 같은 Google 모델에 주로 쓰여요. 단어의 일부를 나타내는##접두사를 써요.Unigram: 주어진 문장의 확률을 최대화하는 최고의 서브워드 토큰 집합을 찾는 방식. BPE와 달리 순차 규칙이 아니라 가장 확률 높은 토큰화를 골라요.
후처리기(Post-Processors)
모든 단계를 거친 뒤, 모델에 넣기 전에 special token을 삽입하고 싶을 때 쓰는 구성 요소예요. 예: [CLS] My horse is amazing [SEP].
대표 구현: TemplateProcessing. single/pair 템플릿과 special token·type_id를 지정해요.
디코더(Decoders)
디코더는 토크나이저가 쓴 ID를 다시 읽을 수 있는 텍스트로 되돌려요. 특수 문자를 쓰는 Normalizer/PreTokenizer에는 이를 되돌리는 전용 Decoder가 필요해요.
대표 구현: ByteLevel, Metaspace, WordPiece.
더 알아보기
- 퀵스타트: Quicktour
- 파이프라인: The tokenization pipeline
- BPE: BPE