projetoteste / app.py
icarolimaspfc's picture
Update app.py
dcd5f19 verified
import gradio as gr
import numpy as np
# Apenas importa as bibliotecas necessárias para a interface
# As importações de joblib e os/os.path foram removidas, pois não são mais necessárias
# Dicionários de palavras para a lógica de classificação simples
PALAVRAS_POSITIVAS = ["bom", "ótimo", "excelente", "adorei", "perfeito", "recomendo"]
PALAVRAS_NEGATIVAS = ["ruim", "péssimo", "decepção", "terrível", "não gostei", "horrível"]
# Removemos a variável MODEL_PATH e a tentativa de carregar o modelo.
# O baseline agora é implicitamente None, mas a função abaixo lidará com a previsão.
def predict_sentiment(text: str):
"""
Simula a previsão de sentimento baseada em palavras-chave (dummy).
"""
if not text or text.strip() == "":
return {"predição": "n/a", "confiança": 0.0}
# Prepara o texto para análise
texto_lower = text.lower()
# 1. Contagem de palavras positivas e negativas
pontos_pos = sum(1 for palavra in PALAVRAS_POSITIVAS if palavra in texto_lower)
pontos_neg = sum(1 for palavra in PALAVRAS_NEGATIVAS if palavra in texto_lower)
# 2. Lógica de Decisão
if pontos_pos > pontos_neg:
label = "positivo"
# Confiança simples, baseada na diferença de pontos
conf = float(0.5 + min(0.49, (pontos_pos - pontos_neg) * 0.1))
elif pontos_neg > pontos_pos:
label = "negativo"
conf = float(0.5 + min(0.49, (pontos_neg - pontos_pos) * 0.1))
else:
# Neutro ou palavras não encontradas
label = "n/a (neutro ou ambíguo)"
conf = 0.5
return {"predição": label, "confiança": round(conf, 4)}
demo = gr.Interface(
fn=predict_sentiment,
inputs=gr.Textbox(label="Digite uma avaliação de produto"),
outputs=gr.JSON(label="Resultado"),
title="Análise de Sentimentos (Simulada - Sem Modelo)",
description="Este aplicativo roda sem o baseline_pipe.pkl, usando uma classificação simples por palavras-chave."
)
if __name__ == "__main__":
demo.launch()