Classificação de Texto com IA: Detectando Temas e Categorias

Aprenda a classificar automaticamente textos por tema com Python usando modelos da Hugging Face. Projeto prático com NLP e IA.

Compartilhe

Como Classificar Textos com IA e Python (Zero-Shot Classification)
Essa é a parte 17 de 24 na série 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:

  1. Receba vários textos de entrada (pode ser uma lista)
  2. Classifique cada um nas categorias: educação, segurança, meio ambiente, política, saúde
  3. 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
Navegação<< Inteligência Artificial com Python: Fundamentos e Primeira Integração com a OpenAIGeração de Texto com IA: Criando Respostas Inteligentes com Python >>

Uma resposta

  1. 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)”)

    ´´´

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.