Spaces:
No application file
No application file
Delete app.py
Browse files
app.py
DELETED
@@ -1,60 +0,0 @@
|
|
1 |
-
import pickle
|
2 |
-
import numpy as np
|
3 |
-
from gensim.models import KeyedVectors
|
4 |
-
import gradio as gr
|
5 |
-
|
6 |
-
# Memuat model FastText pretrained dari file .vec (contoh path: cc.id.300.vec)
|
7 |
-
fasttext_model = KeyedVectors.load_word2vec_format(
|
8 |
-
'/content/drive/MyDrive/SKRIPSI/cc.id.300.vec', binary=False
|
9 |
-
)
|
10 |
-
|
11 |
-
# Memuat model KNN dan SVM yang sudah dioptimalkan (pastikan file pickle ada)
|
12 |
-
with open('KNN+GridSearch.pkl', 'rb') as f:
|
13 |
-
knn_model = pickle.load(f)
|
14 |
-
|
15 |
-
with open('SVM+GridSearch.pkl', 'rb') as f:
|
16 |
-
svm_model = pickle.load(f)
|
17 |
-
|
18 |
-
# Fungsi untuk mendapatkan vektor kalimat dari FastText
|
19 |
-
def get_fasttext_vector(text):
|
20 |
-
# Tokenisasi teks menjadi kata-kata
|
21 |
-
words = text.split()
|
22 |
-
|
23 |
-
# Ambil vektor dari setiap kata menggunakan model FastText
|
24 |
-
word_vectors = [fasttext_model[word] for word in words if word in fasttext_model]
|
25 |
-
|
26 |
-
# Jika ada kata-kata yang ada dalam model, kita rata-ratakan vektor-vektor tersebut
|
27 |
-
if len(word_vectors) > 0:
|
28 |
-
return np.mean(word_vectors, axis=0)
|
29 |
-
else:
|
30 |
-
# Jika tidak ada kata yang cocok, return vektor nol (kosong)
|
31 |
-
return np.zeros(fasttext_model.vector_size)
|
32 |
-
|
33 |
-
# Fungsi prediksi untuk model KNN
|
34 |
-
def predict_sentiment_knn(text):
|
35 |
-
vector = get_fasttext_vector(text) # Mengambil vektor kalimat
|
36 |
-
sentiment = knn_model.predict([vector]) # Prediksi menggunakan KNN
|
37 |
-
return sentiment[0][0]
|
38 |
-
|
39 |
-
# Fungsi prediksi untuk model SVM
|
40 |
-
def predict_sentiment_svm(text):
|
41 |
-
vector = get_fasttext_vector(text) # Mengambil vektor kalimat
|
42 |
-
sentiment = svm_model.predict([vector]) # Prediksi menggunakan SVM
|
43 |
-
return sentiment[0]
|
44 |
-
|
45 |
-
# Fungsi umum untuk memilih model (KNN atau SVM)
|
46 |
-
def predict_sentiment(text, model_type='KNN'):
|
47 |
-
if model_type == 'KNN':
|
48 |
-
return predict_sentiment_knn(text)
|
49 |
-
else:
|
50 |
-
return predict_sentiment_svm(text)
|
51 |
-
|
52 |
-
# Membuat antarmuka Gradio
|
53 |
-
gr.Interface(
|
54 |
-
fn=predict_sentiment, # Fungsi yang dipanggil untuk prediksi
|
55 |
-
inputs=[
|
56 |
-
gr.inputs.Textbox(label="Masukkan Teks untuk Analisis Sentimen"), # Input teks
|
57 |
-
gr.inputs.Radio(['KNN', 'SVM'], label="Pilih Model") # Pilih model prediksi
|
58 |
-
],
|
59 |
-
outputs="text" # Output berupa teks (hasil prediksi)
|
60 |
-
).launch()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|