1
resposta

Modelos de NLP em Português com Hugging Face

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

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
1 resposta

8 Avaliação do Modelo

Deve considerar métricas como acurácia, matriz de confusão e análise de erros

# Código Exemplo
Python
avaliacao = modelo.evaluate(X.data, y)
print(f"Acurácia: {avaliacao.4f}")
Show more lines

# Boas Práticas
1. Analise exemplos de erros para identificar padrões
2. Use gráficos para visualizar o desempenho

9 Predição Manual (sem pipeline)

- Explicação Teórica
A predição manual permite acessar diretamente os logits e interpretar a saída do modelo, 
útil para depuração.

# Código Exemplo
Python
entrada = tokenizer(
"O produto chegou quebrado e atrasado.",
return_tensors="tf",
truncation=True,
padding=True
)
logits = modelo(entrada).logits
predicao = tf.math.argmax(logits, axis=1).numpy()[0]
print("Classe prevista:", id2label[predicao])
Show more lines

# Boas Práticas
1. Útil para análise detalhada de casos específicos.

10 Salvando e Carregando o Modelo Treinado

# Código Exemplo
Python
modelo.save_pretrained("./modelo_treinado")
tokenizer.save_pretrained("./modelo_treinado")
modelo_finetuned = TFAutoModelForSequenceClassification.from_pretrained("./modelo_treinado")
tokenizer_finetuned = AutoTokenizer.from_pretrained("./modelo_treinado")
Show more lines

# Boas Práticas
1. Salve versões intermediárias para evitar perda de progresso.
2. Documente o caminho dos arquivos salvos.

11 Discussão e Boas Práticas Gerais

# Discussão
1.	O modelo captou nuances do português?
2.	Houve dificuldade com ironia, negação ou frases curtas?
3.	O dataset influenciou o desempenho?
4.	O modelo generaliza bem?

# Boas Práticas Gerais
1. Teste diferentes modelos e técnicas de data augmentation.
2. Documente todo o processo para facilitar reprodutibilidade.
3. Analise limitações e proponha melhorias.

12 Considerações Finais

- O uso de modelos pré-treinados torna mais simples as tarefas de NLP em português, 
enquanto o fine-tuning melhora os resultados e é uma prática recomendada até mesmo 
para quem está começando. 

- Entre as perspectivas futuras estão:
1. a avaliação de novos modelos, 
2. a ampliação de datasets
3. a exploração de técnicas de data augmentation.

13 Referências

1.	Artigos sobre Transformers
2.	Documentação do Hugging Face
3.	Papers do BERTimbau
4.	Materiais do curso da Alura