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()