Spaces:
No application file
No application file
import pickle | |
import numpy as np | |
from gensim.models import KeyedVectors | |
import gradio as gr | |
# Memuat model FastText pretrained dari file .vec (contoh path: cc.id.300.vec) | |
fasttext_model = KeyedVectors.load_word2vec_format( | |
'/content/drive/MyDrive/SKRIPSI/cc.id.300.vec', binary=False | |
) | |
# Memuat model KNN dan SVM yang sudah dioptimalkan (pastikan file pickle ada) | |
with open('KNN+GridSearch.pkl', 'rb') as f: | |
knn_model = pickle.load(f) | |
with open('SVM+GridSearch.pkl', 'rb') as f: | |
svm_model = pickle.load(f) | |
# Fungsi untuk mendapatkan vektor kalimat dari FastText | |
def get_fasttext_vector(text): | |
# Tokenisasi teks menjadi kata-kata | |
words = text.split() | |
# Ambil vektor dari setiap kata menggunakan model FastText | |
word_vectors = [fasttext_model[word] for word in words if word in fasttext_model] | |
# Jika ada kata-kata yang ada dalam model, kita rata-ratakan vektor-vektor tersebut | |
if len(word_vectors) > 0: | |
return np.mean(word_vectors, axis=0) | |
else: | |
# Jika tidak ada kata yang cocok, return vektor nol (kosong) | |
return np.zeros(fasttext_model.vector_size) | |
# Fungsi prediksi untuk model KNN | |
def predict_sentiment_knn(text): | |
vector = get_fasttext_vector(text) # Mengambil vektor kalimat | |
sentiment = knn_model.predict([vector]) # Prediksi menggunakan KNN | |
return sentiment[0][0] | |
# Fungsi prediksi untuk model SVM | |
def predict_sentiment_svm(text): | |
vector = get_fasttext_vector(text) # Mengambil vektor kalimat | |
sentiment = svm_model.predict([vector]) # Prediksi menggunakan SVM | |
return sentiment[0] | |
# Fungsi umum untuk memilih model (KNN atau SVM) | |
def predict_sentiment(text, model_type='KNN'): | |
if model_type == 'KNN': | |
return predict_sentiment_knn(text) | |
else: | |
return predict_sentiment_svm(text) | |
# Membuat antarmuka Gradio | |
gr.Interface( | |
fn=predict_sentiment, # Fungsi yang dipanggil untuk prediksi | |
inputs=[ | |
gr.inputs.Textbox(label="Masukkan Teks untuk Analisis Sentimen"), # Input teks | |
gr.inputs.Radio(['KNN', 'SVM'], label="Pilih Model") # Pilih model prediksi | |
], | |
outputs="text" # Output berupa teks (hasil prediksi) | |
).launch() | |