https://github.com/aryansk/mobile-product-sentiment-analyzer
A comprehensive sentiment analysis tool that analyzes mobile product reviews using Natural Language Processing (NLP) techniques and provides detailed visualizations of customer sentiment patterns.
https://github.com/aryansk/mobile-product-sentiment-analyzer
lemmatization machine-learning machine-learning-algorithms named-entity-recognition parts-of-speech python sentiment-analysis sentiment-classification text-processing
Last synced: 12 days ago
JSON representation
A comprehensive sentiment analysis tool that analyzes mobile product reviews using Natural Language Processing (NLP) techniques and provides detailed visualizations of customer sentiment patterns.
- Host: GitHub
- URL: https://github.com/aryansk/mobile-product-sentiment-analyzer
- Owner: aryansk
- Created: 2025-01-21T13:00:11.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2025-01-31T08:34:41.000Z (3 months ago)
- Last Synced: 2025-04-11T05:57:46.450Z (12 days ago)
- Topics: lemmatization, machine-learning, machine-learning-algorithms, named-entity-recognition, parts-of-speech, python, sentiment-analysis, sentiment-classification, text-processing
- Language: Jupyter Notebook
- Homepage:
- Size: 302 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Mobile Product Sentiment Analyzer 📱





A comprehensive sentiment analysis system for mobile product reviews, leveraging Natural Language Processing (NLP) to extract insights and visualize customer sentiment patterns across different product aspects.
## 📖 Table of Contents
- [Core Features](#-core-features)
- [Technical Architecture](#-technical-architecture)
- [Installation & Setup](#-installation--setup)
- [Usage Guide](#-usage-guide)
- [Analysis Components](#-analysis-components)
- [Visualization Suite](#-visualization-suite)
- [Development](#-development)
- [Contributing](#-contributing)
- [License](#-license)## 🌟 Core Features
### 🔄 Data Processing Pipeline
- **Review Processing**
- Automatic product name extraction
- Rating normalization and scaling
- Aspect-based categorization
- Data cleaning and formatting
- **Text Preprocessing**
- Special character removal
- Case normalization
- Whitespace standardization
- URL and emoji handling### 🔍 NLP Analysis Engine
- **Text Analysis**
- Advanced tokenization
- Stop word filtering
- Lemmatization processing
- POS tagging implementation
- **Entity Processing**
- Named Entity Recognition
- Product feature extraction
- Brand name identification
- Model number detection### 📊 Visualization System
- **Distribution Analysis**
- Sentiment distribution plots
- Rating analysis charts
- Category-wise patterns
- Temporal trend analysis
- **Comparative Studies**
- Product comparisons
- Feature benchmarking
- Brand performance analysis
- Rating correlation studies## 🛠 Technical Architecture
### System Flow
```mermaid
graph TD
A[Raw Reviews] --> B[Data Processor]
B --> C[Text Preprocessor]
C --> D[NLP Pipeline]
D --> E[VADER Sentiment Analysis]
E --> F[Aspect Categorization]
F --> G[Visualization Engine]
G --> H[Analysis Reports]
```### Dependencies
```python
# requirements.txt
pandas>=1.5.0
numpy>=1.21.0
matplotlib>=3.5.0
seaborn>=0.11.0
nltk>=3.7.0
spacy>=3.4.0
scikit-learn>=1.0.0
vader-sentiment>=3.3.2
```## 💻 Installation & Setup
### System Requirements
- **Minimum Specifications**
- Python 3.8+
- 8GB RAM
- 2GB storage
- **Recommended Specifications**
- Python 3.9+
- 16GB RAM
- 5GB SSD storage
- Multi-core processor### Quick Start
```bash
# Clone repository
git clone https://github.com/yourusername/mobile-product-sentiment-analyzer.git# Navigate to project
cd mobile-product-sentiment-analyzer# Create virtual environment
python -m venv venv
source venv/bin/activate # Linux/Mac
.\venv\Scripts\activate # Windows# Install dependencies
pip install -r requirements.txt# Download NLP models
python -m nltk.downloader all
python -m spacy download en_core_web_sm
```### Configuration
```python
# config.py
CONFIG = {
'preprocessing': {
'min_review_length': 10,
'max_review_length': 1000,
'remove_urls': True,
'remove_emojis': True
},
'analysis': {
'sentiment_threshold': 0.1,
'aspect_confidence': 0.7,
'min_ratings': 5
},
'visualization': {
'color_scheme': 'deep',
'figure_size': (12, 8),
'dpi': 300
}
}
```## 🚀 Usage Guide
### Basic Implementation
```python
from sentiment_analyzer import ProductSentimentAnalyzer# Initialize analyzer
analyzer = ProductSentimentAnalyzer()# Load and process data
reviews_df = analyzer.load_data('data/reviews.csv')
processed_data = analyzer.process_reviews(reviews_df)# Perform sentiment analysis
results = analyzer.analyze_sentiments(processed_data)# Generate visualizations
analyzer.plot_sentiment_distribution(results)
analyzer.plot_aspect_analysis(results)
```### Advanced Analysis
```python
# Aspect-based sentiment analysis
aspect_results = analyzer.analyze_aspects(processed_data)# Comparative product analysis
comparison = analyzer.compare_products(['iPhone 13', 'Galaxy S21'])# Generate comprehensive report
report = analyzer.generate_report(results, aspect_results, comparison)
```## 📊 Analysis Components
### Text Processing Pipeline
```python
def preprocess_text(text):
"""
Preprocesses review text for analysis.
Args:
text (str): Raw review text
Returns:
str: Processed text
"""
# Convert to lowercase
text = text.lower()
# Remove special characters
text = re.sub(r'[^\w\s]', '', text)
# Tokenization
tokens = word_tokenize(text)
# Remove stopwords
stop_words = set(stopwords.words('english'))
tokens = [t for t in tokens if t not in stop_words]
# Lemmatization
lemmatizer = WordNetLemmatizer()
tokens = [lemmatizer.lemmatize(t) for t in tokens]
return ' '.join(tokens)
```### Sentiment Analysis
```python
def analyze_sentiment(text):
"""
Analyzes sentiment using VADER.
Args:
text (str): Preprocessed text
Returns:
dict: Sentiment scores
"""
analyzer = SentimentIntensityAnalyzer()
scores = analyzer.polarity_scores(text)
return {
'compound': scores['compound'],
'positive': scores['pos'],
'negative': scores['neg'],
'neutral': scores['neu']
}
```## 📈 Performance Metrics
### Sentiment Analysis Accuracy
| Category | Precision | Recall | F1-Score |
|----------|-----------|---------|-----------|
| Positive | 0.89 | 0.92 | 0.90 |
| Negative | 0.87 | 0.85 | 0.86 |
| Neutral | 0.78 | 0.81 | 0.79 |### Processing Performance
| Operation | Average Time (ms) |
|-----------|------------------|
| Text Preprocessing | 12 |
| Sentiment Analysis | 25 |
| Aspect Detection | 18 |
| Visualization | 45 |## 👨💻 Development
### Project Structure
```
mobile-sentiment-analyzer/
├── data/
│ ├── raw/
│ └── processed/
├── models/
│ └── aspect_classifier.pkl
├── src/
│ ├── preprocessor.py
│ ├── analyzer.py
│ └── visualizer.py
├── notebooks/
│ └── analysis.ipynb
├── tests/
│ └── test_analyzer.py
├── config.py
├── requirements.txt
└── README.md
```### Testing
```bash
# Run all tests
python -m pytest# Run specific test file
python -m pytest tests/test_analyzer.py# Run with coverage
python -m pytest --cov=src
```## 🤝 Contributing
### Workflow
1. Fork repository
2. Create feature branch
3. Implement changes
4. Add tests
5. Submit pull request### Code Style Guidelines
- Follow PEP 8
- Document all functions
- Write comprehensive tests
- Maintain clean notebook outputs## 📄 License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
## 🙏 Acknowledgments
- NLTK development team
- spaCy community
- VADER Sentiment Analysis creators
- Open source NLP community