Spaces:
Sleeping
A newer version of the Gradio SDK is available:
6.8.0
title: Sentiment Analysis
emoji: π¨
colorFrom: indigo
colorTo: blue
sdk: gradio
sdk_version: 5.49.1
app_file: app.py
pinned: false
short_description: Sentiment analysis MCP server using Gradio.
Sentiment Analysis MCP
A Python-based sentiment analysis application using TextBlob and Gradio that provides real-time sentiment analysis through a web interface.
Features
- Real-time sentiment analysis using TextBlob's natural language processing
- Interactive web interface powered by Gradio
- Comprehensive metrics including polarity, subjectivity, and sentiment assessment
- MCP server integration for enhanced functionality
- Easy-to-use interface with instant results
What It Analyzes
- Polarity: Sentiment score from -1.0 (very negative) to +1.0 (very positive)
- Subjectivity: Objectivity score from 0.0 (objective) to 1.0 (subjective)
- Assessment: Simple classification as "positive", "negative", or "neutral"
Installation
Prerequisites
- Python 3.7 or higher
- pip package manager
Setup
Clone the repository:
git clone https://github.com/GitBuntu/sentiment-analysis-mcp.git cd sentiment-analysis-mcpCreate a virtual environment (recommended):
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activateInstall dependencies:
pip install -r requirements.txt
Usage
Running the Application
Start the application:
python app.pyOpen your web browser and navigate to the local URL displayed in the terminal (typically
http://127.0.0.1:7860)Enter text in the input box and get instant sentiment analysis results
Example Results
Input: "The food was delicious but the service was slow and disappointing."
Output:
{
"polarity": 0.1,
"subjectivity": 0.9,
"assessment": "positive"
}
MCP Server Configuration
SSE Support
Some MCP clients don't support SSE-based MCP Servers. In those cases, use mcp-remote:
{
"mcpServers": {
"gradio": {
"command": "npx",
"args": [
"mcp-remote",
"http://localhost:7860/gradio_api/mcp/sse"
]
}
}
}
Connection Issues
If you encounter connection problems:
- Try restarting both the client and server
- Check that the server is running and accessible
- Verify that the MCP schema is available at the expected URL
Testing
The project includes a comprehensive test file (test_texts.txt) with examples for:
- Positive sentiment - Happy, excited, satisfied expressions
- Negative sentiment - Angry, disappointed, frustrated expressions
- Neutral sentiment - Factual, objective statements
- Mixed sentiment - Texts with both positive and negative elements
- Highly subjective - Personal opinions and emotional expressions
- Objective statements - Factual information with minimal emotion
- Edge cases - Empty strings, punctuation, negations, ambiguous text
Sample Test Cases
| Text | Expected Polarity | Expected Assessment |
|---|---|---|
| "I absolutely love this new restaurant!" | High positive (~0.8) | positive |
| "This product is terrible." | High negative (~-0.8) | negative |
| "The meeting is at 3 PM." | Near zero (~0.0) | neutral |
| "The food was delicious but service was slow." | Slightly positive | positive |
Project Structure
sentiment-analysis-mcp/
βββ app.py # Main application file
βββ requirements.txt # Python dependencies
βββ test_texts.txt # Test cases for sentiment analysis
βββ README.md # Project documentation
βββ venv/ # Virtual environment (created after setup)
Dependencies
- textblob>=0.17.1 - Natural language processing library for sentiment analysis
- gradio>=4.0.0 - Web interface framework for machine learning applications
How It Works
- Text Processing: Input text is processed using TextBlob's natural language processing capabilities
- Sentiment Calculation: TextBlob calculates polarity and subjectivity scores
- Classification: The application categorizes sentiment as positive, negative, or neutral based on polarity
- Web Interface: Gradio provides an interactive web interface for easy testing and usage
Use Cases
- Social media monitoring - Analyze customer feedback and comments
- Product reviews - Understand customer satisfaction from reviews
- Survey analysis - Process open-ended survey responses
- Content moderation - Identify potentially negative content
- Market research - Analyze public opinion on topics or products
Contributing
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
License
This project is open source and available under the MIT License.
Limitations
- Language Support: Currently optimized for English text
- Context Understanding: May not fully understand complex sarcasm or context-dependent sentiment
- Domain Specificity: General-purpose model may not be optimized for specific domains
- Sentence Length: Very short texts may not provide reliable sentiment scores
Future Enhancements
- Support for multiple languages
- Custom model training capabilities
- Batch processing for multiple texts
- Export results to CSV/JSON
- REST API endpoints
- Docker containerization
- Advanced visualization charts
Support
If you encounter any issues or have questions:
- Check the test_texts.txt file for examples
- Review the error messages in the terminal
- Open an issue on GitHub with detailed information about the problem
Acknowledgments
- TextBlob - For providing excellent natural language processing capabilities
- Gradio - For the easy-to-use web interface framework
- Python Community - For the amazing ecosystem of tools and libraries