import gradio as gr from textblob import TextBlob def sentiment_analysis(text: str) -> dict: """ Analyze the sentiment of the given text. Args: text (str): The text to analyze Returns: dict: A dictionary containing polarity, subjectivity, and assessment """ if not text.strip(): return { "polarity": 0.0, "subjectivity": 0.0, "assessment": "neutral" } blob = TextBlob(text) sentiment = blob.sentiment return { "polarity": round(sentiment.polarity, 2), # -1 (negative) to 1 (positive) "subjectivity": round(sentiment.subjectivity, 2), # 0 (objective) to 1 (subjective) "assessment": "positive" if sentiment.polarity > 0 else "negative" if sentiment.polarity < 0 else "neutral" } # Create the Gradio interface demo = gr.Interface( fn=sentiment_analysis, inputs=gr.Textbox(placeholder="Enter text to analyze...", label="Text Input"), outputs=gr.JSON(label="Sentiment Analysis Results"), title="Text Sentiment Analysis", description="Analyze the sentiment of text using TextBlob. Returns polarity (-1 to 1), subjectivity (0 to 1), and overall assessment.", examples=[ ["I love this product! It's amazing!"], ["This is terrible and I hate it."], ["The weather is okay today."], ["Python is a programming language."] ] ) # Launch the interface if __name__ == "__main__": demo.launch(mcp_server=True) # Make sure this is True