Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| import pickle | |
| import string | |
| import re | |
| from sklearn.feature_extraction.text import CountVectorizer | |
| from sklearn.naive_bayes import MultinomialNB | |
| from sklearn.pipeline import Pipeline | |
| def preprocess_text(text): | |
| text = text.lower() | |
| text = re.sub(f"[{string.punctuation}]", "", text) | |
| return text | |
| # Load the trained model (or train a simple one if not available) | |
| try: | |
| with open("spam_model.pkl", "rb") as f: | |
| model = pickle.load(f) | |
| except FileNotFoundError: | |
| # Sample training data | |
| spam_data = [ | |
| ("Win a free iPhone now", 1), | |
| ("Urgent! You won a lottery", 1), | |
| ("Call me when you are free", 0), | |
| ("Meeting at 5pm", 0), | |
| ] | |
| texts, labels = zip(*spam_data) | |
| pipeline = Pipeline([ | |
| ("vectorizer", CountVectorizer(preprocessor=preprocess_text)), | |
| ("classifier", MultinomialNB()) | |
| ]) | |
| model = pipeline.fit(texts, labels) | |
| with open("spam_model.pkl", "wb") as f: | |
| pickle.dump(model, f) | |
| # Streamlit UI | |
| st.title("📧 Spam Email Detector") | |
| # Instructions for using the app | |
| st.write("### Instructions:") | |
| st.write("1. Enter the email text in the text box below.") | |
| st.write("2. Click the 'Check Spam' button.") | |
| st.write("3. The app will analyze the text and determine if it's Spam or Not Spam.") | |
| st.write("4. If no text is entered, a warning will be displayed.") | |
| email_text = st.text_area("Email Content", "") | |
| if st.button("Check Spam"): | |
| if email_text: | |
| prediction = model.predict([email_text])[0] | |
| result = "Spam" if prediction == 1 else "Not Spam" | |
| st.success(f"Result: {result}") | |
| else: | |
| st.warning("Please enter an email content.") | |