restyaaa commited on
Commit
f10ad37
·
verified ·
1 Parent(s): 3a2d6f5

Upload app.py

Browse files
Files changed (1) hide show
  1. app.py +60 -0
app.py ADDED
@@ -0,0 +1,60 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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()