This project is an end-to-end solution designed for UBC Computer Science students. It collects user reviews, analyzes their sentiments, and summarizes each course's feedback using visualizations and modern machine learning models. The application provides an intuitive interface for real-time sentiment visualization, detailed analytics, and summary generation.
Deployed URL: https://sentiment-analysis-436c.onrender.com
Team Members
Features
Architecture
Setup
Usage
Technologies
Future Enhancements
Contributing
License
- Adwait Kulkarni
- Rebecca Lee
- Dominic Lo
- Sana Al-Jumaily
- Zackarya Hamza
AWS Comprehend, a cloud-based sentiment analysis service, classifies reviews into Positive, Negative, Neutral, or Mixed sentiments.
Generates concise, accurate summaries of all reviews for each course using a fine-tuned Hugging Face summarization model hosted on AWS SageMaker.
- Overall sentiment score out of 5 for each course, with 5 being positive and 1 being negative.
- Word cloud representation of common terms used in reviews.
- Pie chart showing the count distributions of each sentiment label.
- Bar chart showing the confidence level of sentiment labels.
- Real-time updates of sentiment metrics.
- Developed using React, using Recharts for visualization and user interaction.
- A serverless architecture using AWS Lambda functions to handle requests, trigger actions that include sending visualization data from the API Gateway to the front end, and perform database operations.
- Amazon RDS for structured storage of sentiment data, review data, and analysis results.
- AWS Comprehend to analyze sentiment according to 4 sentiment labels and get the confidence level for each label.
- Review summarization models hosted on AWS SageMaker using text-generation models like Google Pegasus XSUM on platforms like Hugging-Face.
- Node.js (v16 or higher)
- AWS account with access to S3, Lambda, RDS, Comprehend, and SageMaker
- Python (v3.9 or higher)
- Clone the repository
git clone https://github.com/AdwaitKulkarni58/sentiment-analysis-436c cd sentiment-analysis-436c
- Install the dependencies
npm install .
- Set up AWS services
- Set up an S3 bucket and RDS database.
- Deploy the summarization model to SageMaker.
- Create necessary IAM roles for Lambda functions.
- Run the application
npm run dev
- Submit Reviews:
- Navigate to the web application and submit reviews for a course.
- (For course staff) To generate good summaries, input longer reviews so the model can be trained on more input data and create better results.
- View Analytics:
- Access sentiment distribution charts and word clouds for comprehensive feedback on a course.
- Generate Summaries:
- Summarized reviews appear on the course details page, providing concise insights into user feedback.
- React.js, D3.js, React Bootstrap, Recharts
- AWS Lambda, S3 Bucket Storage
- AWS Relational Database Service (RDS)
- AWS SageMaker, Hugging-Face
- AWS Comprehend, AWS Internet Gateway, Virtual Private Cloud (VPC), AWS Key Management Service (KMS), AWS Secrets Manager, AWS Identity and Access Management (IAM)
- Integration of additional complex machine learning models for better summary results of individual courses.
- Provide a more holistic overview of the entire department by looking at all courses and creating a combined faculty result.
- Ability to register for courses directly from the dashboard, eliminating the need to go to Workday, search for courses separately, and register individually.
- Use AWS Aurora for auto-scaling of the relational database.
- Create an authentication system and use UBC CWL for student authentication.
To contribute a new feature to the project or submit a bug:
- Fork the repository.
- Create a feature branch (
git checkout -b feature-name
). - Commit your changes (
git commit -m "Add feature-name"
). - Push to the branch (
git push origin feature-name
). - Submit a Pull Request (PR).
This project is licensed under the MIT License.