Welcome to the Amazon Review Sentiment Analysis project! This repository contains code for training a sentiment analysis model on a large dataset of Amazon reviews using Long Short-Term Memory (LSTM) neural networks. The trained model can predict the sentiment (positive or negative) of Amazon reviews. The dataset used for training consists of over 2 million reviews, totaling 2.6 GB of data.
Amazon Review Sentiment Analysis app here
- Introduction
- Dataset
- Model
- Getting Started
- Prerequisites
- Training
- Prediction
- Running the Streamlit App
- Contributing
- Acknowledgements
Sentiment analysis is the process of determining the sentiment or emotion expressed in a piece of text. In this project, we focus on predicting whether Amazon reviews are positive or negative based on their text content. We use LSTM neural networks, a type of recurrent neural network (RNN), to capture the sequential patterns in the text data and make accurate sentiment predictions.
The dataset used for this project is a massive collection of Amazon reviews, comprising more than 2 million reviews with a total size of 2.6 GB. The dataset is here. It contains both positive and negative reviews, making it suitable for training a sentiment analysis model.
- Dataset is very larget (2.6 GB) with 2.6 Million Reviews
- Machine's resources are limiting as loading multiple variables with processed data is eating up RAM
- Used polars for data manipulation and Preprocessings ( Uses Parallel computation, Doesn't load data on memory)
The sentiment analysis model is built using TensorFlow and Keras libraries. We employ LSTM layers to effectively capture the sequential nature of text data. The model is trained on the labeled Amazon reviews dataset, and its performance is evaluated using various metrics such as accuracy, precision, recall, and F1-score.
Model: "model_lstm"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
input_3 (InputLayer) [(None, 175)] 0
embedding_layer (Embedding) (None, 175, 8) 2400000
lstm_layer_1 (LSTM) (None, 175, 16) 1600
lstm_layer_2 (LSTM) (None, 16) 2112
dropout_layer (Dropout) (None, 16) 0
dense_layer_1 (Dense) (None, 64) 1088
dense_layer_2_final (Dense) (None, 1) 65
=================================================================
Total params: 2,404,865
Trainable params: 2,404,865
Non-trainable params: 0
_________________________________________________________________
Model | Accuracy | Precision | Recall | F1 | Description |
---|---|---|---|---|---|
model0: Naive Bayes | 84.79% | 84.82% | 84.79% | 84.79% | |
model1: LSTM(in use) | 94.06% | 94.06% | 94.06% | 94.06% | small lstm model with vectorizer and embedding layer |
Follow these steps to get started with the project:
- Python 3.x
- TensorFlow
- Keras
- Polars
- Streamlit
You can install the required dependencies using the following command:
pip install -r requirements.txt
To train the LSTM model, run the train.py script:
python3 train.py
This script will preprocess the dataset, train the model, and save the trained weights to disk.
To use the trained model for making predictions on new reviews, run the predict.py script:
python3 predict.py
We've also provided a user-friendly Streamlit app to interact with the trained Model. Run the app using the following command:
streamlit run app.py
This will launch a local web app where you can input your own Amazon review and see the model's sentiment prediction.
Contributions are welcome! If you find any issues or have suggestions for improvements, please feel free to open an issue or create a pull request.
We would like to express our gratitude to the open-source community for providing invaluable resources and tools that made this project possible.
Don't Forget to Star! If you find this project interesting or useful, please consider starring the repository. Your support is greatly appreciated!
Star
Happy coding!
Your Name Your Contact Info Date