sil / app.py
slvss's picture
Create app.py
4964d99 verified
Raw History Blame Contribute Delete
930 Bytes
import pandas as pd
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.naive_bayes import MultinomialNB
import gradio as gr
# Load dataset
df = pd.read_csv("spam.csv", encoding='latin-1')[['v1', 'v2']]
df.columns = ['label', 'message']
df['label'] = df['label'].map({'ham': 0, 'spam': 1})
# Train model
X = df['message']
y = df['label']
vectorizer = TfidfVectorizer(stop_words='english')
X_vec = vectorizer.fit_transform(X)
model = MultinomialNB()
model.fit(X_vec, y)
# Inference function
def predict_spam(text):
vec = vectorizer.transform([text])
pred = model.predict(vec)[0]
return "SPAM ❌" if pred else "HAM ✅ (Bukan Spam)"
# Gradio app
gr.Interface(
fn=predict_spam,
inputs=gr.Textbox(lines=4, placeholder="Masukkan pesan..."),
outputs="text",
title="Klasifikasi Spam SMS",
description="Aplikasi klasifikasi pesan spam menggunakan Naive Bayes + TF-IDF"
).launch()