Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

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
3 respostas

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 
solução!

Oi, Ricardo! Tudo bem?

Agradeço por dividir novamente seus aprendizados e contribuir de forma tão consistente com a comunidade Alura.

Sua explicação ficou muito clara e bem encadeada, e é importante como você conecta teoria e prática ao detalhar o carregamento do modelo, o uso de checkpoints em português e a interpretação correta das classes no processo de fine-tuning.

É muito positivo ver esse cuidado em documentar boas práticas e refletir sobre avaliação e limitações do modelo, isso fortalece bastante o aprendizado contínuo.

Dica: experimente comparar os resultados entre dois checkpoints diferentes em português e registre as diferenças de comportamento do modelo, isso ajuda a aprofundar a análise crítica sobre desempenho e generalização.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!

Olá Rafaela, agradeço pela análise e pela sugestão. Colocarei em prática.
Att,
Ricardo