luanarsilvaaa commited on
Commit
4bcc90c
·
verified ·
1 Parent(s): 9af5b9a

Upload 4 files

Browse files
Final_Project_ML_DL_Sentiment_Amazon.ipynb ADDED
The diff for this file is too large to render. See raw diff
 
README.md CHANGED
@@ -1,14 +1,55 @@
1
- ---
2
- title: Projeto
3
- emoji: 📉
4
- colorFrom: blue
5
- colorTo: blue
6
- sdk: gradio
7
- sdk_version: 5.49.1
8
- app_file: app.py
9
- pinned: false
10
- license: mit
11
- short_description: 'Projeto quarta '
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12
  ---
13
 
14
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
1
+
2
+ # Projeto Final — Análise de Sentimentos (Amazon Polarity)
3
+
4
+ **Curso**: Machine Learning e Deep Learning
5
+ **Data**: 2025-11-12
6
+ **Grupo**: _(preencha com os integrantes)_
7
+
8
+ ## 1. Definição do Problema
9
+ Classificar avaliações de produtos (Amazon) como **positivas** ou **negativas**.
10
+
11
+ **Justificativa**: problema real de PLN, com alto valor prático em e-commerce e suporte a decisões.
12
+
13
+ ## 2. Dataset
14
+ - **Fonte**: [Hugging Face — `amazon_polarity`](https://huggingface.co/datasets/amazon_polarity)
15
+ - **Tamanho**: milhões de exemplos (usamos amostra para execução rápida)
16
+ - **Divisão**: treino/validação/teste
17
+
18
+ ## 3. Metodologia
19
+ - **Pré-processamento**: limpeza básica de texto; TF‑IDF (ML) e tokenização simples (DL)
20
+ - **Modelos**:
21
+ - Baseline: TF‑IDF + Regressão Logística
22
+ - Comparativo: Random Forest
23
+ - Deep Learning: LSTM (PyTorch)
24
+ - **Métricas**: Accuracy, F1 (macro/weighted), Matriz de Confusão
25
+
26
+ ## 4. Resultados (resumo)
27
+ > _Inclua as tabelas e gráficos principais. Compare ML vs. DL e explique as diferenças observadas._
28
+
29
+ ## 5. Deploy (Hugging Face Spaces)
30
+ **Arquivos necessários**:
31
+ - `app.py`
32
+ - `requirements.txt`
33
+ - `baseline_pipe.pkl` (gerado pelo notebook)
34
+
35
+ **Passo a passo**:
36
+ 1. Crie uma conta em https://huggingface.co (ou use a sua).
37
+ 2. Clique em **Create new Space** → **Gradio** → **Python**.
38
+ 3. Faça **Upload** de `app.py`, `requirements.txt` e `baseline_pipe.pkl`.
39
+ 4. Aguarde o build do Space e teste a interface.
40
+ 5. Edite este **README** com prints da interface funcionando e links.
41
+
42
+ ## 6. Conclusões
43
+ - _Resumo dos achados e justificativas técnicas._
44
+ - _Limitações e próximos passos (ex.: transformers, tuning avançado, dados balanceados)._
45
+
46
+ ## 7. Como reproduzir localmente
47
+ ```bash
48
+ python -m venv .venv && source .venv/bin/activate # (Windows: .venv\Scripts\activate)
49
+ pip install -r requirements.txt
50
+ python app.py
51
+ ```
52
+
53
  ---
54
 
55
+ > **Observação**: Este repositório/Space cumpre os **entregáveis**: notebook, deploy funcional e documentação.
app.py ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ import gradio as gr
3
+ import joblib
4
+ import numpy as np
5
+ import os
6
+
7
+ # Carrega o pipeline baseline (TF-IDF + LogisticRegression)
8
+ MODEL_PATH = os.getenv("MODEL_PATH", "baseline_pipe.pkl")
9
+
10
+ if not os.path.exists(MODEL_PATH):
11
+ raise FileNotFoundError(f"Arquivo de modelo não encontrado: {MODEL_PATH}. Faça upload de baseline_pipe.pkl.")
12
+
13
+ baseline = joblib.load(MODEL_PATH)
14
+
15
+ def predict_sentiment(text: str):
16
+ if not text or text.strip() == "":
17
+ return {"predição": "n/a", "confiança": 0.0}
18
+ proba = baseline.predict_proba([text])[0]
19
+ pred = int(np.argmax(proba))
20
+ label = "positivo" if pred == 1 else "negativo"
21
+ conf = float(np.max(proba))
22
+ return {"predição": label, "confiança": conf}
23
+
24
+ demo = gr.Interface(
25
+ fn=predict_sentiment,
26
+ inputs=gr.Textbox(label="Digite uma avaliação de produto"),
27
+ outputs=gr.JSON(label="Resultado"),
28
+ title="Análise de Sentimentos (Amazon Polarity)",
29
+ description="Pipeline TF-IDF + Regressão Logística. Faça upload de baseline_pipe.pkl gerado no notebook."
30
+ )
31
+
32
+ if __name__ == "__main__":
33
+ demo.launch()
requirements.txt ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ datasets==3.0.1
3
+ pandas==2.2.2
4
+ numpy==2.1.3
5
+ scikit-learn==1.5.2
6
+ matplotlib==3.9.2
7
+ joblib==1.4.2
8
+ torch==2.4.1
9
+ tqdm==4.66.5
10
+ gradio==5.7.1