Conceitos de IA em Python

Tokenização: vocabulário, one-hot e byte pair encoding em Python

Redes neurais só entendem números, então o texto é primeiro dividido em tokens e cada token recebe um id. Modelos de linguagem como o GPT usam byte pair encoding, que cria tokens a partir de pedaços frequentes de palavras.

O conceito em palavras simples

Redes neurais só entendem números, então o texto é primeiro dividido em tokens e cada token recebe um id. Modelos de linguagem como o GPT usam byte pair encoding, que cria tokens a partir de pedaços frequentes de palavras.

Transforme texto em números como os modelos de linguagem: monte um vocabulário, codifique palavras em one-hot e aprenda subpalavras com BPE.

Ideias principais

  • Um token é uma unidade de texto, como uma palavra, parte de uma palavra ou um caractere.
  • Vetores one-hot são simples, mas ficam muito longos com vocabulários grandes.
  • O BPE lida com palavras raras e novas dividindo-as em pedaços conhecidos.
  • Depois, os modelos convertem cada id de token em um vetor aprendido chamado embedding.

Quando usar?

  • Entender o que acontece dentro das redes neurais e das bibliotecas de IA.
  • Aprender a ideia antes de implementá-la nos desafios correspondentes.
  • Se preparar para cursos de aprendizado de máquina, entrevistas e projetos.

Veja na prática

Digite sua própria frase para montar um vocabulário e clique em Passo para ver o byte pair encoding juntar o par mais frequente.

Código de exemplo

Executar código →
main.py
from collections import Counter

text = "the cat sat on the mat"

# 1. Build a vocabulary: every distinct word gets an id.
words = text.split()
vocab = {word: i for i, word in enumerate(sorted(set(words)))}
print("vocab:", vocab)
print("ids:", [vocab[w] for w in words])

# 2. One-hot encoding: a vector with a single 1 at the word's id.
def one_hot(word):
    return [1 if vocab[word] == i else 0 for i in range(len(vocab))]
print("one-hot 'cat':", one_hot("cat"))

# 3. Byte pair encoding: repeatedly merge the most frequent pair of symbols.
tokens = list("banana")
for _ in range(2):
    pairs = Counter(zip(tokens, tokens[1:]))
    best = max(pairs, key=pairs.get)
    merged, i = [], 0
    while i < len(tokens):
        if i + 1 < len(tokens) and (tokens[i], tokens[i + 1]) == best:
            merged.append(tokens[i] + tokens[i + 1])
            i += 2
        else:
            merged.append(tokens[i])
            i += 1
    tokens = merged
    print("merge", best, "->", tokens)

Saída esperada

vocab: {'cat': 0, 'mat': 1, 'on': 2, 'sat': 3, 'the': 4}
ids: [4, 0, 3, 2, 4, 1]
one-hot 'cat': [1, 0, 0, 0, 0]
merge ('a', 'n') -> ['b', 'an', 'an', 'a']
merge ('b', 'an') -> ['ban', 'an', 'a']

Como funciona

O vocabulário associa cada palavra distinta a um id, e a frase vira uma lista de ids. Um vetor one-hot só tem 1 na posição do id da palavra. O BPE conta os pares de símbolos vizinhos e junta o mais frequente, primeiro ('a', 'n') e depois ('b', 'an').

Altere os valores e execute o programa no compilador Python online CodeUtility sem instalar Python.

Exercícios práticos

Altere as entradas e teste casos de borda antes de usar conjuntos de dados maiores.

  1. Mude as entradas ou os pesos e preveja a saída antes de executar.
  2. Imprima os valores intermediários para acompanhar cada passo do cálculo.
  3. Resolva os desafios indicados abaixo para implementar a ideia você mesmo.
Executar no IDE Python →

Pratique com um desafio

Use o conteúdo desta lição para resolver um problema real. Cada desafio roda no navegador, com testes instantâneos e uma revisão por IA.

Todos os desafios