Arthur Samuel Galego Panucci FIgueiredo commited on
Commit
f4ffb88
·
verified ·
1 Parent(s): 32f0daf

Update README.md

Browse files
Files changed (1) hide show
  1. README.md +170 -3
README.md CHANGED
@@ -1,3 +1,170 @@
1
- ---
2
- license: apache-2.0
3
- ---
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: apache-2.0
3
+ language:
4
+ - pt
5
+ pipeline_tag: text-classification
6
+ tags:
7
+ - emotionclassificator
8
+ - 20kparams
9
+ ---
10
+
11
+ # 🧠 Text Emotion Classifier (TF-IDF + SGDClassifier)
12
+
13
+ Este projeto é um **classificador real de emoções em texto**, implementado em Python usando **scikit-learn**.
14
+ Ele aprende padrões linguísticos estatísticos a partir de texto — não usa regras fixas, nem apenas “repete” frases do dataset.
15
+
16
+ O modelo classifica frases em quatro emoções básicas:
17
+
18
+ - joy
19
+ - sadness
20
+ - anger
21
+ - neutral
22
+
23
+ ---
24
+
25
+ ## 🔬 Como o modelo funciona
26
+
27
+ O sistema é composto por **duas partes principais**:
28
+
29
+ ### 1️⃣ Vetorização de texto (TF-IDF)
30
+
31
+ O texto é convertido em números usando **TF-IDF (Term Frequency–Inverse Document Frequency)**.
32
+
33
+ Isso transforma palavras em vetores que representam:
34
+ - importância da palavra na frase
35
+ - raridade da palavra no dataset
36
+
37
+ Ou seja:
38
+ 👉 palavras comuns pesam menos
39
+ 👉 palavras emocionalmente fortes pesam mais
40
+
41
+ ---
42
+
43
+ ### 2️⃣ Classificação com SGDClassifier
44
+
45
+ Para cada emoção existe **um classificador binário independente**:
46
+
47
+ - joy → 0 ou 1
48
+ - sadness → 0 ou 1
49
+ - anger → 0 ou 1
50
+ - neutral → 0 ou 1
51
+
52
+ Todos usam **SGDClassifier com log_loss**, que é equivalente a uma **regressão logística treinada por gradiente descendente**.
53
+
54
+ Isso significa que o modelo aprende **pesos reais** para cada palavra.
55
+
56
+ ---
57
+
58
+ ## 🧠 Isso é um modelo real?
59
+
60
+ **Sim.**
61
+ Mas é importante entender *qual tipo* de modelo ele é.
62
+
63
+ ### ✔️ O que ele faz
64
+ - Aprende associações estatísticas entre palavras e emoções
65
+ - Generaliza para frases parecidas (não precisa estar no dataset)
66
+ - Atualiza o aprendizado em tempo real (`partial_fit`)
67
+ - Produz probabilidades reais (0.0 → 1.0)
68
+
69
+ ### ❌ O que ele não faz
70
+ - Não “entende” semântica profunda
71
+ - Não tem memória contextual
72
+ - Não é um modelo generativo
73
+ - Não é deep learning
74
+
75
+ Ele é um **modelo linear clássico**, não um LLM.
76
+
77
+ ---
78
+
79
+ ## 📊 Quantos “parâmetros” ele tem?
80
+
81
+ Traduzindo para linguagem de IA generativa 👇
82
+
83
+ - Cada palavra do vocabulário = **um peso por emoção**
84
+ - Com `max_features=5000`:
85
+ - ~5000 parâmetros por emoção
86
+ - 4 emoções → **~20.000 parâmetros**
87
+ - + 4 bias (um por classe)
88
+
89
+ 🟢 Comparação:
90
+ - SpectriaClassificator-v1.0(Esse modelo): ~20k parâmetros
91
+ - MiniGPT 10M: 10.000.000 parâmetros
92
+ - LLaMA 7B: 7.000.000.000 parâmetros
93
+ - TellerAI-v1.0-0.0001B-Raw : 100k params
94
+
95
+ ---
96
+
97
+ ## 🔁 Treino incremental (online learning)
98
+
99
+ O modelo suporta **aprendizado contínuo**:
100
+
101
+ ```text
102
+ Digite 'treinar'
103
+ Digite a nova frase
104
+ Digite a emoção dominante
105
+
106
+
107
+ Isso atualiza os pesos imediatamente, sem reiniciar o treino.
108
+
109
+ ⚠️ Observação:
110
+ Frases treinadas em tempo real não são salvas no dataset, apenas nos pesos em memória.
111
+
112
+ 🧪 Exemplo de uso
113
+
114
+ Entrada:
115
+
116
+ não senti muita coisa especial
117
+
118
+
119
+ Saída:
120
+
121
+ neutral : 1.00 (Muito forte)
122
+ joy : 0.12
123
+ sadness : 0.00
124
+ anger : 0.00
125
+
126
+
127
+ O modelo generalizou corretamente a partir de frases similares, mas não idênticas ao dataset.
128
+
129
+ 🛠️ Tecnologias usadas
130
+
131
+ Python 3.11
132
+
133
+ scikit-learn
134
+
135
+ pandas
136
+
137
+ TF-IDF
138
+
139
+ SGDClassifier
140
+
141
+ colorama (interface de terminal)
142
+
143
+ 📌 Status do projeto
144
+
145
+ ✔️ Funcional
146
+ ✔️ Modelo treinável
147
+ ✔️ Classificação probabilística
148
+ ✔️ Código simples e extensível
149
+
150
+ Este projeto é ideal como:
151
+
152
+ base educacional
153
+
154
+ baseline de NLP
155
+
156
+ comparação com modelos neurais
157
+
158
+ experimento de aprendizado online
159
+
160
+ 🧠 Filosofia do projeto
161
+
162
+ Este repositório não tenta fingir que é um LLM.
163
+
164
+ Ele mostra, de forma clara, que:
165
+
166
+ modelos simples ainda funcionam muito bem quando você entende o problema.
167
+
168
+ Clássico > mágico.
169
+
170
+ Feito por Arthur Samuel, um menino de 13 anos.