Présentation de Modern Text Tokenizer

Les modèles modernes de traitement du langage naturel (TALN) comme BERT, DistilBERT et d’autres architectures basées sur des transformateurs reposent fortement sur une tokenisation efficace. Cependant, les développeurs C++ sont souvent confrontés à des options limitées, comme des dépendances excessives, une mauvaise prise en charge d’Unicode ou un manque de compatibilité avec les encodeurs basés sur le vocabulaire.

C’est pourquoi j’ai créé Modern Text Tokenizer: un tokenizer C++ ultra-rapide, uniquement en-tête, compatible UTF-8, sans dépendance et compatible ML, prêt à l’emploi.

Ce qui le rend unique?

  • Zéro dépendance: pas de Boost, pas d’ICU, pas de bibliothèques externes.
  • Sécurité UTF-8: gestion correcte du texte multilingue, des emojis et des caractères multioctets.
  • Uniquement en-tête: intégrez-le à votre projet et c’est parti.
  • Encodage de vocabulaire – Chargez vocab.txt depuis HuggingFace et générez des identifiants de jetons.
  • Prêt pour Transformer – Prend en charge CLS, [SEP], [PAD] et le formatage de séquence.

Principales fonctionnalités

  • Branchement rapide ASCII vs Unicode grâce à std::string_view
  • API fluide pour la configuration:
    1  TextTokenizer tokenizer;
    2  tokenizer
    3    .set_lowercase(true)
    4    .set_split_on_punctuation(true)
    5    .set_keep_punctuation(true);
  • Charger les vocabulaires :
    1  tokenizer.load_vocab("vocab.txt");
  • Encoder / Décodage :
    1  auto ids = tokenizer.encode("Hello world!");
    2  std::string decoded = tokenizer.decode(ids);

Performance

1Test de performance avec 174000 caractères
2
3Résultats:
4Tokenisation: 2159μs (22000 jetons)
5Encodage: 1900 μs
6Décodage: 430 μs
7Durée totale: 4,49 ms
8Débit: 36,97 Mo/s

Évaluation effectuée sur Ryzen 9 5900X @ -O3 en mode release.

Mode d’emploi

Ajouter le fichier d’en-tête:

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

Puis compilez :

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

Vous souhaitez l’utiliser avec BERT ou DistilBERT? Téléchargez simplement le fichier de vocabulaire:

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

Builds CI multiplateformes

OSStatus
Ubuntu
Windows
GitHub ActionsCI

Cas d’utilisation

  • Prétraitement de texte pour modèles ML en C++
  • Traitement automatique du langage naturel (TALN) sur l’appareil (sans surcharge Python)
  • Outils CLI hautes performances
  • Systèmes embarqués sans dépendances d’exécution

Essayez-le maintenant

Modern Text Tokenizer est opérationnel et prêt à l’emploi pour vos projets.

Clonez, compilez et tokenisez en quelques secondes: Modern Text Tokenizer