Spaces:
Sleeping
Sleeping
| 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') |