모던 텍스트 토크나이저 소개

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 빌드

OSStatus
Ubuntu
Windows
GitHub ActionsCI

사용 사례

  • C++로 ML 모델을 위한 텍스트 전처리
  • 온디바이스 NLP(Python 오버헤드 없음)
  • 고성능 CLI 도구
  • 런타임 종속성이 없는 임베디드 시스템

지금 사용해 보세요

Modern Text Tokenizer가 출시되어 프로젝트에 바로 사용할 수 있습니다.

단 몇 초 만에 복제, 컴파일, 토큰화: Modern Text Tokenizer