Alfarizky Oscandar
initial commit
c7ac715
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()