Tokenizer
About Tokenizer
Tokenizer는 NLP 파이프라인의 핵심 구성 요소 중 하나입니다. 토크나이저는 단지 1가지 목적을 가지고 있습니다. 즉, 입력된 텍스트를 모델에서 처리할 수 있는 데이터로 변환하는 것입니다. 모델은 숫자만 처리할 수 있으므로, 토크나이저는 텍스트 입력을 숫자 데이터로 변환해야 합니다.
1. Word-based Tokenization
토큰화(tokenization) 형태는 단어기반 (word-based) 입니다. 일반적으로 몇 가지 규칙만 가지고도 설정 및 사용이 매우 쉽고, 종종 괜찮은 결과를 얻을 수 있습니다. 예를 들어, 아래 그림에서의 토큰화 과정은 원시 텍스트를 단어로 나누고 각각에 대한 숫자 표현을 찾는 것입니다:
2. Character-based Tokenization
문자기반 토크나이저는 텍스트를 단어(words)가 아닌 문자(characters)로 나눕니다. 이러한 방법은 두가지 장점이 있습니다:
어휘집(vocabulary)의 크기가 매우 작습니다.
모든 단어들이 문자를 가지고 만들어질 수 있기 때문에, out-of-vocabulary (OOV, unknown) 토큰이 훨씬 적습니다.
3. Subword Tokenization
하위 단어 토큰화(subword tokenization) 알고리즘은 빈번하게 사용하는 단어(frequently used words)는 더 작은 하위단어(subword)로 분할하지 않고, 희귀 단어(rare words)를 의미있는 하위 단어(meaningful subwords)로 분할해야 한다는 원칙에 기반합니다. 하위 단어 토큰과화의 종류는 아래와 같습니다:
Byte-level BPE (GPT-2에 사용됨)
WordPiece (BERT에 사용됨)
SentencePiece, Unigram (몇몇 다국어 모델에 사용됨)
Huggingface는 NLP Task 뿐만아니라 Transformer 기반의 알고리즘을 위한 최적화 된 Tokenizer 패키지를 제공합니다.
Huggingface Tokenizer 설명
Huggingface의 Tokenizer는 텍스트 데이터를 숫자 데이터로 변환하여 자연어 처리 모델에 입력할 수 있도록 하는 도구입니다. 토크나이저는 주어진 텍스트를 토큰(token)으로 분할하고, 각 토큰을 고유한 정수로 매핑합니다. 이를 통해 모델이 텍스트 데이터를 이해하고 처리할 수 있게 됩니다.
토크나이저는 다양한 방법으로 텍스트를 토큰화할 수 있습니다. 예를 들어, 단어 단위로, 부분 단어 단위로, 또는 문자 단위로 토큰화할 수 있습니다. Huggingface는 BERT, GPT, RoBERTa 등 다양한 모델에 최적화된 토크나이저를 제공합니다.
주요 기능
토큰화(Tokenization): 텍스트를 토큰으로 분할합니다.
인코딩(Encoding): 토큰을 정수로 변환합니다.
디코딩(Decoding): 정수를 다시 텍스트로 변환합니다.
특수 토큰 처리: 패딩, 시작, 끝 토큰 등의 특수 토큰을 처리합니다.
Huggingface Tokenizer Tutorial
이 튜토리얼에서는 Huggingface의 transformers
라이브러리를 사용하여 텍스트 데이터를 토큰화하고 인코딩 및 디코딩하는 방법을 설명합니다. 예시로 BERT 모델의 토크나이저를 사용합니다.
토크나이저 불러오기
텍스트 토큰화
토큰 인코딩
토큰을 정수 인덱스로 변환합니다.
패딩과 어텐션 마스크 적용
모델에 입력하기 위해 패딩을 추가하고 어텐션 마스크를 생성합니다.
디코딩
인코딩된 정수 인덱스를 다시 텍스트로 변환합니다. 토큰화 도구에는 입력 텍스트를 인코딩하는 것 외에도 모델에서 생성된 ID를 텍스트로 다시 변환하는 디코딩을 위한 API도 있습니다. 이 작업은 Tokenizer.decode(하나의 예측 텍스트에 대해) 및 Tokenizer.decode_batch(예측 일괄 처리에 대해) 메서드를 통해 수행됩니다.디코더는 먼저 토큰라이저의 어휘를 사용하여 ID를 토큰으로 다시 변환하고 모든 특수 토큰을 제거한 다음 공백으로 토큰을 결합합니다:
모든 과정 종합
위의 단계를 하나로 종합하여 전체 과정을 수행하는 예제입니다.
Last updated