<pad> 토큰을 채우고, 길면 잘라냄. <bos>, <eos>, <unk>)을 추가해 문장 경계를 표시하거나 사전에 없는 단어를 처리.| 기법 | 특징 |
|---|---|
| Whitespace | 공백 문자 기준으로 단어 단위 분할. 단순하지만 어휘 폭발 문제 발생 |
| Morpheme | 형태소 분석기를 통해 의미 단위(어간·어미·접사 등)로 분할. 한국어에 유용 |
| BPE | 자주 등장하는 문자 시퀀스를 병합하는 방식. 빈도 기반으로 어휘 구축 |
| WordPiece | 구글이 제안. BPE와 유사하나 병합 시 확률 모델을 활용해 불필요 병합 방지 |
| Unigram LM | 문장 내 토큰화 확률을 최대화하는 어휘를 선택. SentencePiece에 사용 |
이로써 자주 나오는 어절·부분어절이 토큰으로 학습되며, 희귀 단어는 서브워드 단위로 분해
# 토크나이저 초기화 (SentencePiece 사용 가정)
tokenizer = SentencePieceProcessor(model_file='spm.model')
# 텍스트를 ID 시퀀스로 변환
ids = tokenizer.encode("안녕하세요")
# ID 시퀀스를 다시 텍스트로 변환
tokens = tokenizer.decode(ids)
# e.g. "안녕하세요"