Isaacdsn1 commited on
Commit
09cca0d
·
verified ·
1 Parent(s): 6282fdd

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +29 -26
app.py CHANGED
@@ -1,33 +1,36 @@
1
  import gradio as gr
2
- import joblib
3
- import numpy as np
4
  import os
5
 
6
- MODEL_PATH = os.getenv("MODEL_PATH", "baseline_pipe.pkl")
 
 
 
7
 
8
- baseline = None
9
- if os.path.exists(MODEL_PATH):
10
- baseline = joblib.load(MODEL_PATH)
 
 
 
11
 
12
- def predict_sentiment(text: str):
13
- if not text or text.strip() == "":
14
- return {"predição": "n/a", "confiança": 0.0}
15
- if baseline is None:
16
- # Mensagem amigável quando o modelo ainda não foi enviado
17
- return {"erro": "Modelo não encontrado. Envie baseline_pipe.pkl nos Files do Space."}
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="Envie o arquivo baseline_pipe.pkl na aba Files para ativar o modelo."
30
- )
 
31
 
32
- if __name__ == "__main__":
33
- demo.launch()
 
 
 
 
 
 
 
 
1
  import gradio as gr
2
+ import pickle
 
3
  import os
4
 
5
+ # ==============================
6
+ # 1. Carregar o modelo
7
+ # ==============================
8
+ MODEL_PATH = "baseline_pipe.pkl"
9
 
10
+ def load_model():
11
+ if not os.path.exists(MODEL_PATH):
12
+ return None
13
+ with open(MODEL_PATH, "rb") as f:
14
+ model = pickle.load(f)
15
+ return model
16
 
17
+ model = load_model()
 
 
 
 
 
 
 
 
 
 
18
 
19
+ # ==============================
20
+ # 2. Função de predição
21
+ # ==============================
22
+ def predict_sentiment(text):
23
+ if model is None:
24
+ return {
25
+ "erro": "Modelo não encontrado. Envie baseline_pipe.pkl nos Files do Space."
26
+ }
27
 
28
+ try:
29
+ pred = model.predict([text])[0]
30
+ proba = model.predict_proba([text]).max()
31
+
32
+ label = "positivo" if pred == 1 else "negativo"
33
+
34
+ return {
35
+ "sentimento": label,
36
+ "confianca": float(round(proba,