File size: 1,102 Bytes
234529f
b28749c
 
 
 
234529f
 
 
b28749c
234529f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b28749c
234529f
 
 
 
 
 
 
 
 
 
 
b28749c
234529f
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import gradio as gr
import joblib

# Load vectorizer and models
vectorizer = joblib.load("tfidf_vectorizer.pkl")
log_model = joblib.load("logistic_model.pkl")
nb_model = joblib.load("naive_bayes_model.pkl")
svm_model = joblib.load("svm_model.pkl")

# Prediction function
def predict_spam(message, model_name):
    if not message.strip():
        return "⚠️ Please enter a message."
    
    X_input = vectorizer.transform([message])
    
    model = {
        "Logistic Regression": log_model,
        "Naive Bayes": nb_model,
        "SVM": svm_model
    }[model_name]
    
    prediction = model.predict(X_input)[0]
    
    return "🟢 Ham" if prediction == 0 else "🔴 Spam"

# Create Gradio Interface
app = gr.Interface(
    fn=predict_spam,
    inputs=[
        gr.Textbox(label="Enter your message"),
        gr.Radio(["Logistic Regression", "Naive Bayes", "SVM"], label="Choose a Model")
    ],
    outputs="text",
    title="📧 Spam Message Detector",
    description="Classify text messages as spam or ham using ML models"
)

# Run the app
if __name__ == "__main__":
    app.launch()