-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.py
More file actions
50 lines (39 loc) · 1.54 KB
/
main.py
File metadata and controls
50 lines (39 loc) · 1.54 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import numpy as np
from tensorflow.keras.datasets import imdb
from tensorflow.keras.preprocessing import sequence
from tensorflow.keras.models import load_model
import streamlit as st
word_index=imdb.get_word_index()
reverse_word_index={value: key for key, value in word_index.items()}
## load_model
model=load_model('simple_rnn_imdb.h5')
# Step 2: Help function
# Function to decode reviews
def decode_review(encoded_review) :
return ' '.join([reverse_word_index.get(i-3,'?') for i in encoded_review])
# function to preprocess user input
def preprocess_text(texte):
words=texte.lower().split()
encoded_review=[word_index.get(word,2)+3 for word in words]
padded_review=sequence.pad_sequences([encoded_review],maxlen=500)
return padded_review
## prediction function
def prediction_sentiment(review):
preprocessing_input=preprocess_text(review)
prediction=model.predict(preprocessing_input)
sentiment='Positive' if prediction[0][0]>0.5 else 'Negative'
return sentiment,prediction[0][0]
### streamlit app
st.title("IMDB Movie Review Sentiment Analysis")
st.write("Enter a movie review to classify it as as positive or negative.")
# user input
user_input=st.text_area('Movie Review')
if st.button('classify'):
preprocessed_input=preprocess_text(user_input)
# prediction
prediction=model.predict(preprocessed_input)
sentiment='Positive' if prediction[0][0]>0.5 else 'Negative'
st.write(f'Sentiment: {sentiment}')
st.write(f'Prediction: {prediction[0][0]}' )
else:
st.write("Please enter a movie review")