|
import tensorflow as tf |
|
from transformers import BertTokenizer |
|
from transformers import TFBertForSequenceClassification |
|
from Sastrawi.Stemmer.StemmerFactory import StemmerFactory |
|
import streamlit as st |
|
import re |
|
|
|
|
|
PRE_TRAINED_MODEL = 'indobenchmark/indobert-base-p2' |
|
bert_tokenizer = BertTokenizer.from_pretrained(PRE_TRAINED_MODEL) |
|
bert_model = TFBertForSequenceClassification.from_pretrained(PRE_TRAINED_MODEL, num_labels=2) |
|
bert_model.load_weights('model.h5') |
|
|
|
|
|
stemmer = StemmerFactory().create_stemmer() |
|
|
|
def preprocess_text(text): |
|
|
|
stemmed_text = stemmer.stem(text.lower()) |
|
stemmed_text = re.sub(r'\d+', '', stemmed_text) |
|
stemmed_text = re.sub(r'\s+', ' ', stemmed_text) |
|
stemmed_text = re.sub(r'[^\w\s]', '', stemmed_text) |
|
stemmed_text = re.sub(r'[^\x00-\x7F]+', '', stemmed_text) |
|
|
|
stopwords = ['dan', 'atau', 'juga', 'yang', 'untuk', 'karena', 'juga', 'tapi', 'yg', 'lg', 'ini', 'sih', 'saya', 'nih', 'ni', 'aku', 'ya', 'kami', 'lagi', 'udh', 'di', 'kita', |
|
'terus', 'kok', 'jadi', 'tpi', 'tapi', 'sama', 'lain', 'sm', 'min', 'karna', 'ah', 'eh', 'oh', 'he','kamu', 'aku', |
|
'diri', 'waduh', 'kan', 'itu', 'lalu', 'd', 'klo', 'pun', 'dr', 'nge', 'mah', 'ny', |
|
'itu', 'dari', 'kite', 'yaa', 'si', 'lah', 'gua', 'gue', 'iki', 'wooii', 'woy', |
|
'woi', 'gw', 'dari', 'bang', 'sya', 'ane', 'mulu', 'rb', 'org', 'oii', 'gtu', 'gya', 'nii', 'jga', 'duh', 'dah', 'deh', 'nang', 'p', 'cs' , |
|
'g', 'njii', 'lot', 'loh', 'x', 'lu', 'woe', 'yg', 'kak', 'aq', 'dong', 'kali', 'rill', 'wahh', 'trss', 'sya', 'dab', 'test', 'yok', 'kk', |
|
'pak','rp', 'kok', 'kek', 'bosku', 'nya', 'bang', 'ka', 'gais', 'gih', 'oy', 'ki', 'ku', 'ke', 'ko', 'yah' |
|
] |
|
stemmed_text = ' '.join(word for word in stemmed_text.split() if word not in stopwords) |
|
return stemmed_text |
|
|
|
def predict_sentiment(text): |
|
preprocessed_text = preprocess_text(text) |
|
input_ids = tf.constant(bert_tokenizer.encode(preprocessed_text, add_special_tokens=True))[None, :] |
|
logits = bert_model(input_ids)[0] |
|
probabilities = tf.nn.softmax(logits, axis=1) |
|
sentiment = tf.argmax(probabilities, axis=1) |
|
return sentiment.numpy()[0], probabilities.numpy()[0] |
|
|
|
menu = ["Home","Prediksi Analisis"] |
|
choice = st.sidebar.selectbox("Menu", menu) |
|
|
|
|
|
if choice == "Home": |
|
st.title("Selamat datang di Prediksi Sentimen Aplikasi Dana di Intagram Menggunakan BERT") |
|
st.write("Ini adalah aplikasi prediksi ulasan aplikasi Vidio menggunakan model Decision Tree. Aplikasi ini dapat memprediksi apakah ulasan aplikasi Vidio bersifat positif atau negatif berdasarkan teks yang dimasukkan.") |
|
st.write("Ini adalah aplikasi prediksi ulasan aplikasi Vidio menggunakan model Decision Tree. Aplikasi ini dapat memprediksi apakah ulasan aplikasi Vidio bersifat positif atau negatif berdasarkan teks yang dimasukkan.") |
|
st.write("Ini adalah aplikasi prediksi ulasan aplikasi Vidio menggunakan model Decision Tree. Aplikasi ini dapat memprediksi apakah ulasan aplikasi Vidio bersifat positif atau negatif berdasarkan teks yang dimasukkan.") |
|
st.write("Ini adalah aplikasi prediksi ulasan aplikasi Vidio menggunakan model Decision Tree. Aplikasi ini dapat memprediksi apakah ulasan aplikasi Vidio bersifat positif atau negatif berdasarkan teks yang dimasukkan.") |
|
st.write("Ini adalah aplikasi prediksi ulasan aplikasi Vidio menggunakan model Decision Tree. Aplikasi ini dapat memprediksi apakah ulasan aplikasi Vidio bersifat positif atau negatif berdasarkan teks yang dimasukkan.") |
|
st.write("Ini adalah aplikasi prediksi ulasan aplikasi Vidio menggunakan model Decision Tree. Aplikasi ini dapat memprediksi apakah ulasan aplikasi Vidio bersifat positif atau negatif berdasarkan teks yang dimasukkan.") |
|
st.write("Ini adalah aplikasi prediksi ulasan aplikasi Vidio menggunakan model Decision Tree. Aplikasi ini dapat memprediksi apakah ulasan aplikasi Vidio bersifat positif atau negatif berdasarkan teks yang dimasukkan.") |
|
st.write("Ini adalah aplikasi prediksi ulasan aplikasi Vidio menggunakan model Decision Tree. Aplikasi ini dapat memprediksi apakah ulasan aplikasi Vidio bersifat positif atau negatif berdasarkan teks yang dimasukkan.") |
|
st.write("Ini adalah aplikasi prediksi ulasan aplikasi Vidio menggunakan model Decision Tree. Aplikasi ini dapat memprediksi apakah ulasan aplikasi Vidio bersifat positif atau negatif berdasarkan teks yang dimasukkan.") |
|
st.write("Ini adalah aplikasi prediksi ulasan aplikasi Vidio menggunakan model Decision Tree. Aplikasi ini dapat memprediksi apakah ulasan aplikasi Vidio bersifat positif atau negatif berdasarkan teks yang dimasukkan.") |
|
st.write("Ini adalah aplikasi prediksi ulasan aplikasi Vidio menggunakan model Decision Tree. Aplikasi ini dapat memprediksi apakah ulasan aplikasi Vidio bersifat positif atau negatif berdasarkan teks yang dimasukkan.") |
|
st.write("Ini adalah aplikasi prediksi ulasan aplikasi Vidio menggunakan model Decision Tree. Aplikasi ini dapat memprediksi apakah ulasan aplikasi Vidio bersifat positif atau negatif berdasarkan teks yang dimasukkan.") |
|
st.write() |
|
elif choice == "Prediksi Analisis": |
|
st.title('Prediksi Sentimen menggunakan BERT') |
|
|
|
|
|
text = st.text_area('Masukkan teks', '') |
|
|
|
|
|
if st.button('Prediksi'): |
|
if text.strip() == '': |
|
st.warning('Masukkan teks terlebih dahulu.') |
|
else: |
|
sentiment, probabilities = predict_sentiment(text) |
|
|
|
|
|
positive_probability = probabilities[1] * 100 |
|
negative_probability = probabilities[0] * 100 |
|
st.write(f'HASIL PREDIKSI') |
|
if sentiment == 0: |
|
st.write(f'Negatif ({negative_probability:.2f}%)') |
|
else: |
|
st.write(f'Positif ({positive_probability:.2f}%)') |