성능과 다재다능함에 초점을 맞추어, 오늘날 가장 많이 사용되는 토크나이저 (tokenizers)의 구현을 제공합니다.
- 오늘날 가장 많이 사용되는 토크나이저를 사용하여 새로운 어휘 집합 (vocabularies)을 학습시키고 토큰화 (tokenize)할 수 있습니다.
- Rust 구현 덕분에 매우 빠릅니다 (학습 및 토큰화 모두). 서버의 CPU에서 1GB의 텍스트를 토큰화하는 데 20초 미만이 소요됩니다.
- 사용하기 쉬우면서도 매우 다재다능합니다.
- 연구 및 프로덕션 (production)을 위해 설계되었습니다.
- 정규화 (Normalization)에는 정렬 추적 (alignments tracking) 기능이 포함되어 있습니다. 주어진 토큰에 해당하는 원문 문장의 부분을 언제든지 가져올 수 있습니다.
- 자르기 (Truncate), 패딩 (Pad), 모델에 필요한 특수 토큰 (special tokens) 추가 등 모든 전처리 (pre-processing)를 수행합니다.
성능은 하드웨어에 따라 다를 수 있지만, g6 aws 인스턴스에서 ~/bindings/python/benches/test_tiktoken.py를 실행하면 다음과 같은 결과를 얻을 수 있습니다:
다음 언어들에 대한 바인딩 (bindings)을 제공합니다 (더 추가될 예정입니다!):
소스에서 다음을 사용하여 설치할 수 있습니다:
pip install git+https://github.com/huggingface/tokenizers.git#subdirectory=bindings/python
또는 출시된 버전을 설치하려면:
pip install tokenizers
Byte-Pair Encoding, WordPiece 또는 Unigram 중에서 모델을 선택하고 토크나이저를 인스턴스화하세요:
from tokenizers import Tokenizer
from tokenizers.models import BPE
tokenizer = Tokenizer(BPE())
사전 토큰화 (pre-tokenization, 예: 단어로 분할)가 수행되는 방식을 사용자 정의할 수 있습니다:
from tokenizers.pre_tokenizers import Whitespace
tokenizer.pre_tokenizer = Whitespace()
그런 다음 파일 세트에서 토크나이저를 학습시키는 데는 단 두 줄의 코드만 필요합니다:
from tokenizers.trainers import BpeTrainer
trainer = BpeTrainer(special_tokens=["[UNK]", "[CLS]", "[SEP]", "[PAD]", "[MASK]"])
tokenizer.train(files=["wiki.train.raw", "wiki.valid.raw", "wiki.test.raw"], trainer=trainer)
토크나이저 학습이 완료되면, 단 한 줄로 어떤 텍스트든 인코딩 (encode)할 수 있습니다:
output = tokenizer.encode("Hello, y'all! How are you 😁 ?")
print(output.tokens)
# ["Hello", ",", "y", "'", "all", "!", "How", "are", "you", "[UNK]", "?"]
더 자세히 알아보려면 문서를 확인하거나 퀵투어 (quicktour)를 살펴보세요!