Por Ricardo Costa Val do Rosário auxiliado por Microsoft CoPilot
1 Introdução
- O Processamento de Linguagem Natural (PLN) avançou rapidamente com a chegada de
modelos pré-treinados baseados em Transformers. No caso do português, projetos como
o BERTimbau facilitaram muito o acesso a modelos robustos e bem adaptados ao idioma.
- Este documento traz um guia prático para usar modelos pré-treinados em português com
a biblioteca Transformers, passando pelo carregamento do modelo, fine-tuning e avaliação.
2 Principais Configurações de Carregamento de Modelo
O transfer learning permite adaptar modelos já treinados em grandes corpora para tarefas
específicas, economizando tempo e recursos. Os parâmetros de configuração são essenciais
para garantir que o modelo compreenda corretamente as classes e o formato dos dados.
3 Parâmetros Essenciais
# label2id / id2label:
Dicionários que mapeiam nomes das classes para índices numéricos e vice-versa.
Fundamental para garantir que as previsões do modelo sejam interpretadas
corretamente.
# num_labels:
Número total de classes previstas pelo modelo.
# from_pt:
Indica se o modelo deve ser carregado a partir de um checkpoint treinado em PyTorch.
Não tem relação com o idioma português.
# checkpoint_modelo:
Nome ou caminho do modelo pré-treinado. Recomenda-se usar checkpoints específicos
para português, como “neuralmind/bert-base-portuguese-cased”.
# Boas Práticas
1. Verifique se o mapeamento de classes está correto
2. Prefira checkpoints adaptados ao português
3. Documente as configurações para facilitar reprodutibilidade
4 Carregamento do Modelo e Tokenizer
Responsável por transformar o texto em tokens compreendidos pelo modelo.
Modelos Transformers utilizam tokenização subword, o que aumenta a flexibilidade para
diferentes idiomas.
# Código Exemplo
Python
from transformers import AutoTokenizer, TFAutoModelForSequenceClassification
checkpoint_modelo = "neuralmind/bert-base-portuguese-cased"
label2id = {"negativo": 0, "neutro": 1, "positivo": 2}
id2label = {0: "negativo", 1: "neutro", 2: "positivo"}
modelo = TFAutoModelForSequenceClassification.from_pretrained(
checkpoint_modelo,
num_labels=len(label2id),
id2label=id2label,
label2id=label2id,
from_pt=True
)
tokenizer = AutoTokenizer.from_pretrained(checkpoint_modelo)
Show more lines
# Boas Práticas
1. Sempre confira se o tokenizer corresponde ao modelo
2. Use checkpoints oficiais para garantir compatibilidade
5 Pipeline de Inferência (Predição)
O pipeline facilita a inferência, encapsulando o modelo e o tokenizer em uma interface simples
para classificação de textos.
# Código Exemplo
Python
from transformers import TextClassificationPipeline
pipeline_classificacao = TextClassificationPipeline(
model=modelo,
tokenizer=tokenizer,
return_all_scores=True
)
texto = "O atendimento foi excelente, gostei muito!"
resultado = pipeline_classificacao(texto)
print(resultado)
Show more lines
# Boas Práticas
1. Teste com frases variadas para validar o comportamento do modelo
2. Analise os scores de todas as classes para identificar ambiguidades
6 Preparação dos Dados para Treino
A tokenização, truncamento e padding são etapas fundamentais para garantir que todos os textos
tenham o mesmo tamanho e formato.
# Código Exemplo
Python
import tensorflow as tf
def tokenize(batch):
return tokenizer(
batch,
padding=True,
truncation=True,
max_length=128,
return_tensors="tf"
)
X = tokenize(textos)
y = tf.convert_to_tensor(labels)
Show more lines
# Boas Práticas
1. Padronize o tamanho dos textos para evitar erros de shape
2. Balanceie as classes no dataset para evitar viés
7 Treinamento do Modelo
O otimizador, a função de perda e a métrica são partes fundamentais para ajustar os pesos
do modelo durante o treinamento
# Código Exemplo
Python
optimizer = tf.keras.optimizers.Adam(learning_rate=2e-5)
loss = tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True)
metric = tf.keras.metrics.SparseCategoricalAccuracy("accuracy")
modelo.compile(optimizer=optimizer, loss=loss, metrics=[metric])
historico = modelo.fit(
X.data,
y,
epochs=3,
batch_size=16,
validation_split=0.1
)
Show more lines
# Boas Práticas
1. Use validação para monitorar overfitting
2. Ajuste o número de épocas conforme o tamanho do dataset