|
|
|
|
|
import gradio as gr |
|
|
import joblib |
|
|
import numpy as np |
|
|
import os |
|
|
|
|
|
|
|
|
MODEL_PATH = os.getenv("MODEL_PATH", "baseline_pipe.pkl") |
|
|
|
|
|
if not os.path.exists(MODEL_PATH): |
|
|
raise FileNotFoundError(f"Arquivo de modelo não encontrado: {MODEL_PATH}. Faça upload de baseline_pipe.pkl.") |
|
|
|
|
|
baseline = joblib.load(MODEL_PATH) |
|
|
|
|
|
def predict_sentiment(text: str): |
|
|
if not text or text.strip() == "": |
|
|
return {"predição": "n/a", "confiança": 0.0} |
|
|
proba = baseline.predict_proba([text])[0] |
|
|
pred = int(np.argmax(proba)) |
|
|
label = "positivo" if pred == 1 else "negativo" |
|
|
conf = float(np.max(proba)) |
|
|
return {"predição": label, "confiança": conf} |
|
|
|
|
|
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 (Amazon Polarity)", |
|
|
description="Pipeline TF-IDF + Regressão Logística. Faça upload de baseline_pipe.pkl gerado no notebook." |
|
|
) |
|
|
|
|
|
if __name__ == "__main__": |
|
|
demo.launch() |
|
|
|