Spaces:
Runtime error
Runtime error
import streamlit as st | |
import pandas as pd | |
import numpy as np | |
import matplotlib.pyplot as plt | |
from wordcloud import WordCloud | |
from sentiment_labeling import add_sentiment_column | |
from keras.models import load_model | |
import pickle | |
# Load the model and tokenizer | |
model = load_model('model.h5') | |
with open('tokenizer.pkl', 'rb') as f: | |
tokenizer = pickle.load(f) | |
def predict_sentiment(text): | |
# Tokenize and pad the input text | |
seq = tokenizer.texts_to_sequences([text]) | |
padded_seq = pad_sequences(seq, maxlen=MAX_LENGTH) | |
# Predict using the model | |
prediction = model.predict(padded_seq) | |
return np.argmax(prediction) | |
# Streamlit app | |
st.title("Thread Review Sentiment Analysis") | |
# Upload CSV file | |
uploaded_file = st.file_uploader("Choose a CSV file", type="csv") | |
if uploaded_file: | |
data = pd.read_csv(uploaded_file) | |
st.write("Data Loaded Successfully!") | |
# Display raw data | |
if st.checkbox("Show raw data"): | |
st.write(data) | |
# Add sentiment column | |
data = add_sentiment_column(data) | |
# Distribution of sentiments | |
st.subheader("Distribution of Sentiments") | |
sentiment_counts = data['sentiment'].value_counts() | |
fig, ax = plt.subplots() | |
sentiment_counts.plot(kind='bar', ax=ax) | |
ax.set_title('Distribution of Sentiments') | |
ax.set_xlabel('Sentiment') | |
ax.set_ylabel('Count') | |
st.pyplot(fig) | |
# Word cloud for each sentiment | |
st.subheader("Word Clouds for Sentiments") | |
sentiments = ['positive', 'neutral', 'negative'] | |
for sentiment in sentiments: | |
st.write(f"Word Cloud for {sentiment}") | |
subset = data[data['sentiment'] == sentiment] | |
text = " ".join(review for review in subset['review']) | |
wordcloud = WordCloud(max_words=100, background_color="white").generate(text) | |
plt.figure() | |
plt.imshow(wordcloud, interpolation="bilinear") | |
plt.axis("off") | |
st.pyplot() | |
# Individual review prediction | |
user_input = st.text_area("Type a review here to predict its sentiment:") | |
if user_input: | |
sentiment_pred = predict_sentiment(user_input) | |
st.write(f"The predicted sentiment is: {sentiment_pred}") | |