Update app.py
Browse files
app.py
CHANGED
@@ -3,6 +3,7 @@ from transformers import BertTokenizer
|
|
3 |
from transformers import TFBertForSequenceClassification
|
4 |
from Sastrawi.Stemmer.StemmerFactory import StemmerFactory # Import Sastrawi
|
5 |
import streamlit as st
|
|
|
6 |
|
7 |
# Fungsi untuk memuat model BERT dan tokenizer
|
8 |
PRE_TRAINED_MODEL = 'indobenchmark/indobert-base-p2'
|
@@ -16,7 +17,20 @@ stemmer = StemmerFactory().create_stemmer() # Membuat stemmer Sastrawi
|
|
16 |
def preprocess_text(text):
|
17 |
# Menggunakan Sastrawi untuk stemming
|
18 |
stemmed_text = stemmer.stem(text.lower())
|
|
|
|
|
|
|
|
|
19 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
20 |
return stemmed_text
|
21 |
|
22 |
def predict_sentiment(text):
|
@@ -27,24 +41,43 @@ def predict_sentiment(text):
|
|
27 |
sentiment = tf.argmax(probabilities, axis=1)
|
28 |
return sentiment.numpy()[0], probabilities.numpy()[0]
|
29 |
|
30 |
-
|
31 |
-
st.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
32 |
|
33 |
# Input teks
|
34 |
-
text = st.text_area('Masukkan teks', '')
|
35 |
|
36 |
# Tombol untuk memprediksi sentimen
|
37 |
-
if st.button('Prediksi'):
|
38 |
-
|
39 |
-
|
40 |
-
else:
|
41 |
-
sentiment, probabilities = predict_sentiment(text)
|
42 |
-
|
43 |
-
# Menghitung persentase probabilitas sentimen positif
|
44 |
-
positive_probability = probabilities[1] * 100
|
45 |
-
negative_probability = probabilities[0] * 100
|
46 |
-
st.write(f'HASIL PREDIKSI')
|
47 |
-
if sentiment == 0:
|
48 |
-
st.write(f'Negatif ({negative_probability:.2f}%)')
|
49 |
else:
|
50 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
from transformers import TFBertForSequenceClassification
|
4 |
from Sastrawi.Stemmer.StemmerFactory import StemmerFactory # Import Sastrawi
|
5 |
import streamlit as st
|
6 |
+
import re
|
7 |
|
8 |
# Fungsi untuk memuat model BERT dan tokenizer
|
9 |
PRE_TRAINED_MODEL = 'indobenchmark/indobert-base-p2'
|
|
|
17 |
def preprocess_text(text):
|
18 |
# Menggunakan Sastrawi untuk stemming
|
19 |
stemmed_text = stemmer.stem(text.lower())
|
20 |
+
stemmed_text = re.sub(r'\d+', '', stemmed_text) # Menghapus angka
|
21 |
+
stemmed_text = re.sub(r'\s+', ' ', stemmed_text) # Menghapus spasi berlebihan
|
22 |
+
stemmed_text = re.sub(r'[^\w\s]', '', stemmed_text)# Menghapus simbol dan tanda baca
|
23 |
+
stemmed_text = re.sub(r'[^\x00-\x7F]+', '', stemmed_text) # ascii
|
24 |
|
25 |
+
stopwords = ['dan', 'atau', 'juga', 'yang', 'untuk', 'karena', 'juga', 'tapi', 'yg', 'lg', 'ini', 'sih', 'saya', 'nih', 'ni', 'aku', 'ya', 'kami', 'lagi', 'udh', 'di', 'kita',
|
26 |
+
'terus', 'kok', 'jadi', 'tpi', 'tapi', 'sama', 'lain', 'sm', 'min', 'karna', 'ah', 'eh', 'oh', 'he','kamu', 'aku',
|
27 |
+
'diri', 'waduh', 'kan', 'itu', 'lalu', 'd', 'klo', 'pun', 'dr', 'nge', 'mah', 'ny',
|
28 |
+
'itu', 'dari', 'kite', 'yaa', 'si', 'lah', 'gua', 'gue', 'iki', 'wooii', 'woy',
|
29 |
+
'woi', 'gw', 'dari', 'bang', 'sya', 'ane', 'mulu', 'rb', 'org', 'oii', 'gtu', 'gya', 'nii', 'jga', 'duh', 'dah', 'deh', 'nang', 'p', 'cs' ,
|
30 |
+
'g', 'njii', 'lot', 'loh', 'x', 'lu', 'woe', 'yg', 'kak', 'aq', 'dong', 'kali', 'rill', 'wahh', 'trss', 'sya', 'dab', 'test', 'yok', 'kk',
|
31 |
+
'pak','rp', 'kok', 'kek', 'bosku', 'nya', 'bang', 'ka', 'gais', 'gih', 'oy', 'ki', 'ku', 'ke', 'ko', 'yah'
|
32 |
+
]
|
33 |
+
stemmed_text = ' '.join(word for word in stemmed_text.split() if word not in stopwords)
|
34 |
return stemmed_text
|
35 |
|
36 |
def predict_sentiment(text):
|
|
|
41 |
sentiment = tf.argmax(probabilities, axis=1)
|
42 |
return sentiment.numpy()[0], probabilities.numpy()[0]
|
43 |
|
44 |
+
menu = ["Home","Prediksi Analisis"]
|
45 |
+
choice = st.sidebar.selectbox("Menu", menu)
|
46 |
+
|
47 |
+
|
48 |
+
if choice == "Home":
|
49 |
+
st.title("Selamat datang di Prediksi Sentimen Aplikasi Dana di Intagram Menggunakan BERT")
|
50 |
+
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.")
|
51 |
+
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.")
|
52 |
+
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.")
|
53 |
+
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.")
|
54 |
+
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.")
|
55 |
+
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.")
|
56 |
+
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.")
|
57 |
+
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.")
|
58 |
+
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.")
|
59 |
+
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.")
|
60 |
+
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.")
|
61 |
+
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.")
|
62 |
+
st.write()
|
63 |
+
elif choice == "Prediksi Analisis":
|
64 |
+
st.title('Prediksi Sentimen menggunakan BERT')
|
65 |
|
66 |
# Input teks
|
67 |
+
text = st.text_area('Masukkan teks', '')
|
68 |
|
69 |
# Tombol untuk memprediksi sentimen
|
70 |
+
if st.button('Prediksi'):
|
71 |
+
if text.strip() == '':
|
72 |
+
st.warning('Masukkan teks terlebih dahulu.')
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
73 |
else:
|
74 |
+
sentiment, probabilities = predict_sentiment(text)
|
75 |
+
|
76 |
+
# Menghitung persentase probabilitas sentimen positif
|
77 |
+
positive_probability = probabilities[1] * 100
|
78 |
+
negative_probability = probabilities[0] * 100
|
79 |
+
st.write(f'HASIL PREDIKSI')
|
80 |
+
if sentiment == 0:
|
81 |
+
st.write(f'Negatif ({negative_probability:.2f}%)')
|
82 |
+
else:
|
83 |
+
st.write(f'Positif ({positive_probability:.2f}%)')
|