Um projeto de teste para criação de um tokenizer para LLMs, atualmente implementa dois modos: quebra conservadora, e quebra agressiva.
- Conservative: preserva palavras compostas (e.g., "co-working", "Let's") e separa apenas em pontuações pesadas e espaços.
- Aggressive: separa símbolos intermediários como hífens, apóstrofes e barras, para gerar tokens mais fragmentados, ideal para pré-processamento de LLMs.
Não é uma lib. (até o momento)
Inicialize o tokenizer informando as opções desejadas:
const Tokenizer = @import("tokenizer.zig").Tokenizer;
const tokenizer = Tokenizer.init(true, .Agressive);
const input = "Olá, Mundo!";
const tokens = try tokenizer.tokenize(allocator, input);
- Tokenização de palavras, pontuação e símbolos intermediários.
- Suporte a modos Conservative e Aggressive.
- Offsets para reconstrução reversível.
- Lowercasing opcional.
- BPE (Byte-Pair Encoding) após tokenização.
- Suporte completo a Unicode (caracteres acentuados, scripts orientais, etc).
- Tratamento especial para emojis e símbolos complexos.