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