Boorla commited on
Commit
74da44e
ยท
verified ยท
1 Parent(s): 08c6914

Upload 3 files

Browse files
Files changed (4) hide show
  1. .gitattributes +1 -0
  2. IMDB Dataset.csv +3 -0
  3. app.py +70 -0
  4. requirements.txt +4 -0
.gitattributes CHANGED
@@ -33,3 +33,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ IMDB[[:space:]]Dataset.csv filter=lfs diff=lfs merge=lfs -text
IMDB Dataset.csv ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:dfc447764f82be365fa9c2beef4e8df89d3919e3da95f5088004797d79695aa2
3
+ size 66212309
app.py ADDED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import pandas as pd
3
+ import re
4
+ from sklearn.feature_extraction.text import CountVectorizer
5
+ from sklearn.model_selection import train_test_split
6
+ from sklearn.ensemble import RandomForestClassifier
7
+ from sklearn.metrics import accuracy_score
8
+ from sklearn.preprocessing import LabelEncoder
9
+
10
+ # Streamlit Config
11
+ st.set_page_config(page_title="IMDB Sentiment Analysis", layout="wide")
12
+ st.title("๐ŸŽฌ IMDB Sentiment Analysis")
13
+
14
+ # Load Dataset
15
+ def load_data():
16
+ df = pd.read_csv(r"C:\Users\pavilion\Desktop\INNOMATICS_PROJECTS(SL)\IMDB_SENTIMENTAL_ANALYSIS\IMDB Dataset.csv")
17
+ return df
18
+
19
+ df = load_data()
20
+
21
+ # Display Dataset
22
+ st.write("### ๐Ÿ“Œ Dataset")
23
+ st.dataframe(df)
24
+
25
+ # Data Cleaning Function
26
+ def clean_text(text):
27
+ text = re.sub(r'<.*?>', '', text) # Remove HTML tags
28
+ text = re.sub(r'[^a-zA-Z\s]', '', text) # Keep only letters
29
+ return text.lower().strip()
30
+
31
+ df["review"] = df["review"].apply(clean_text)
32
+
33
+ st.write("### ๐Ÿ” Cleaned Dataset")
34
+ st.dataframe(df)
35
+
36
+ # Feature Extraction & Model Training
37
+ vectorizer = CountVectorizer(stop_words="english", max_features=10000) # Limit features
38
+ X = vectorizer.fit_transform(df["review"]) # Keep it sparse
39
+
40
+ label_encoder = LabelEncoder()
41
+ y = label_encoder.fit_transform(df["sentiment"])
42
+
43
+ X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
44
+
45
+ # Train Model
46
+ model = RandomForestClassifier(n_estimators=100, random_state=42)
47
+ model.fit(X_train, y_train)
48
+ y_pred = model.predict(X_test)
49
+
50
+ # Model Accuracy
51
+ accuracy = accuracy_score(y_test, y_pred)
52
+ st.write(f"### ๐ŸŽฏ Model Accuracy: `{accuracy:.2f}`")
53
+
54
+ # User Input for Prediction
55
+ st.write("### โœ๏ธ Enter Your Movie Review Below")
56
+ text_input = st.text_area("Write your review here...")
57
+
58
+ if st.button("๐Ÿ”ฎ Predict Sentiment"):
59
+ if text_input.strip():
60
+ transformed_text = vectorizer.transform([clean_text(text_input)]) # Keep sparse
61
+ prediction = model.predict(transformed_text)
62
+
63
+ if prediction[0] == 1:
64
+ st.success("๐ŸŽ‰ **Positive Review!**")
65
+ st.balloons()
66
+ else:
67
+ st.error("โ„๏ธ **Negative Review!**")
68
+ st.snow()
69
+ else:
70
+ st.warning("โš ๏ธ Please enter a review before predicting.")
requirements.txt ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ Streamlit
2
+ numpy
3
+ pandas
4
+