Spaces:
Running
Running
import joblib | |
import gradio as gr | |
import numpy as np | |
# Muat model dan vectorizer | |
print("Memuat model dan vectorizer...") | |
vectorizer = joblib.load('vectorizer.joblib') # Muat vectorizer | |
nb_model = joblib.load('naive_bayes.joblib') # Muat model Naive Bayes | |
print("Model dan vectorizer berhasil dimuat.") | |
# Fungsi prediksi | |
def predict_text(title, content): | |
try: | |
# Transform teks menggunakan vectorizer yang sama | |
title_vector = vectorizer.transform([title]) | |
content_vector = vectorizer.transform([content]) | |
# Gabungkan fitur | |
X_new = np.hstack((title_vector.toarray(), content_vector.toarray())) | |
# Prediksi menggunakan model Naive Bayes | |
prediction = nb_model.predict(X_new) # Prediksi kelas (0 atau 1) | |
probability = nb_model.predict_proba(X_new) # Probabilitas untuk setiap kelas | |
# Format output | |
predicted_class = int(prediction[0]) # Kelas yang diprediksi (0 atau 1) | |
probability_fakta = float(probability[0][0] * 100) # Probabilitas fakta (kelas 0) | |
probability_hoaks = float(probability[0][1] * 100) # Probabilitas hoaks (kelas 1) | |
# Cetak output (untuk debugging) | |
print(f"Kelas yang diprediksi: {predicted_class}") | |
print(f"Probabilitas fakta: {probability_fakta:.2f}%") | |
print(f"Probabilitas hoaks: {probability_hoaks:.2f}%") | |
return predicted_class, probability_fakta, probability_hoaks | |
except Exception as e: | |
print("Error:", str(e)) | |
return -1, 0.0, 0.0 # Nilai default jika terjadi error | |
# Buat antarmuka Gradio | |
demo = gr.Interface( | |
fn=predict_text, # Fungsi prediksi | |
inputs=[ | |
gr.Textbox(label="Judul Berita"), # Input judul | |
gr.Textbox(label="Isi Berita") # Input isi | |
], | |
outputs=[ | |
gr.Textbox(label="Kelas yang Diprediksi"), # Output kelas | |
gr.Textbox(label="Probabilitas Fakta"), # Output probabilitas fakta | |
gr.Textbox(label="Probabilitas Hoaks") # Output probabilitas hoaks | |
], | |
title="Deteksi Hoaks dengan Naive Bayes", | |
description="Masukkan judul dan isi berita untuk memprediksi apakah berita tersebut hoaks atau fakta." | |
) | |
# Jalankan aplikasi | |
print("Menjalankan aplikasi...") | |
demo.launch() |