license: apache-2.0 language: - ru - en tags: - tokenizer - bpe - byte-level - russian - english - emoji
ARM Tokenizer
Байтовый BPE-токенизатор от NeoneAI для русского, английского и эмодзи.
Часть исследовательского проекта ARM.
Обзор
- Размер словаря: 65 536
- Алгоритм: Byte-level BPE
- Языки: русский + английский
- Эмодзи: поддерживаются
- Спецтокены:
<|endoftext|>,<|pad|>,<|user|>,<|assistant|>,<|system|>,<|bos|>,<|eos|> - Инструмент: Hugging Face Tokenizers
Зачем
Большинство открытых токенизаторов (GPT-2, LLaMA, Mistral) заточены под английский. ARM Tokenizer создан для русского + английского + эмодзи.
Он сжимает русский текст в 3.3 раза лучше, чем GPT-2, и обходит Gemma-2 (256k словарь) при словаре всего 65k.
Результаты
Все тесты на 1000 случайных реальных текстов
(500 русских + 500 английских) с фиксированным seed (42).
Погрешность: ±1%.
vs GPT-2 (50k)
| Метрика | ARM | GPT-2 |
|---|---|---|
| Всего токенов | 153 473 | 414 971 |
| Средний tok/char | 0.2965 | 0.8018 |
| Русский (500) | 111 803 | 371 960 |
| Английский (500) | 41 670 | 43 011 |
| Побед | 928 | 16 |
| Ничьих | 56 |
Итог: ARM на 63.02% ±1% эффективнее GPT-2. На русском ARM в 3.3 раза эффективнее GPT-2.
vs Gemma-2 (256k)
| Метрика | ARM | Gemma-2 |
|---|---|---|
| Всего токенов | 153 473 | 167 105 |
| Средний tok/char | 0.2965 | 0.3198 |
| Русский (500) | 111 803 | 126 941 |
| Английский (500) | 41 670 | 40 164 |
| Побед | 791 | 108 |
| Ничьих | 101 |
Итог: ARM на 8.16% ±1% эффективнее Gemma-2 в общем, и на 12% ±1% эффективнее на русском, при словаре всего 65k.
Воспроизведение тестов
В репозитории два скрипта:
test_gpt-2.py— сравнивает ARM Tokenizer с GPT-2 Tokenizertest_gemma-2.py— сравнивает ARM Tokenizer с Gemma-2 Tokenizer
Оба скрипта читают из папки sample/:
sample/gutenberg_sample.txt— 5000 английских текстов из Project Gutenbergsample/ru_books_sample.txt— 5000 русских текстов из RuHeritage-Corpus
Создать тестовые данные
python build_test_data.py