Bindupriya/imdb
0
1import streamlit as st2import pandas as pd3import re4 5from sklearn.feature_extraction.text import CountVectorizer6from sklearn.model_selection import train_test_split7from sklearn.naive_bayes import GaussianNB8from sklearn.ensemble import RandomForestClassifier9from sklearn.metrics import accuracy_score10from sklearn.preprocessing import LabelEncoder11 12 13df = pd.read_csv(r"IMDB%20Dataset.csv")14st.title(":red[IMDB Sentiment Prediction]")15st.subheader(":blue[Original DataFrame]")16df = df[:5001] 17st.dataframe(df) 18 19# Data Cleaning20def clean_text(text):21 text = re.sub(r'<.*?>', '', text) 22 text = re.sub(r'[^a-zA-Z\s]', '', text) 23 text = text.lower().strip() 24 return text25 26df["review"] = df["review"].apply(clean_text)27st.subheader(":blue[Cleaned DataFrame]")28st.dataframe(df) 29 30st.header(":blue[Accuracy of model]") 31 32vectorizer = CountVectorizer(stop_words="english")33X = vectorizer.fit_transform(df["review"]).toarray()34 35df1 = pd.DataFrame(data=X,columns=vectorizer.get_feature_names_out())36 37label_encoder = LabelEncoder()38y = label_encoder.fit_transform(df["sentiment"])39X_train, X_test, y_train, y_test = train_test_split(df1, y, test_size=0.2, random_state=42)40 41 42 43model_2 = RandomForestClassifier()44model_2.fit(X_train,y_train)45y_pred = model_2.predict(X_test)46accuracy_2 = accuracy_score(y_test,y_pred)47st.write(accuracy_2)48 49 50 51text_input = st.text_area("Write the movie review:")52 53if st.button("Predict"): 54 if text_input is not None: 55 transformed_text = vectorizer.transform([text_input]).toarray()56 af1 = pd.DataFrame(data=transformed_text,columns=vectorizer.get_feature_names_out())57 prediction = model_2.predict(af1)58 59 60 st.write("Prediction:",prediction[0])61 62 if prediction[0] == 1:63 st.write("Positive Review!")64 st.balloons() 65 else:66 st.write("Negative Review!")67 st.snow()