icarolimaspfc commited on
Commit
dcd5f19
·
verified ·
1 Parent(s): 34ce264

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +36 -17
app.py CHANGED
@@ -1,33 +1,52 @@
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 numpy as np
 
3
 
4
+ # Apenas importa as bibliotecas necessárias para a interface
5
+ # As importações de joblib e os/os.path foram removidas, pois não são mais necessárias
6
 
7
+ # Dicionários de palavras para a lógica de classificação simples
8
+ PALAVRAS_POSITIVAS = ["bom", "ótimo", "excelente", "adorei", "perfeito", "recomendo"]
9
+ PALAVRAS_NEGATIVAS = ["ruim", "péssimo", "decepção", "terrível", "não gostei", "horrível"]
10
+
11
+ # Removemos a variável MODEL_PATH e a tentativa de carregar o modelo.
12
+ # O baseline agora é implicitamente None, mas a função abaixo lidará com a previsão.
13
 
14
  def predict_sentiment(text: str):
15
+ """
16
+ Simula a previsão de sentimento baseada em palavras-chave (dummy).
17
+ """
18
  if not text or text.strip() == "":
19
  return {"predição": "n/a", "confiança": 0.0}
20
+
21
+ # Prepara o texto para análise
22
+ texto_lower = text.lower()
23
+
24
+ # 1. Contagem de palavras positivas e negativas
25
+ pontos_pos = sum(1 for palavra in PALAVRAS_POSITIVAS if palavra in texto_lower)
26
+ pontos_neg = sum(1 for palavra in PALAVRAS_NEGATIVAS if palavra in texto_lower)
27
+
28
+ # 2. Lógica de Decisão
29
+ if pontos_pos > pontos_neg:
30
+ label = "positivo"
31
+ # Confiança simples, baseada na diferença de pontos
32
+ conf = float(0.5 + min(0.49, (pontos_pos - pontos_neg) * 0.1))
33
+ elif pontos_neg > pontos_pos:
34
+ label = "negativo"
35
+ conf = float(0.5 + min(0.49, (pontos_neg - pontos_pos) * 0.1))
36
+ else:
37
+ # Neutro ou palavras não encontradas
38
+ label = "n/a (neutro ou ambíguo)"
39
+ conf = 0.5
40
+
41
+ return {"predição": label, "confiança": round(conf, 4)}
42
 
43
  demo = gr.Interface(
44
  fn=predict_sentiment,
45
  inputs=gr.Textbox(label="Digite uma avaliação de produto"),
46
  outputs=gr.JSON(label="Resultado"),
47
+ title="Análise de Sentimentos (Simulada - Sem Modelo)",
48
+ description="Este aplicativo roda sem o baseline_pipe.pkl, usando uma classificação simples por palavras-chave."
49
  )
50
 
51
  if __name__ == "__main__":
52
+ demo.launch()