top of page

Traduzindo Humanos para as Máquinas: A Arte da Tokenização

  • Foto do escritor: Roger Sampaio
    Roger Sampaio
  • há 14 horas
  • 7 min de leitura

Olá meus guerreiros. Como estão vocês? Espero que estejam felizes. É incontestável que a Inteligência Artificial vem crescendo exponencialmente e globalmente. Segundo pesquisas da Universidade de Stanford no relatório AI Index Report 2024, o número de organizações que adotaram soluções baseadas em IA aumentou mais de 2,5 vezes desde 2017, enquanto os investimentos privados anuais em IA superaram a marca de US$ 90 bilhões. Uma das aplicações da Inteligência Artificial é o processamento de linguagem natural (Natural Processing Language), base dos assistentes ChatGPT, DeepSeek, Gemini entre outros, e consiste na capacidade do computador compreender e principalmente interpretar a linguagem humana escrita ou falada, semelhante a ser um humano. Entretanto, apesar dessa aparente compreensão linguística, os computadores operam internamente apenas com representações numéricas. Textos presentes em relatórios, documentos ou conversas são convertidos em números por meio de técnicas matemáticas como, por exemplo, a tokenização. Caso pretenda trabalhar com a Inteligência Artificial, certamente ouvirá muito falar desse termo técnico. Apertem os cintos meus guerreiros, vamos decolar!



  1. O que é Tokenização?


Tokenização é o processo de dividir frases ou palavras em trechos menores, os quais são chamados de tókens, e representam as unidades básicas de processamento em modelos de linguagem natural. Os tókens podem incluir palavras inteiras, subpalavras, caracteres, dependendo da estratégia utilizada. O objetivo da tokenização é transformar o texto bruto em uma forma estruturada que possa ser convertida em representações numéricas, permitindo que algoritmos de aprendizado de máquina identifiquem padrões linguísticos e relações semânticas nos dados.

Guerreiro, suponha que tenhamos a seguinte frase:

Suponha que adotamos o método de tokenização por caractere espaço em branco, ou seja, todas as vezes que houver um espaço em branco será considero um novo tóken. O resultado da tokenização será:

Observe que teríamos 5 tókens. Atente que o último tóken contém a palavra 'poderosa' juntamente com o ponto final, sendo considerando apenas um único tóken 'poderosa.' Outra forma de tokenizar é por meio de caracteres, o qual cada caractere da frase é um tóken individual. Resultado:


Observações:

  • Letras com acento contam como 1 tóken (ê, é)

  • Espaços e o ponto final também são tókens, mas não entram na contagem das palavras.

  • O ponto (.) adiciona +1 tóken ao total da frase. Teríamos um total de 36 tókens. Certamente a primeira abordagem de tokenizar por espaço em branco é mais intuitiva para nós, porém para a máquina pode não ser.


Independente da estratégia de tokenização, cada tóken é representado por um número inteiro, chamado índice, que representa à posição desse tóken em um vocabulário previamente definido. Esse vocabulário associa cada tóken a um identificador numérico único, permitindo que o texto seja convertido em sequências de números. Guerreiro, vamos retornar ao método de tokenizar por espaço em branco, poderíamos simular o vocábulo simples gerado a partir da própria frase:


Índice

Tóken

0

A

1

Inteligência

2

Artificial

3

é

4

poderosa.

A partir desses índices, os modelos de linguagem conseguem acessar representações vetoriais (embeddings) que capturam informações sintáticas e semânticas, tornando possível o processamento matemático da linguagem natural por meio de redes neurais. Guerreiro, vamos relembrar o conceito de representação vetorial inicialmente no campo da Matemática e traduzindo posteriormente para a Inteligência Artificial.

Na Matemática, representação vetorial é uma forma de descrever um objeto usando vetor, que é uma sequência ordenada de números em espaço vetorial. Exemplos de três pontos no plano cartesiano, que podem corresponder a localizações de carros em um estacionamento. Os pontos A, B e C representam vetores.


Em IA, representações vetoriais são vetores numéricos usados para representar dados do mundo real de forma que algoritmos consigam aprender padrões. Como modelos só entendem números, tudo vira vetor, isso incluindo imagens, áudio entre outros elementos. A transformação da vetorização de palavras começa a partir da tokenização.

Embora no exemplo apresentado os vetores iniciem em zero e sigam uma progressão numérica crescente, essa organização não é uma regra geral. A atribuição dos índices depende diretamente do método de tokenização adotado, bem como da construção e do conteúdo do vocabulário utilizado. Não precisamos saber explicitamente quais são os índices gerados nos vetores, pois essa abstração é gerenciada automaticamente por baixo dos panos.


  1. Métodos de Tokenização


Existem diversos frameworks, bibliotecas para trabalhar com processamento de linguagem natural tais como NLTK (Natural Language Toolkit), spaCy, Gensim entre outros. Nesse artigo exploraremos os dois primeiros com exemplos didáticos para que realmente você consiga aprender.


Para facilitar e focar apenas na compreensão do conteúdo de tokenização, utilizaremos o Google Colab: uma plataforma que possibilita a criação e execução de notebooks abstraindo as questões técnicas sobre configuração de infraestrutura, cluster entre outros. O exercício está no Git, bastante apenas clonar e abrir como um novo projeto no Google Colab.


Entre alguns métodos de tokenização temos os seguintes:


3. Tokenização por frases (Sentence tokenization)

Conforme o próprio nome sugere, a tokenização ocorrerá por meio de frases, ou seja, sentenças ao invés de palavras. Torna-se uma etapa necessária para construção de aplicativos de IA que trabalhem com análise sintática de textos, resumos, traduções entre outros. Exemplo:


Tenho cinco frases ao longo do texto. Logo teríamos cinco tókens: cada frase representando um. Cabe revisar que cada tóken é representado por um índice numérico previamente mapeado pelo vocábulo. As frases estão sendo delimitadas através do ponto final, porém poderia ser outro delimitador como, por exemplo, interrogação. Ex: Como vai você? Estou bem. Teríamos duas frases e dois tókens.


Vamos reproduzir o resultado acima com a ferramenta NLTK inicialmente instalando-a através do comando pip. No momento que esse artigo está sendo escrito o artigo, o pacote NLTK está na versão 3.9.1.

Agora iremos efetuar o download de pacotes auxiliares, como o punkt e punkt_tab, que contêm modelos estatísticos para tokenização de sentenças e palavras no idioma desejado.

Carregaremos o método sent_tokenize (que efetuará a tokenização por frase) da biblioteca NLTK, em vez de importar toda a biblioteca. Em programação, podemos sempre carregar apenas os métodos que iremos usar explicitamente ou os módulos específicos necessários, o que ajuda a reduzir o consumo de memória, melhorar a legibilidade do código e tornar a execução mais eficiente. É fundamental definir o idioma correto por meio do parâmetro language, visto que cada língua possui regras próprias de pontuação e sintaxe.

Agora faremos com a biblioteca Spacy, inicialmente instalando-a usando o comando pip. A versão atual é a 3.8.15. Efetuaremos um download de um modelo pré-treinado do idioma, como o pt_core_news_sm para português, que inclui regras linguísticas, dicionário de palavras, segmentação de sentenças e informações sintáticas.



Com o modelo modelo_nlp_spacy carregado, utilizamos o atributo .sents do objeto Doc. Ele retorna um iterador com as frases previamente segmentadas pela pipeline de linguagem, permitindo percorrer as sentenças e extrair seus textos de maneira direta e performática. Observe:

No spaCy, é possível obter os IDs (índices) dos tokens diretamente, pois a biblioteca possui um vocabulário interno predefinido pelo modelo pré-treinado (pt_core_news_sm). Para isso, basta acessar os atributos .text (para a string) e .orth (para o ID numérico hash do token). Já na biblioteca NLTK isso não é possível de forma nativa, uma vez que ela não possui um vocabulário estático integrado aos tokenizadores, exigindo a criação manual de um mapeamento (dicionário) de palavras para números.




4. Tokenização por palavras (Word-Level)

É um método que consiste que dividir os textos em unidades discretas correspondentes a palavras inteiras, ou seja, cada palavra representa um tóken. Embora o método de tokenização por sub-palavras seja o mais usado em tarefas de processamento de linguagem natural, a tokenização por palavra pode ser útil em alguns cenários como, por exemplo, extração de entidades nomeadas. Essa é uma técnica que consiste em classificar palavras de um texto dentro de categorias definidas. Suponha que tenhamos o texto: "A Microsoft comprou o GitHub em 2018". A extração de entidades nomeadas identifica, classifica as palavras "Microsoft, GitHub" como organizações.

Na biblioteca NLTK para efetuar a tokenização por palavras basta usar o método word_tokenizer definindo o idioma de origem.

No spaCy, ao passar o texto pelo modelo pré-treinado modelo_nlp_spacy, a tokenização por palavras ocorre automaticamente. O resultado é um objeto Doc composto por instâncias de tóken, de onde extraímos o texto com token.text.

Guerreiro perceba que em ambos os casos, o resultado se manteve igual: 12 tókens ou palavras.


5. Tokenização por sub-palavras

É um método que divide o texto em pedaços menores de palavras (como prefixos, radicais e sufixos) quando a palavra inteira não é reconhecida. Para os seres humanos, esse método é menos intuitivo, porém foi desenvolvido para resolver limitações matemáticas das redes neurais — permitindo cobrir qualquer vocabulário com um número fixo de tokens, eliminar o problema de palavras desconhecidas e economizar memória computacional.

Ambas as ferramentas, NLTK e spaCy, não oferecem suporte nativo nem métodos diretos para tokenização por subpalavras. Historicamente, o NLTK possuía a classe BytePairTokenizer, mas ela não vinha pré-treinada, exigia o treinamento do BPE do zero e acabou sendo descontinuada em versões recentes. O spaCy, por sua vez, sempre priorizou a segmentação por palavras inteiras para análise linguística; apenas na versão 3.0 passou a permitir a integração com subpalavras de forma indireta, delegando essa tarefa ao pacote externo spacy-transformers.

A ausência desse recurso nativo ocorre porque ambas foram criadas na era do Processamento de Linguagem Natural (PLN) tradicional, com pipelines focados em regras gramaticais, pontuação e morfologia. Enquanto o NLTK mantinha soluções puramente didáticas e lentas em Python, as versões antigas do spaCy ignoravam completamente o conceito de subpalavras. Com a ascensão do Deep Learning e das LLMs, esse paradigma de tokenização por palavras inteiras tornou-se insuficiente para lidar com vocabulários dinâmicos e palavras fora do dicionário.

Na prática de mercado, a tokenização por subpalavras é realizada por bibliotecas especializadas e de altíssimo desempenho como a tokenizers (Hugging Face), sentencepiece (Google) ou tiktoken (OpenAI). Desenvolvidas em linguagens compiladas como Rust e C++, elas oferecem algoritmos otimizados (BPE, WordPiece, Unigram) e modelos pré-treinados prontos para uso em uma única linha de código, permitindo processar grandes volumes de texto com eficiência incomparável.


6. E no final das contas


Não citaremos nesse artigo os demais métodos de tokenização. Apesar de explorarmos via código diversas formas de tokenizar — seja pelo NLTK ou pelo spaCy —, atente-se principalmente ao conceito. Guerreiro, sempre vou bater nessa tecla: não é produtivo decorar código. Você precisa entender o que ele faz de verdade, ou seja, o que está acontecendo por baixo dos panos. Ainda mais agora, na era da Inteligência Artificial gerando código à velocidade da luz.

Gosto até de brincar: não seja um mero apertador de botões (aquele que só escreve o prompt para a IA e aperta o "play"). Domine o que acontece nos bastidores! Neste artigo, o foco é entender a fundo o conceito de tokenização, as suas diferentes formas, o mapeamento dos tókens para vetores de índices numéricos e a representação vetorial de palavras e frases para que os algoritmos de NLP aprendam associações e semântica de verdade. O tóken e o processo de tokenização são o coração da Inteligência Artificial Generativa. Em outras palavras, antes da matemática e dos vetores, tudo começa no tóken. Sem a tokenização, a Inteligência Artificial Generativa simplesmente não lê nem escreve uma única linha. Beijos no coração e até mais. Link do Git aqui. ou arquivo do notebook abaixo.



Comentários


bottom of page