Spaces:
Runtime error
Runtime error
File size: 3,550 Bytes
54d8c28 |
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 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 |
import streamlit as st
import pandas as pd
import numpy as np
import nltk
import tensorflow as tf
from nltk.corpus import stopwords
import re
from nltk.tokenize import word_tokenize
from nltk.stem import WordNetLemmatizer
from keras.models import load_model
# Load model tf fromat.
new_model = tf.keras.models.load_model('lstm1_model')
def run():
with st.form(key='Review & Rating'):
Review = st.text_input('Review your stay', value='')
Rating = st.selectbox('Rate us', (1,2,3,4,5), index=3, help='1 = very bad , 5 = very nice')
st.markdown('---')
submitted = st.form_submit_button('Predict')
data_inf = {
'Review':Review,
'Rating': Rating,
}
data_inf = pd.DataFrame([data_inf])
# Define Stopwords
## Load Stopwords from NLTK
nltk.download('stopwords')
nltk.download('punkt')
stw_en = stopwords.words("english")
## Create A New Stopwords
new_stw = [ 'hotel', 'room','rooms','good','day','resort','night','restaurant','people','time', "n't", 'got' ,
'staff',
'stay',
'location',
'service',
'stayed',
'beach',
'breakfast',
'clean',
'food',
'place',
'pool',
'like',
'really',
'bed',
'area',
'bar',
'small',
'walk',
'little',
'bathroom',
'trip',
'floor',
'minute',
'water',
'lot',
'great',
'nice',
'went',
'thing',
'problem',
'want',
'drink',
'way',
'get',
'go',
'say'
]
## Merge Stopwords
stw_en = stw_en + new_stw
stw_en = list(set(stw_en))
# Membuat Function untuk preprocessing kata dalam dataframe
def text_proses(teks):
# Mengubah Teks ke Lowercase
teks = teks.lower()
# Menghilangkan Mention
teks = re.sub("@[A-Za-z0-9_]+", " ", teks)
# Menghilangkan Hashtag
teks = re.sub("#[A-Za-z0-9_]+", " ", teks)
# Menghilangkan \n
teks = re.sub(r"\\n", " ",teks)
# Menghilangkan Whitespace
teks = teks.strip()
# Menghilangkan Link
teks = re.sub(r"http\S+", " ", teks)
teks = re.sub(r"www.\S+", " ", teks)
# Menghilangkan yang Bukan Huruf seperti Emoji, Simbol Matematika (seperti μ), dst
teks = re.sub("[^A-Za-z\s']", " ", teks)
# Melakukan Tokenisasi
tokens = word_tokenize(teks)
# Menghilangkan Stopwords
teks = ' '.join([word for word in tokens if word not in stw_en])
return teks
# Function lemmatizer
def lemmatize_text(text):
sentence = []
for word in text.split():
lemmatizer = WordNetLemmatizer()
sentence.append(lemmatizer.lemmatize(word, 'v'))
return ' '.join(sentence)
# Mengaplikasikan Semua Teknik Preprocessing ke dalam Semua Documents
data_inf['text_processed'] = data_inf['Review'].apply(text_proses)
data_inf
# lemmatize review
nltk.download('wordnet')
data_inf['text_processed'] = data_inf['text_processed'].apply(lemmatize_text)
data_inf
inf = data_inf['text_processed']
st.dataframe(inf)
if submitted:
# Predict using model ann
y_pred = new_model.predict(inf)
y_pred_conv= np.where(y_pred >= 0.5, 1, 0)
y_pred_df = pd.DataFrame(y_pred_conv, columns=['0', '1', '2'])
y_pred_final=y_pred_df.idxmax(1).astype(int)
if y_pred_final.any() == 2:
st.write('## Dude, your guest gave Positive feedback')
if y_pred_final.any() == 1:
st.write('## Dude, your guest gave Neutral feedback')
else:
st.write('## Attention, your guest gave Negative feedback')
if __name__ == '__main__':
run() |