IMDB_project / app.py
Boorla's picture
Update app.py
5cc4122 verified
Raw History Blame Contribute Delete
1.9 kB
import streamlit as st
import pandas as pd
import re
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import GaussianNB
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
from sklearn.preprocessing import LabelEncoder
df = pd.read_csv("IMDB Dataset.csv")
st.title(":red[IMDB Sentiment Prediction]")
st.subheader(":blue[Original DataFrame]")
df = df[:5001]
st.dataframe(df)
# Data Cleaning
def clean_text(text):
text = re.sub(r'<.*?>', '', text)
text = re.sub(r'[^a-zA-Z\s]', '', text)
text = text.lower().strip()
return text
df["review"] = df["review"].apply(clean_text)
st.subheader(":blue[Cleaned DataFrame]")
st.dataframe(df)
st.header(":blue[Accuracy of model]")
vectorizer = CountVectorizer(stop_words="english")
X = vectorizer.fit_transform(df["review"]).toarray()
df1 = pd.DataFrame(data=X,columns=vectorizer.get_feature_names_out())
label_encoder = LabelEncoder()
y = label_encoder.fit_transform(df["sentiment"])
X_train, X_test, y_train, y_test = train_test_split(df1, y, test_size=0.2, random_state=42)
model_2 = RandomForestClassifier()
model_2.fit(X_train,y_train)
y_pred = model_2.predict(X_test)
accuracy_2 = accuracy_score(y_test,y_pred)
st.write(accuracy_2)
text_input = st.text_area("Write the movie review:")
if st.button("Predict"):
if text_input is not None:
transformed_text = vectorizer.transform([text_input]).toarray()
af1 = pd.DataFrame(data=transformed_text,columns=vectorizer.get_feature_names_out())
prediction = model_2.predict(af1)
st.write("Prediction:",prediction[0])
if prediction[0] == 1:
st.write("Positive Review!")
st.balloons()
else:
st.write("Negative Review!")
st.snow()