This entry is parte 17 de 24 in the series Python + IA: Fundamentos e Projetos Práticos
Python + IA: Fundamentos e Projetos Práticos
Hoje vamos além dos sentimentos. Você vai aprender como classificar textos em categorias usando modelos de Machine Learning e NLP com Python — por exemplo: detectar se um texto é sobre política, esportes, tecnologia ou saúde.
Essa técnica é fundamental para criar sistemas inteligentes de triagem, como filtros de e-mail, categorização automática de notícias, bots de atendimento e muito mais.
🧠 O que é Classificação de Texto?
A classificação de texto é uma tarefa de Processamento de Linguagem Natural (PLN) onde um modelo aprende a atribuir uma categoria ou rótulo a um texto.
Exemplos práticos:
- Detectar assuntos de e-mails (spam, urgente, pessoal, etc.)
- Classificar notícias por tema
- Identificar áreas de interesse em formulários ou feedbacks
🧰 O que vamos usar
- Python 3.10+
- Biblioteca
transformers - Modelo:
facebook/bart-large-mnli(modelo de inferência natural para múltiplas classes)
📦 Instalando o que precisamos
pip install transformers
pip install torch
✍️ Código: Classificando Temas de Texto
from transformers import pipeline
# Define as categorias possíveis
categorias = ["tecnologia", "política", "esportes", "economia", "saúde"]
# Cria o classificador com modelo NLI
classificador = pipeline("zero-shot-classification", model="facebook/bart-large-mnli")
# Texto a ser classificado
texto = "O novo iPhone foi lançado com diversas inovações em IA e desempenho gráfico."
# Classifica
resultado = classificador(texto, candidate_labels=categorias)
# Mostra as categorias com pontuação
for categoria, score in zip(resultado["labels"], resultado["scores"]):
print(f"{categoria}: {round(score * 100, 2)}%")
💡 Explicando o Código
pipeline("zero-shot-classification"): permite classificar sem precisar treinar o modelo antes!candidate_labels: categorias possíveis que queremos testar- O modelo retorna uma probabilidade para cada categoria
📊 Resultado esperado
tecnologia: 96.54%
economia: 1.87%
política: 0.79%
esportes: 0.5%
saúde: 0.3%
🎯 Desafio do Dia
Crie um script que:
- Receba vários textos de entrada (pode ser uma lista)
- Classifique cada um nas categorias:
educação,segurança,meio ambiente,política,saúde - Mostre qual categoria foi mais detectada no conjunto de textos
🔧 Dica bônus
Você pode adaptar para outros contextos, como:
- Detectar setores de chamados em help desk
- Classificar reclamações por tipo
- Aplicar em bots que direcionam atendimento automaticamente
Uma resposta
Colinha pro Desafio:
´´´
from transformers import pipeline
from collections import Counter
# Define categorias
categorias = [“educação”, “segurança”, “meio ambiente”, “política”, “saúde”]
# Cria pipeline com modelo zero-shot
classificador = pipeline(“zero-shot-classification”, model=”facebook/bart-large-mnli”)
# Lista de textos para classificar
textos = [
“O governo anunciou um novo plano de segurança para reduzir a criminalidade nas cidades.”,
“As mudanças climáticas estão afetando a biodiversidade das florestas tropicais.”,
“Foi aprovado um aumento de verba para escolas públicas.”,
“O congresso debateu hoje uma nova reforma política.”,
“Campanhas de vacinação estão sendo realizadas para conter surtos de doenças.”
]
# Armazena as categorias detectadas
categorias_detectadas = []
# Classifica cada texto
for texto in textos:
resultado = classificador(texto, candidate_labels=categorias)
categoria_top = resultado[“labels”][0] # Categoria com maior score
print(f”Texto: {texto}\n➡️ Categoria: {categoria_top}\n”)
categorias_detectadas.append(categoria_top)
# Conta ocorrências por categoria
contagem = Counter(categorias_detectadas)
# Exibe resumo
print(“📊 Contagem Final:”)
for cat, qtd in contagem.items():
print(f”{cat}: {qtd} ocorrência(s)”)
# Categoria mais comum
categoria_mais_detectada = contagem.most_common(1)[0]
print(f”\n🏆 Categoria mais detectada: {categoria_mais_detectada[0]} ({categoria_mais_detectada[1]}x)”)
´´´