본문 바로가기
목차
Python

[Etc] Token and Tokenizer

by ds31x 2023. 12. 6.
728x90
반응형

Token의 의미

문장을 구성하는
(최소)의미 단위.

 

즉, token은 텍스트를 모델 등으로 처리할 때, 의미 단위 또는 규칙 기반으로 분할하는 최소 입력 단위에 해당함

 

일반적으로 하나의 word가 token에 해당하며,

영어에서는 whitespace character(공백문자) 및 punctuation mark 등을 구분자(delimiter)로 하여 나눈 결과들을

보통 token이라고 부름.

좀 더 깊이 들어가면 subword 기반의 token이 현재는 대세로 자리를 잡은 상태임.
자세한 건 다음을 참고:
https://ds31x.github.io/wiki/nlp/tokenization/

https://medium.com/@radhikaramsen3131/chapter-6-tokenizers-2c0318caecfa


Tokenizer

Token으로 나누는 처리를 하는 component (or object)를 가르킴.

Parser라는 용어로도 사용되는 경우가 많음.

Tokenize (~parsing)는 결국 문장을 token으로 분해하는 처리를 의미하는데, 이를 수행하는 object를 tokenizer라고 함.


참고

한국어는 보통 tokenize를 할 때,

  • 띄어쓰기 외에도 조사,어미 등을 고려한 음절 등으로 처리해야 하며,
  • 때문에 영어에 비해 token의 수가 보다 많이 나오고 처리가 어렵다.
  • (LLM에서 과금이 주로 token 단위이기 때문에 이 부분은 단점이 될 수 있음)

 

<예>

  • 나는 소년입니다. : 나/는 / 소년/입니다/.
  • I am a boy. : I / am / a / boy/. 

참고로 python의 string의 split메서드를 사용하면 간단한 tokenize를 할 수 있다(영문이라면).

많은 프로그래밍언어가 공백문자나 delimiter 기반의 tokenize를 하는 메서드를 문자열 클래스의 메서드로 제공하고 있다. 

하지만, 제대로 tokenize를 하는 건 쉬운 일이 아니다.

728x90

'Python' 카테고리의 다른 글

[Python] logging  (0) 2023.12.18
[Python] Terminal, WSL, Conda, and VSCode  (1) 2023.12.15
[Python] File Handling  (2) 2023.12.05
[Python] Programming Language and Introduction of Python.  (1) 2023.10.23
[Python] __name__ : Special string variable  (1) 2023.10.10