📖 Project Overview
Sentiment Analysis Bot is an advanced AI-powered sentiment analysis bot that integrates NLP libraries (NLTK, TextBlob, spaCy, VADER) with Flask to create an intelligent sentiment analysis and emotion detection system. This project offers real-time sentiment analysis using VADER and TextBlob, emotion detection (joy, anger, sadness, fear, surprise), response adaptation based on detected emotions, feedback collection and sentiment tracking, sentiment reporting with downloadable reports, named entity recognition using spaCy, conversation history with timestamps, comprehensive analytics dashboard, and beautiful responsive web interface. Perfect for customer service, feedback collection, emotional support applications, and businesses requiring intelligent sentiment analysis capabilities.
⚡ Quick Facts
✨ Features
Core Features
😊 Real-time Sentiment Analysis
Analyzes text sentiment in real-time using VADER and TextBlob for accurate sentiment detection (positive, negative, neutral).
🎭 Emotion Detection
Identifies specific emotions like joy, anger, sadness, fear, and surprise with high accuracy for better understanding of user feelings.
🧠 Response Adaptation
Generates context-aware responses based on detected emotions and sentiment for appropriate and empathetic interactions.
📊 Sentiment Reporting
Provides detailed analytics and downloadable reports with sentiment distribution and emotion frequency analysis.
Advanced Features
📈 VADER Sentiment Analysis
Specifically tuned for social media text with compound, positive, negative, and neutral scores for accurate sentiment detection.
📊 TextBlob Integration
General purpose sentiment analysis with polarity and subjectivity scores for comprehensive sentiment evaluation.
🔍 Named Entity Recognition
Extracts entities using spaCy for advanced NLP including people, organizations, locations, dates, and products.
💬 Feedback Collection
Tracks conversation history and sentiment trends for comprehensive feedback analysis and insights.
📊 Conversation Analytics
Comprehensive analytics dashboard with sentiment distribution, emotion frequency, and performance metrics.
📥 Exportable Reports
Download sentiment analysis reports with detailed analytics and insights for further analysis.
🧠 Ensemble Approach
Combines multiple sentiment analysis methods (VADER + TextBlob) for improved accuracy and reliability.
💾 Conversation History
Maintains chat sessions with timestamps and sentiment tags for comprehensive conversation tracking.
⚡ Fast Response Time
Optimized sentiment analysis with < 500ms response time for real-time emotion detection.
🎯 High Accuracy
85-90% sentiment classification accuracy with ensemble approach combining multiple NLP methods.
🔒 Security Features
Input sanitization, XSS protection, CSRF protection, rate limiting for secure and reliable operation.
🌐 RESTful API
Clean API endpoints for integration with other systems and applications.
🛠️ Technologies
Python
Core programming language for sentiment analysis platform
LanguageFlask
Python web framework for backend API
FrameworkNLTK
Natural Language Toolkit for text processing and NLP
NLPTextBlob
Simple text sentiment analysis with polarity and subjectivity
SentimentspaCy
Advanced NLP and named entity recognition
NLPVADER
Valence Aware Dictionary and sEntiment Reasoner for social media text
Sentimentpython-dotenv
Environment variable management for configuration
ConfigModular Architecture
Clean, modular code structure for easy extension
Architecture📦 Installation Guide - Step by Step
⏱️ Installation Time: ~5 minutes
Follow these simple steps to set up the Sentiment Analysis Bot on your system.
📋 Prerequisites
🌐 Web Browser
Modern web browser (Chrome, Firefox, Safari, Edge) for accessing the sentiment analysis platform
Recommended: Latest version of Chrome or Firefox
📦 NLP Libraries
NLTK, TextBlob, spaCy, and VADER will be installed via requirements.txt
Note: spaCy English model will be downloaded automatically
🌐 Internet Connection
Required for Flask server and downloading NLP models
🚀 Step-by-Step Installation
Option A: Download ZIP
- Download the project ZIP file from the repository
- Extract it to your desired location (e.g.,
C:\Projects\sentiment-analysis-botor~/Projects/sentiment-analysis-bot) - Navigate to the extracted folder
Option B: Clone with Git
git clone https://github.com/rskworld/sentiment-analysis-bot.git
cd sentiment-analysis-bot
Install required Python packages using pip.
# Install dependencies
pip install -r requirements.txt
Download the spaCy English model for named entity recognition.
# Download spaCy English model
python -m spacy download en_core_web_sm
Note: This model is required for named entity recognition features. The download may take a few minutes depending on your internet connection.
Start the Flask backend server by running app.py.
# Start Flask server
python app.py
# The server will start on http://localhost:5000
Open the HTML file in your browser or use a local web server.
Method 1: Direct File Opening
- Open index.html in your browser
Method 2: Using Local Web Server (Recommended)
# In a new terminal, start HTTP server
python -m http.server 8000
# Then open: http://localhost:8000
✅ Installation Complete!
Congratulations! You've successfully set up the Sentiment Analysis Bot. The bot is ready to use with all features including:
- Real-time sentiment analysis using VADER and TextBlob
- Emotion detection (joy, anger, sadness, fear, surprise)
- Response adaptation based on detected emotions
- Named entity recognition using spaCy
- Feedback collection and sentiment tracking
- Sentiment reporting with downloadable reports
- Conversation history with timestamps
- Comprehensive analytics dashboard
- Beautiful responsive web interface
Next Steps:
- Ensure the Flask server is running (Step 4)
- Open the frontend in your browser (Step 5)
- Start analyzing sentiment by typing messages to test the bot
- Explore all the features, emotion detection, and analytics!
🔧 Troubleshooting Installation
❌ spaCy Model Issues
Solution: Ensure spaCy English model is downloaded with python -m spacy download en_core_web_sm. Check internet connection for model download.
❌ Flask Server Not Starting
Solution: Check Python version (3.8+), verify dependencies installed with pip install -r requirements.txt, ensure port 5000 is available.
❌ Connection Errors
Solution: Verify Flask server is running on port 5000, check script.js has correct API_BASE_URL, ensure CORS is enabled in Flask.
❌ Import Errors
Solution: Reinstall dependencies, check virtual environment is activated, verify all packages in requirements.txt are installed (NLTK, TextBlob, spaCy, VADER).
📚 Usage Guide - Step by Step
🎯 Getting Started with Sentiment Analysis Bot
Step-by-Step Usage Instructions
📝 Step 1: Start Backend Server
- Ensure Flask server is running:
python app.pyorpython run.py - Check server status at
http://localhost:5000 - You should see the Sentiment Analysis Bot interface
🌐 Step 2: Open Frontend
- Open http://localhost:5000 in your web browser
- You should see the Sentiment Analysis Bot interface with:
- Chat messages area with sentiment indicators
- Text input field
- Emotion detection badges
- Sentiment analysis statistics
- Features panel with sentiment capabilities
- Analytics dashboard showing sentiment distribution
- Send button
💬 Step 3: Start Analyzing Sentiment
- Text Input: Type your message and press Enter or click Send
- Sentiment Analysis: The bot will analyze sentiment (positive, negative, neutral)
- Emotion Detection: The bot will detect emotions (joy, anger, sadness, fear, surprise)
- Try These:
- "I'm feeling really happy today!" (Positive sentiment, Joy emotion)
- "This is so frustrating and annoying!" (Negative sentiment, Anger emotion)
- "I'm feeling sad and lonely." (Negative sentiment, Sadness emotion)
- "I'm worried about the exam tomorrow." (Negative sentiment, Fear emotion)
- "Wow! That's amazing!" (Positive sentiment, Surprise emotion)
- View Responses: The bot will respond with appropriate emotion-based responses
⚙️ Step 4: Explore Features
Try out the sentiment analysis features:
- Sentiment Indicators: View real-time sentiment (positive, negative, neutral)
- Emotion Detection: See detected emotions in responses
- Analytics Dashboard: Check sentiment distribution and emotion frequency
- Response Adaptation: Notice how responses adapt based on emotions
- Report Generation: Download sentiment analysis reports
- Conversation History: View conversation history with sentiment tags
💻 Using the Sentiment Analysis Bot
You can interact with the Sentiment Analysis Bot through the web interface:
# Example Interactions
User: "I'm feeling really happy today!"
Bot: [Response with positive sentiment, joy emotion detected]
Sentiment: Positive (0.85)
Emotions: Joy
Response: "That's wonderful to hear! 😊"
User: "This is so frustrating and annoying!"
Bot: [Response with negative sentiment, anger emotion detected]
Sentiment: Negative (-0.75)
Emotions: Anger
Response: "I understand you're feeling frustrated..."
User: "I'm feeling sad and lonely."
Bot: [Response with negative sentiment, sadness emotion detected]
Sentiment: Negative (-0.65)
Emotions: Sadness
Response: "I'm sorry you're feeling this way..."
User: "Wow! That's amazing!"
Bot: [Response with positive sentiment, surprise emotion detected]
Sentiment: Positive (0.70)
Emotions: Surprise
Response: "That's fantastic! I'm glad you're excited!"
# Sentiment Analysis Features
- Real-time Analysis: Get instant sentiment and emotion detection
- VADER Scores: View compound, positive, negative, neutral scores
- TextBlob Analysis: See polarity and subjectivity scores
- Emotion Tags: View detected emotions (joy, anger, sadness, fear, surprise)
- Analytics: Check sentiment distribution and emotion frequency
- Reports: Download sentiment analysis reports
📊 Features Usage
😊 Real-time Sentiment
Get instant sentiment analysis (positive, negative, neutral) with VADER and TextBlob
🎭 Emotion Detection
Detect specific emotions (joy, anger, sadness, fear, surprise) in user messages
🧠 Response Adaptation
Responses adapt based on detected emotions for appropriate and empathetic interactions
📊 Analytics Dashboard
View sentiment distribution, emotion frequency, and conversation analytics
📈 VADER Analysis
View compound, positive, negative, and neutral scores from VADER sentiment analyzer
📉 TextBlob Analysis
See polarity and subjectivity scores from TextBlob sentiment analysis
🔍 Named Entity Recognition
Extract entities (people, organizations, locations) using spaCy NLP
📥 Report Generation
Download sentiment analysis reports with detailed analytics and insights
🚀 Advanced Features & Capabilities
The Sentiment Analysis Bot includes advanced NLP capabilities, sentiment analysis, and emotion detection features. Here's what you can do:
😊 Real-time Sentiment Intelligence
The bot excels at analyzing sentiment in real-time using VADER and TextBlob with high accuracy. Get instant sentiment detection (positive, negative, neutral) with detailed scores.
🎭 Advanced Emotion Detection
Detect specific emotions (joy, anger, sadness, fear, surprise) with high accuracy. The bot understands user feelings and responds with appropriate emotion-based responses.
🧠 Intelligent Response Adaptation
Responses are adapted based on detected emotions and sentiment. The bot understands emotional context and adjusts responses accordingly for empathetic interactions.
📊 Comprehensive Analytics
Advanced sentiment analytics and emotion frequency analysis. Track sentiment distribution, emotion trends, and generate downloadable reports for insights.
💻 Code Examples
Basic Sentiment Analysis Bot Integration
// Python Flask backend - app.py
from flask import Flask, request, jsonify
from nltk.sentiment.vader import SentimentIntensityAnalyzer
from textblob import TextBlob
import spacy
app = Flask(__name__)
sid = SentimentIntensityAnalyzer()
nlp = spacy.load("en_core_web_sm")
@app.route('/api/chat', methods=['POST'])
def chat():
data = request.json
message = data.get('message', '')
# VADER sentiment analysis
vader_scores = sid.polarity_scores(message)
# TextBlob sentiment analysis
blob = TextBlob(message)
textblob_polarity = blob.sentiment.polarity
textblob_subjectivity = blob.sentiment.subjectivity
# Determine overall sentiment
if vader_scores['compound'] >= 0.05:
sentiment = 'positive'
elif vader_scores['compound'] <= -0.05:
sentiment = 'negative'
else:
sentiment = 'neutral'
# Detect emotions (simplified)
emotions = detect_emotions(message)
# Generate response based on sentiment
response = generate_response(message, sentiment, emotions)
return jsonify({
'sentiment': sentiment,
'emotions': emotions,
'response': response,
'vader_scores': vader_scores,
'textblob_analysis': {
'polarity': textblob_polarity,
'subjectivity': textblob_subjectivity
}
})
if __name__ == '__main__':
app.run(debug=True, port=5000)
JavaScript Frontend Integration
// Frontend JavaScript - sentiment.js
async function sendMessage(message) {
const response = await fetch('http://localhost:5000/api/chat', {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
message: message
})
});
const data = await response.json();
return {
response: data.response,
sentiment: data.sentiment,
emotions: data.emotions,
vaderScores: data.vader_scores,
textblobAnalysis: data.textblob_analysis
};
}
// Usage
sendMessage('I'm feeling really happy today!').then(result => {
console.log('Bot Response:', result.response);
console.log('Sentiment:', result.sentiment);
console.log('Emotions:', result.emotions);
console.log('VADER Scores:', result.vaderScores);
console.log('TextBlob:', result.textblobAnalysis);
});
Complete Sentiment Analysis Bot Example
// Sentiment Analysis Bot Class
class SentimentAnalysisBot {
constructor(apiUrl) {
this.apiUrl = apiUrl || 'http://localhost:5000/api/chat';
this.conversationHistory = [];
this.sentimentStats = {
positive: 0,
negative: 0,
neutral: 0
};
}
async sendMessage(message) {
const response = await fetch(this.apiUrl, {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
message: message
})
});
const data = await response.json();
// Update conversation history
this.conversationHistory.push({
user: message,
bot: data.response,
sentiment: data.sentiment,
emotions: data.emotions,
timestamp: new Date().toISOString()
});
// Update sentiment statistics
this.sentimentStats[data.sentiment]++;
return {
response: data.response,
sentiment: data.sentiment,
emotions: data.emotions,
vaderScores: data.vader_scores,
textblobAnalysis: data.textblob_analysis
};
}
async getReport() {
const response = await fetch('http://localhost:5000/api/report');
return await response.json();
}
clearHistory() {
this.conversationHistory = [];
this.sentimentStats = {positive: 0, negative: 0, neutral: 0};
}
}
// Usage
const bot = new SentimentAnalysisBot();
bot.sendMessage('I'm feeling really happy today!').then(result => {
console.log('Bot Response:', result.response);
console.log('Sentiment:', result.sentiment);
console.log('Emotions:', result.emotions);
});
Configuration Example
// Frontend config - sentiment.js
const SentimentBotConfig = {
api: {
baseUrl: 'http://localhost:5000',
endpoints: {
chat: '/api/chat',
report: '/api/report',
reset: '/api/reset',
health: '/api/health'
}
},
sentiment: {
thresholds: {
positive: 0.05,
negative: -0.05
},
methods: ['vader', 'textblob', 'ensemble']
},
emotions: {
supported: ['joy', 'anger', 'sadness', 'fear', 'surprise'],
detectionEnabled: true
},
ui: {
animationDuration: 300,
messageDelay: 500
}
};
// Access configuration
console.log(SentimentBotConfig.emotions.supported);
# Backend config - config.py
import os
from dotenv import load_dotenv
load_dotenv()
class Config:
FLASK_ENV = os.getenv('FLASK_ENV', 'development')
SECRET_KEY = os.getenv('SECRET_KEY', 'sentiment-bot-secret-key')
PORT = int(os.getenv('PORT', 5000))
# Sentiment Analysis Settings
SENTIMENT_THRESHOLD_POSITIVE = 0.05
SENTIMENT_THRESHOLD_NEGATIVE = -0.05
USE_ENSEMBLE_APPROACH = True
# Emotion Detection
EMOTION_DETECTION_ENABLED = True
SUPPORTED_EMOTIONS = ['joy', 'anger', 'sadness', 'fear', 'surprise']
# spaCy Model
SPACY_MODEL = 'en_core_web_sm
🔗 NLP Libraries Integration
NLP Libraries Integration
The application integrates with advanced NLP libraries (NLTK, TextBlob, spaCy, VADER) for sentiment analysis and emotion detection. The backend uses Python Flask to handle sentiment analysis, emotion detection, and response adaptation, while the frontend uses JavaScript for user interactions and sentiment visualization.
Available APIs & Technologies
| API/Technology | Type | Description |
|---|---|---|
| VADER Sentiment | NLP Library | Valence Aware Dictionary and sEntiment Reasoner for social media text |
| TextBlob | NLP Library | Simple text sentiment analysis with polarity and subjectivity |
| spaCy | NLP Library | Advanced NLP and named entity recognition |
| NLTK | NLP Library | Natural Language Toolkit for text processing |
| Flask REST API | Backend | Python Flask server for API endpoints |
| LocalStorage | Browser API | Store settings and conversation history |
Backend API Endpoints
# Flask Backend - app.py
@app.route('/api/chat', methods=['POST'])
def chat():
data = request.json
message = data.get('message', '')
# Analyze sentiment
vader_scores = sid.polarity_scores(message)
blob = TextBlob(message)
# Determine sentiment
sentiment = 'neutral'
if vader_scores['compound'] >= 0.05:
sentiment = 'positive'
elif vader_scores['compound'] <= -0.05:
sentiment = 'negative'
# Detect emotions
emotions = detect_emotions(message)
# Generate response
response = generate_response(message, sentiment, emotions)
return jsonify({
'sentiment': sentiment,
'emotions': emotions,
'response': response,
'vader_scores': vader_scores,
'textblob_analysis': {
'polarity': blob.sentiment.polarity,
'subjectivity': blob.sentiment.subjectivity
},
'timestamp': datetime.now().isoformat()
})
@app.route('/api/report', methods=['GET'])
def report():
# Generate sentiment analysis report
return jsonify({
'total_messages': len(conversation_history),
'sentiment_distribution': calculate_sentiment_distribution(),
'emotion_frequency': calculate_emotion_frequency(),
'recent_conversations': conversation_history[-10:]
})
@app.route('/api/reset', methods=['POST'])
def reset():
# Reset conversation history
conversation_history.clear()
return jsonify({'status': 'reset'})
@app.route('/api/health', methods=['GET'])
def health():
return jsonify({
'status': 'healthy',
'nlp_libraries_loaded': True
})
// Frontend JavaScript - API Integration
async function sendMessage(message) {
try {
const response = await fetch('http://localhost:5000/api/chat', {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
message: message
})
});
if (!response.ok) {
throw new Error('API request failed');
}
const data = await response.json();
return {
response: data.response,
sentiment: data.sentiment,
emotions: data.emotions,
vaderScores: data.vader_scores,
textblobAnalysis: data.textblob_analysis
};
} catch (error) {
console.error('Error:', error);
return {error: error.message};
}
}
// Get sentiment report
async function getReport() {
const response = await fetch('http://localhost:5000/api/report');
return await response.json();
}
// Reset conversation
async function resetConversation() {
const response = await fetch('http://localhost:5000/api/reset', {
method: 'POST'
});
return await response.json();
}
Browser Compatibility
// Check Sentiment Analysis Bot API Connection
async function checkHealth() {
try {
const response = await fetch('http://localhost:5000/api/health');
const data = await response.json();
console.log('Server Status:', data.status);
console.log('NLP Libraries Loaded:', data.nlp_libraries_loaded);
return data.nlp_libraries_loaded;
} catch (error) {
console.error('Health check failed:', error);
return false;
}
}
// Get sentiment report
async function getSentimentReport() {
const response = await fetch('http://localhost:5000/api/report');
const data = await response.json();
return data;
}
// Recommended setup:
// - Backend: Python 3.8+ with Flask, NLTK, TextBlob, spaCy, VADER
// - Frontend: Modern browsers (Chrome, Edge, Safari, Firefox)
// - NLP Models: spaCy English model (en_core_web_sm)
// - Dependencies: All listed in requirements.txt
⚙️ Configuration
Configuration in this application is handled through environment variables and settings files:
Environment Variables
Create a .env file in the project root (copy from .env.example):
# .env file
FLASK_ENV=development
FLASK_DEBUG=True
SECRET_KEY=your-secret-key-here
PORT=5000
HOST=0.0.0.0
Note: No external API keys required! The sentiment analysis bot uses open-source NLP libraries (NLTK, TextBlob, spaCy, VADER). Never commit your .env file to version control.
Python Configuration (config.py)
The config.py file contains configuration settings:
# config.py
import os
from dotenv import load_dotenv
load_dotenv()
class Config:
FLASK_ENV = os.getenv('FLASK_ENV', 'development')
SECRET_KEY = os.getenv('SECRET_KEY', 'sentiment-bot-secret-key')
PORT = int(os.getenv('PORT', 5000))
HOST = os.getenv('HOST', '0.0.0.0')
# Sentiment Analysis Settings
SENTIMENT_THRESHOLD_POSITIVE = 0.05
SENTIMENT_THRESHOLD_NEGATIVE = -0.05
USE_ENSEMBLE_APPROACH = True
# Emotion Detection
EMOTION_DETECTION_ENABLED = True
SUPPORTED_EMOTIONS = ['joy', 'anger', 'sadness', 'fear', 'surprise']
# spaCy Model
SPACY_MODEL = 'en_core_web_sm'
Frontend Configuration
Edit script.js to configure API endpoint:
// sentiment.js
const API_BASE_URL = 'http://localhost:5000';
const SENTIMENT_THRESHOLD_POSITIVE = 0.05;
const SENTIMENT_THRESHOLD_NEGATIVE = -0.05;
const SUPPORTED_EMOTIONS = ['joy', 'anger', 'sadness', 'fear', 'surprise'];
const EMOTION_DETECTION_ENABLED = true;
const USE_ENSEMBLE_APPROACH = true;
Browser LocalStorage Settings
User settings are automatically saved to browser's local storage:
// Settings are saved automatically
localStorage.setItem('sentimentBotSettings', JSON.stringify({
emotionDetectionEnabled: true,
ensembleApproach: true,
showVaderScores: true,
showTextblobScores: true,
autoGenerateReports: false
}));
// Load settings
const settings = JSON.parse(localStorage.getItem('sentimentBotSettings'));
Runtime Configuration
Configure settings through the web interface:
- Emotion Detection: Enable/disable emotion detection (joy, anger, sadness, fear, surprise)
- Ensemble Approach: Enable/disable combining VADER and TextBlob for accuracy
- VADER Scores: Show/hide VADER sentiment scores (compound, positive, negative, neutral)
- TextBlob Scores: Show/hide TextBlob scores (polarity, subjectivity)
- Report Generation: Enable/disable automatic report generation
- Entity Recognition: Enable/disable named entity recognition using spaCy
All settings are saved automatically and persist across browser sessions.
📁 Project Structure
The Sentiment Analysis Bot follows a clean, organized structure for easy navigation and maintenance.
sentiment-analysis-bot/
├── sentiment-analysis-bot/
│ ├── templates/
│ │ └── index.html # Main HTML interface
│ ├── static/
│ │ └── style.css # Modern styling
│ ├── tests/
│ │ └── test_app.py # Unit tests
│ ├── app.py # Flask backend server
│ ├── config.py # Configuration settings
│ ├── run.py # Application runner
│ └── requirements.txt # Python dependencies
├── demo/
│ ├── index.html # Documentation page
│ ├── demo.html # Interactive demo
│ ├── style.css # Demo styling
│ └── script.js # Demo scripts
├── .env # Environment variables
└── README.md # Project documentation
📄 Frontend Files
Location: sentiment-analysis-bot/templates/ and sentiment-analysis-bot/static/
templates/index.html- Main UI interface with sentiment analysisstatic/style.css- Modern styling
🐍 Backend Files
Location: sentiment-analysis-bot/
app.py- Flask server & API endpointsconfig.py- Configuration settingsrun.py- Application entry pointtests/test_app.py- Unit tests
⚙️ Configuration
Setup: Configure these files for your environment
.env- Environment variables (API keys)requirements.txt- Python dependenciesconfig.py- Application configuration
🔧 Troubleshooting
NLP Library Issues
- Ensure spaCy English model is downloaded:
python -m spacy download en_core_web_sm - Verify all dependencies are installed:
pip install -r requirements.txt - Check that NLTK data is downloaded (VADER lexicon, punkt tokenizer)
- Verify TextBlob is properly installed and accessible
- Make sure the
.envfile is in the project root directory (if using) - Restart the Flask server after installing new dependencies
Flask Server Issues
- Server not starting: Check Python version (3.8+), verify dependencies installed with
pip install -r requirements.txt - Port 5000 in use: Change port in
.envfile or stop other applications using port 5000 - Import errors: Ensure virtual environment is activated, reinstall dependencies
- CORS errors: Verify Flask-CORS is installed and enabled in
app.py - Connection refused: Check firewall settings, ensure server is running on correct port
Frontend Connection Issues
- Failed to fetch: Ensure Flask server is running, check
API_BASE_URLinchatbot.js - CORS errors: Make sure Flask-CORS is installed and configured in backend
- Server offline indicator: Check server status at
http://localhost:5000 - Port mismatch: Verify frontend
API_BASE_URLmatches backend port - Sentiment analysis not working: Ensure VADER and TextBlob are installed:
pip install vaderSentiment textblob - Emotion detection errors: Check emotion detection module is properly configured
Common Issues
- spaCy model not found: Download English model:
python -m spacy download en_core_web_sm - Module not found: Install dependencies with
pip install -r requirements.txt - VADER errors: Ensure NLTK VADER lexicon is downloaded:
nltk.download('vader_lexicon') - TextBlob errors: Check TextBlob installation:
pip install textblob - Sentiment analysis errors: Verify all NLP libraries are properly installed and imported
- Emotion detection not working: Verify emotion detection module is properly configured
- Entity recognition errors: Check spaCy model is loaded correctly
📋 Requirements
Backend Requirements:
- Python 3.8 or higher
- Flask web framework
- NLTK for text processing
- TextBlob for sentiment analysis
- spaCy for advanced NLP
- VADER Sentiment for social media text
- Flask-CORS for CORS support
Frontend Requirements:
- Modern Web Browser (Chrome, Edge, Safari, Firefox)
- JavaScript ES6+ support
- LocalStorage API
NLP Model Requirements:
- spaCy English model (en_core_web_sm)
- NLTK VADER lexicon
- NLTK punkt tokenizer
Python Dependencies (see requirements.txt):
- flask
- flask-cors
- nltk
- textblob
- spacy
- vaderSentiment
- python-dotenv
Model Downloads:
- python -m spacy download en_core_web_sm
- NLTK data downloads automatically on first run
Browser Compatibility: Chrome, Edge, Safari, or Firefox (all modern browsers supported).
Python Version: Python 3.8 or higher required for backend server.
Internet Connection: Required for downloading NLP models and CDN resources (first time only).
🎯 Use Cases
💼 Customer Service
Analyze customer feedback and sentiment in real-time for improved customer support
📊 Feedback Collection
Collect and analyze user feedback with sentiment tracking and emotion detection
😊 Emotional Support
Provide empathetic responses based on detected emotions for emotional support applications
📱 Social Media Monitoring
Monitor social media sentiment and detect emotions in user posts and comments
🌐 Website Integration
Add sentiment analysis capabilities to websites for user feedback analysis
📈 Analytics & Insights
Track sentiment trends, emotion frequency, and generate detailed analytics reports
🎯 Market Research
Analyze customer opinions and sentiment for market research and product development
📧 Email Analysis
Analyze email sentiment and emotions for customer service and support teams
💬 Support
For support, questions, or more projects:
- Website: https://rskworld.in
- Email: help@rskworld.in
- Phone: +91 93305 39277
📄 License
This project is provided as-is for educational and development purposes.
MIT License - See LICENSE file for details.