모던 텍스트 토크나이저 소개
BERT, DistilBERT 및 기타 트랜스포머 기반 아키텍처와 같은 최신 자연어 처리(NLP) 모델은 효과적인 토큰화에 크게 의존합니다. 하지만 C++ 개발자는 과도한 종속성, 부족한 유니코드 지원, 어휘 기반 인코더와의 호환성 부족 등 제한적인 옵션에 직면하는 경우가 많습니다.
이러한 이유로 저는 모던 텍스트 토크나이저를 만들었습니다. UTF-8을 지원하고, 종속성 없이, ML에 바로 사용 가능한 초고속, 헤더 전용 C++ 토크나이저입니다.
특별한 점은 무엇일까요?
- 종속성 없음 – Boost, ICU, 외부 라이브러리 없음
- UTF-8 안전 – 다국어 텍스트, 이모지 및 멀티바이트 문자를 정확하게 처리
- 헤더 전용 – 프로젝트에 바로 적용하세요.
- 어휘 인코딩 – HuggingFace에서
vocab.txt
를 로드하고 토큰 ID를 생성합니다. - Transformer 지원 –
[CLS]
,[SEP]
,[PAD]
및 시퀀스 서식을 지원합니다.
주요 기능
std::string_view
를 사용하여 ASCII 대 유니코드 분기를 빠르게 처리- 구성을 위한 Fluent API:
1 TextTokenizer tokenizer; 2 tokenizer 3 .set_lowercase(true) 4 .set_split_on_punctuation(true) 5 .set_keep_punctuation(true);
- 어휘 불러오기:
1 tokenizer.load_vocab("vocab.txt");
- 인코딩/디코딩:
1 auto ids = tokenizer.encode("Hello world!"); 2 std::string decoded = tokenizer.decode(ids);
성능
1174,000자 성능 테스트
2
3결과:
4토큰화: 2,159μs (22,000개 토큰)
5인코딩: 1,900μs
6디코딩: 430μs
7총 시간: 4.49ms
8처리량: 36.97MB/s
Ryzen 9 5900X @ -O3 릴리스 모드에서 벤치마크되었습니다.
사용 방법
헤더 파일을 추가합니다.
1#include "Modern-Text-Tokenizer.hpp"
그런 다음 컴파일합니다.
1g++ -std=c++17 -O3 -o tokenizer_demo main.cpp
BERT나 DistilBERT와 함께 사용하고 싶으신가요? 어휘 파일을 다운로드하세요.
1curl -O https://huggingface.co/distilbert/distilbert-base-uncased/raw/main/vocab.txt
크로스 플랫폼 CI 빌드
OS | Status |
---|---|
Ubuntu | ✅ |
Windows | ✅ |
GitHub Actions |
사용 사례
- C++로 ML 모델을 위한 텍스트 전처리
- 온디바이스 NLP(Python 오버헤드 없음)
- 고성능 CLI 도구
- 런타임 종속성이 없는 임베디드 시스템
지금 사용해 보세요
Modern Text Tokenizer가 출시되어 프로젝트에 바로 사용할 수 있습니다.
단 몇 초 만에 복제, 컴파일, 토큰화: Modern Text Tokenizer
댓글