Spaces:
Running
Running
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) |