🧠 Text Emotion Classifier (TF-IDF + SGDClassifier)

Este projeto é um classificador real de emoções em texto, implementado em Python usando scikit-learn.
Ele aprende padrões linguísticos estatísticos a partir de texto — não usa regras fixas, nem apenas “repete” frases do dataset.

O modelo classifica frases em quatro emoções básicas:

  • joy
  • sadness
  • anger
  • neutral

🔬 Como o modelo funciona

O sistema é composto por duas partes principais:

1️⃣ Vetorização de texto (TF-IDF)

O texto é convertido em números usando TF-IDF (Term Frequency–Inverse Document Frequency).

Isso transforma palavras em vetores que representam:

  • importância da palavra na frase
  • raridade da palavra no dataset

Ou seja:
👉 palavras comuns pesam menos
👉 palavras emocionalmente fortes pesam mais


2️⃣ Classificação com SGDClassifier

Para cada emoção existe um classificador binário independente:

  • joy → 0 ou 1
  • sadness → 0 ou 1
  • anger → 0 ou 1
  • neutral → 0 ou 1

Todos usam SGDClassifier com log_loss, que é equivalente a uma regressão logística treinada por gradiente descendente.

Isso significa que o modelo aprende pesos reais para cada palavra.


🧠 Isso é um modelo real?

Sim.
Mas é importante entender qual tipo de modelo ele é.

✔️ O que ele faz

  • Aprende associações estatísticas entre palavras e emoções
  • Generaliza para frases parecidas (não precisa estar no dataset)
  • Atualiza o aprendizado em tempo real (partial_fit)
  • Produz probabilidades reais (0.0 → 1.0)

❌ O que ele não faz

  • Não “entende” semântica profunda
  • Não tem memória contextual
  • Não é um modelo generativo
  • Não é deep learning

Ele é um modelo linear clássico, não um LLM.


📊 Quantos “parâmetros” ele tem?

Traduzindo para linguagem de IA generativa 👇

  • Cada palavra do vocabulário = um peso por emoção
  • Com max_features=5000:
    • ~5000 parâmetros por emoção
    • 4 emoções → ~20.000 parâmetros
    • 4 bias (um por classe)

🟢 Comparação:

  • SpectriaClassificator-v1.0(Esse modelo): ~20k parâmetros
  • MiniGPT 10M: 10.000.000 parâmetros
  • LLaMA 7B: 7.000.000.000 parâmetros
  • TellerAI-v1.0-0.0001B-Raw : 100k params

🔁 Treino incremental (online learning)

O modelo suporta aprendizado contínuo:

Digite 'treinar'
Digite a nova frase
Digite a emoção dominante


Isso atualiza os pesos imediatamente, sem reiniciar o treino.

⚠️ Observação:
Frases treinadas em tempo real não são salvas no dataset, apenas nos pesos em memória.

🧪 Exemplo de uso

Entrada:

não senti muita coisa especial


Saída:

neutral : 1.00 (Muito forte)
joy     : 0.12
sadness : 0.00
anger   : 0.00


O modelo generalizou corretamente a partir de frases similares, mas não idênticas ao dataset.

🛠️ Tecnologias usadas

Python 3.11

scikit-learn

pandas

TF-IDF

SGDClassifier

colorama (interface de terminal)

📌 Status do projeto

✔️ Funcional
✔️ Modelo treinável
✔️ Classificação probabilística
✔️ Código simples e extensível

Este projeto é ideal como:

base educacional

baseline de NLP

comparação com modelos neurais

experimento de aprendizado online

🧠 Filosofia do projeto

Este repositório não tenta fingir que é um LLM.

Ele mostra, de forma clara, que:

modelos simples ainda funcionam muito bem quando você entende o problema.

Clássico > mágico.

Feito por Arthur Samuel, um menino de 13 anos.
Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support