Este projeto é um classificador de emoções desenvolvido em Python, capaz de identificar a emoção predominante em uma frase escrita.
Ele utiliza Machine Learning tradicional (TF-IDF + Logistic Regression) para analisar textos e classificá-los em uma das seguintes emoções:
- alegria
- ansiedade
- calma
- raiva
- tristeza
O objetivo é aprender, na prática, como funciona um pipeline completo de Machine Learning aplicado a linguagem natural.
- Python 3.10+
- Pandas
- Scikit-Learn
- NumPy
- Joblib
classificador_emocoes_texto/
├── emotions_training.py # Treinamento do modelo
├── emotions_test.py # Testar o modelo manualmente
├── dataset_emocoes.csv # Dataset com frases e emoções
├── modelo_emocoes.pkl # Modelo treinado
├── requirements.txt # Dependências
└── README.md # Este arquivoO arquivo emotions_training.py:
- Lê o dataset CSV contendo frases e suas emoções.
- Converte as frases em vetores usando TF-IDF.
- Treina um modelo de Logistic Regression para classificação multiclasse.
- Avalia a acurácia no conjunto de teste.
- Salva o modelo treinado em
modelo_emocoes.pkl.
python3 emotions_training.pyO arquivo emotions_test.py permite digitar frases no terminal e ver a predição da IA:
python3 emotions_test.pyExemplo:
Digite uma frase: Estou muito feliz hoje
Predição: alegria (confiança 0.87)O dataset contém frases curtas representando diferentes emoções.
Você pode expandi-lo para melhorar o desempenho do modelo.
Formato:
texto,emocao
"Estou muito feliz hoje",alegria
"Sinto uma calma profunda",calma
"Estou nervoso com isso",ansiedadeEste projeto foi criado com foco educacional, para:
- Aprender os fundamentos de NLP com ML clássico
- Entender como montar um pipeline completo de classificação
- Experimentar com datasets próprios
- Servir como base para versões futuras usando modelos mais avançados (como Transformers / BERT)
- Melhorar o dataset com frases mais variadas
- Testar outros modelos (Naive Bayes, SVM)
- Criar API com FastAPI
- Criar interface web simples (React ou HTML)
- Migrar para modelos Transformers (DistilBERT)
Livre para estudo e uso pessoal.