Vtr100 commited on
Commit
bc776b7
·
verified ·
1 Parent(s): 63173b0

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +30 -6
app.py CHANGED
@@ -3,31 +3,55 @@ 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
  else:
12
- print(f"Aviso: modelo '{MODEL_PATH}' não encontrado. A predição usará modo simulado.")
13
 
14
  def predict_sentiment(text: str):
 
 
 
 
15
  if not text or text.strip() == "":
16
  return {"predição": "n/a", "confiança": 0.0}
 
 
17
  if baseline is None:
18
- return {"predição": "modelo não carregado", "confiança": 0.0}
 
 
 
19
  proba = baseline.predict_proba([text])[0]
20
  pred = int(np.argmax(proba))
21
  label = "positivo" if pred == 1 else "negativo"
22
  conf = float(np.max(proba))
23
- return {"predição": label, "confiança": conf}
24
 
 
25
  demo = gr.Interface(
26
  fn=predict_sentiment,
27
  inputs=gr.Textbox(label="Digite uma avaliação de produto"),
28
  outputs=gr.JSON(label="Resultado"),
29
- title="Análise de Sentimentos (Amazon Polarity)",
30
- description="Pipeline TF-IDF + Regressão Logística. Faça upload de baseline_pipe.pkl gerado no notebook."
 
 
 
 
 
 
 
 
31
  )
32
 
33
  if __name__ == "__main__":
 
3
  import numpy as np
4
  import os
5
 
6
+ # Caminho padrão do modelo
7
  MODEL_PATH = os.getenv("MODEL_PATH", "baseline_pipe.pkl")
8
 
9
+ # Tenta carregar o modelo treinado
10
  baseline = None
11
  if os.path.exists(MODEL_PATH):
12
+ try:
13
+ baseline = joblib.load(MODEL_PATH)
14
+ print(f"✅ Modelo carregado com sucesso: {MODEL_PATH}")
15
+ except Exception as e:
16
+ print(f"⚠️ Erro ao carregar o modelo '{MODEL_PATH}': {e}")
17
  else:
18
+ print(f"⚠️ Aviso: arquivo de modelo '{MODEL_PATH}' não encontrado. Executando em modo demonstração.")
19
 
20
  def predict_sentiment(text: str):
21
+ """
22
+ Realiza a predição de sentimento (positivo/negativo) ou simula resposta
23
+ se o modelo não estiver carregado.
24
+ """
25
  if not text or text.strip() == "":
26
  return {"predição": "n/a", "confiança": 0.0}
27
+
28
+ # Caso o modelo não esteja disponível
29
  if baseline is None:
30
+ fake_pred = "positivo" if "bom" in text.lower() else "negativo"
31
+ return {"predição": f"(simulado) {fake_pred}", "confiança": 0.0}
32
+
33
+ # Predição real
34
  proba = baseline.predict_proba([text])[0]
35
  pred = int(np.argmax(proba))
36
  label = "positivo" if pred == 1 else "negativo"
37
  conf = float(np.max(proba))
38
+ return {"predição": label, "confiança": round(conf, 4)}
39
 
40
+ # Interface Gradio
41
  demo = gr.Interface(
42
  fn=predict_sentiment,
43
  inputs=gr.Textbox(label="Digite uma avaliação de produto"),
44
  outputs=gr.JSON(label="Resultado"),
45
+ title="🛍️ Análise de Sentimentos (Amazon Polarity)",
46
+ description=(
47
+ "Classificador TF-IDF + Regressão Logística. "
48
+ "Caso o arquivo baseline_pipe.pkl não esteja presente, o sistema usa modo simulado."
49
+ ),
50
+ theme="soft",
51
+ examples=[
52
+ ["Este produto é incrível, recomendo muito!"],
53
+ ["Horrível, que desperdício de dinheiro."]
54
+ ],
55
  )
56
 
57
  if __name__ == "__main__":