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()