Presentazione di Modern Text Tokenizer

I moderni modelli di elaborazione del linguaggio naturale (NLP) come BERT, DistilBERT e altre architetture basate su trasformatori si basano fortemente su una tokenizzazione efficace. Tuttavia, gli sviluppatori C++ spesso si trovano ad affrontare opzioni limitate, come dipendenze eccessive, scarso supporto Unicode o mancanza di compatibilità con gli encoder basati su vocabolario.

Ecco perché ho creato Modern Text Tokenizer: un tokenizzatore C++ incredibilmente veloce, solo header, compatibile con UTF-8, senza dipendenze e pronto per il ML fin da subito.

Cosa lo rende unico?

  • Nessuna dipendenza – Nessun Boost, nessuna ICU, nessuna libreria esterna.
  • Sicuro per UTF-8 – Gestisce correttamente testo multilingue, emoji e caratteri multibyte.
  • Solo header – Inseriscilo nel tuo progetto e inizia.
  • Codifica del vocabolario – Carica vocab.txt da HuggingFace e genera gli ID token.
  • Pronto per Transformer – Supporta [CLS], [SEP], [PAD] e la formattazione sequenziale.

Caratteristiche principali

  • Rapida ramificazione ASCII vs Unicode tramite std::string_view
  • API fluida per la configurazione:
    1  TextTokenizer tokenizer;
    2  tokenizer
    3    .set_lowercase(true)
    4    .set_split_on_punctuation(true)
    5    .set_keep_punctuation(true);
  • Carica vocabolari:
    1  tokenizer.load_vocab("vocab.txt");
  • Codifica / Decodifica:
    1  auto ids = tokenizer.encode("Hello world!");
    2  std::string decoded = tokenizer.decode(ids);

Prestazione

1Test delle prestazioni con 174.000 caratteri
2
3Risultati:
4Tokenizzazione: 2.159 μs (22.000 token)
5Codifica: 1.900 μs
6Decodifica: 430 μs
7Tempo totale: 4,49 ms
8Throughput: 36,97 MB/s

Benchmark eseguito su Ryzen 9 5900X @ -O3 in modalità di rilascio.

Come si usa

Aggiungere il file di intestazione:

1#include "Modern-Text-Tokenizer.hpp"

Quindi compilare:

1g++ -std=c++17 -O3 -o tokenizer_demo main.cpp

Vuoi usarlo con BERT o DistilBERT? Scarica semplicemente il file del vocabolario:

1curl -O https://huggingface.co/distilbert/distilbert-base-uncased/raw/main/vocab.txt

Build CI multipiattaforma

OSStatus
Ubuntu
Windows
GitHub ActionsCI

Casi d’uso

  • Pre-elaborazione del testo per modelli ML in C++
  • NLP sul dispositivo (nessun sovraccarico Python)
  • Strumenti CLI ad alte prestazioni
  • Sistemi embedded senza dipendenze runtime

Provalo ora

Modern Text Tokenizer è attivo e pronto per i tuoi progetti.

Clona, compila e tokenizza in pochi secondi: Modern Text Tokenizer