sentiment-tool / app.py
Chris4K's picture
Update app.py
3dd9c1a verified
from simple_sentiment import SimpleSentimentTool
# Create an instance of the tool without preloading to avoid startup errors
sentiment_tool = SimpleSentimentTool(default_model="distilbert", preload=False)
# Launch the Gradio interface
if __name__ == "__main__":
import gradio as gr
with gr.Blocks(title="Sentiment Analysis Tool") as demo:
gr.Markdown("# Multi-Model Sentiment Analysis Tool")
with gr.Row():
with gr.Column():
text_input = gr.Textbox(
label="Enter text to analyze",
placeholder="Type your text here...",
lines=5
)
model_dropdown = gr.Dropdown(
choices=list(sentiment_tool.models.keys()),
value=sentiment_tool.default_model,
label="Select Model"
)
with gr.Row():
analyze_btn = gr.Button("Analyze Sentiment")
clear_btn = gr.Button("Clear")
with gr.Column():
output = gr.JSON(label="Sentiment Analysis Results")
def analyze_with_model(text, model_key):
"""Call the tool's forward method directly with appropriate parameters."""
if not text:
return "{\"error\": \"Please enter some text to analyze\"}"
# The tool returns a JSON string now
json_str = sentiment_tool.forward(text, model_key)
# But we need to parse it for the Gradio JSON component
import json
try:
return json.loads(json_str)
except:
return {"error": "Failed to parse results"}
analyze_btn.click(
fn=analyze_with_model,
inputs=[text_input, model_dropdown],
outputs=output
)
clear_btn.click(
fn=lambda: ("", None),
inputs=None,
outputs=[text_input, output]
)
gr.Examples(
examples=[
["I love this product! It's amazing and works perfectly.", "distilbert"],
["This movie was terrible. I was very disappointed.", "distilbert"],
["The service was okay, but could be improved in several ways.", "distilbert"],
["Ce produit est vraiment excellent!", "multilingual"],
["Dieses Buch ist sehr interessant.", "german"]
],
inputs=[text_input, model_dropdown]
)
demo.launch(share=True)