Spaces:
Runtime error
Runtime error
| import streamlit as st | |
| import pandas as pd | |
| from keras.models import load_model | |
| import numpy as np | |
| import re | |
| from Sastrawi.Stemmer.StemmerFactory import StemmerFactory | |
| import nltk | |
| from nltk.tokenize import word_tokenize | |
| import tensorflow as tf | |
| st.set_page_config( | |
| page_title="Indonesian Sentiment Analysis") | |
| stw = pd.read_csv('https://raw.githubusercontent.com/rizalespe/Dataset-Sentimen-Analisis-Bahasa-Indonesia/master/stopword_tweet_pilkada_DKI_2017.csv') | |
| stpwds_id = stw.values.tolist() | |
| stpwds_id.append(['ada']) | |
| stemmer = StemmerFactory().create_stemmer() | |
| model = load_model('best_model.H5') | |
| nltk.download('punkt') | |
| def run(): | |
| st.title("Indonesian Sentiment Analysis App") | |
| st.image('https://i.pinimg.com/originals/52/ad/6a/52ad6a11c1dcb1692ff9e321bd520167.gif') | |
| st.subheader("Enter text to analyze sentiment") | |
| user_input = st.text_area("Input Text", "") | |
| if st.button("Analyze"): | |
| # Case folding | |
| text1 = user_input.lower() | |
| # Mention removal | |
| text2 = re.sub("@[A-Za-z0-9_]+", " ", text1) | |
| # Hashtags removal | |
| text3 = re.sub("#[A-Za-z0-9_]+", " ", text2) | |
| # Newline removal (\n) | |
| text4 = re.sub(r"\\n", " ",text3) | |
| # Whitespace removal | |
| text5 = text4.strip() | |
| # URL removal | |
| text6 = re.sub(r"http\S+", " ", text5) | |
| text7 = re.sub(r"www.\S+", " ", text6) | |
| # Non-letter removal (such as emoticon, symbol (like μ, $, 兀), etc | |
| text8 = re.sub("[^A-Za-z\s']", " ", text7) | |
| # Tokenization | |
| tokens = word_tokenize(text8) | |
| # Stopwords removal | |
| # tokens = [word for word in tokens if word not in stpwds_id] | |
| tokens1 = [] | |
| for word in tokens: | |
| if word not in stpwds_id: | |
| tokens1.append(word) | |
| # Stemming | |
| # tokens2 = [stemmer.stem(word) for word in tokens] | |
| tokens2 = [] | |
| for word in tokens1: | |
| tokens2.append(stemmer.stem(word)) | |
| # Combining Tokens | |
| text8 = ' '.join(tokens2) | |
| pred = model.predict([[text8]]) | |
| if pred > 0.3: | |
| sentiment = "Positive" | |
| else: | |
| sentiment = "Negative" | |
| st.write(f"Sentiment: {sentiment}") | |
| if __name__ == "__main__": | |
| run() | |