test / model.py
devinlee14's picture
Upload 28 files
e0c55bb
Raw
History Blame Contribute Delete
3.78 kB
import streamlit as st
import pandas as pd
import nltk
from nltk.corpus import stopwords
from nltk.stem import WordNetLemmatizer
from functions.text_preprocessed import text_preprocessing
from tensorflow.keras.models import load_model
nltk.download('punkt')
nltk.download('stopwords')
nltk.download('wordnet')
def run():
st.title('Predict')
st.write('You can use our model here by inputting your text (review) here:')
# -------------------------------------------------------------------------
# Dataframe
data = pd.DataFrame()
# -------------------------------------------------------------------------
# App name
data['app'] = [st.text_input('Application name')]
# -------------------------------------------------------------------------
# Category
data['category'] = [st.text_input('Application category')]
# -------------------------------------------------------------------------
# Rating
data['rating'] = [round(st.slider('Rating', min_value=0.0, max_value=5.0), 1)]
# -------------------------------------------------------------------------
# Reviews
data['reviews'] = [st.number_input('Total review count', min_value=0)]
# -------------------------------------------------------------------------
# Size
data['size'] = [st.text_input('File size')]
# -------------------------------------------------------------------------
# Installs
data['installs'] = [st.number_input('Total installs', min_value=0)]
# -------------------------------------------------------------------------
# Type
data['type'] = [st.text_input('Paid / Free')]
# -------------------------------------------------------------------------
# Price
data['price'] = [st.number_input('Application price', min_value = 0.00)]
# -------------------------------------------------------------------------
# Content rating
data['content_rating'] = [st.text_input('Age rating')]
# -------------------------------------------------------------------------
# Genres
data['genres'] = [st.text_input("Genres").split(',')]
st.caption("Separate by ',' if multiple genres")
# -------------------------------------------------------------------------
# Last updated
data['last_updated'] = [st.date_input('Last updated')]
# -------------------------------------------------------------------------
# Current version
data['current_ver'] = [st.text_input('Current version')]
# -------------------------------------------------------------------------
# Android version
data['android_ver'] = [st.text_input('Android version')]
# -------------------------------------------------------------------------
# Review
review = st.text_input('Application review (in English)')
## Stop words
stop_words = set(stopwords.words('english'))
## Lemmatizer
lemmatizer = WordNetLemmatizer()
## Processed text
text_processed = text_preprocessing(review, lemmatizer, stop_words)
data['translated_review'] = [review]
data['text_processed'] = [text_processed]
# -------------------------------------------------------------------------
# User data
st.dataframe(data.T, width=800, height=565)
# -------------------------------------------------------------------------
# Prediction
if st.button('Predict'):
model = load_model('lstm')
sentiment_pred = model.predict(data['text_processed'])
# st.write(sentiment_pred)
if sentiment_pred > 1.5:
st.write('Positive Review')
elif (sentiment_pred < 1.5) & (sentiment_pred >= 1.0):
st.write('Negative Review')
else:
st.write('Neutral Review')