Byte-Pair Encoding Tokenization
단어집에 가장 작은 단위의 문자를 넣고, 사용자가 설정한 크기가 될때까지 가장 빈도수가 높은 문자를 조합하여 단어집에 계속 넣는다.
즉, vocabulary size 를 hyperparameter 로 입력받는다.
B) Step by step Method
- 문장을 단어로 나눈다. 이때 어떤 토크나이저를 사용하든 상관 없다.
- 나눠진 단어들을 문자 단위 (가장 작은 단위) 로 나눈다. 예를 들면, car 는 c, a, r 로 나눠진다.
- 그리고 단어집에 모두 넣고, 각 단위들을 조합해서 가장 많이 등장하는 조합어를 단어집에 넣는다. 예를 들어, c, a, r 에서 ca 가 가장 많이 나온다고하면, c, a, r, ca 로 총 4 개 크기의 단어집이 구성된다.
- 이 작업을 특정 크기가 될때까지 반복한다.
- 이후 out-of-vocabulary 단어가 등장하는 경우에도, 가장 작은 단위로 나눠서 빈도수가 높은 단어는 매칭을 시키고 나머지는 unknown
[UNK]토큰을 붙여준다. 예를 들어, card 를 토크나이징하면, ca, r,[UNK]이라는 토큰으로 나눠지는 것이다.
C) Related
WordPiece 토크나이저 역시 subword 토크나이징 방식이다.
openAI 에서 지원하는 토크나이저 tiktoken. 허깅페이스 토크나이저보다 최대 6 배 빠르다고 한다: GitHub - openai/tiktoken