Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| from transformers import AutoTokenizer, AutoModelForSequenceClassification | |
| import torch | |
| # Load model and tokenizer | |
| model_name = "niru-nny/SMS_Spam_Detection" | |
| tokenizer = AutoTokenizer.from_pretrained(model_name) | |
| model = AutoModelForSequenceClassification.from_pretrained(model_name) | |
| def classify_message(text): | |
| """ | |
| Classify an SMS message as HAM or SPAM | |
| Args: | |
| text: Input SMS message text | |
| Returns: | |
| Dictionary with classification results | |
| """ | |
| if not text or text.strip() == "": | |
| return {"Error": "Please enter a message"} | |
| # Tokenize input | |
| inputs = tokenizer( | |
| text, | |
| return_tensors="pt", | |
| truncation=True, | |
| padding=True, | |
| max_length=128 | |
| ) | |
| # Get prediction | |
| with torch.no_grad(): | |
| outputs = model(**inputs) | |
| predictions = torch.nn.functional.softmax(outputs.logits, dim=-1) | |
| # Extract probabilities | |
| ham_prob = predictions[0][0].item() | |
| spam_prob = predictions[0][1].item() | |
| return { | |
| "HAM (Legitimate)": ham_prob, | |
| "SPAM": spam_prob | |
| } | |
| # Example messages | |
| examples = [ | |
| ["Congratulations! You've won a $1000 gift card. Click here to claim now!"], | |
| ["Hey, are we still meeting for lunch tomorrow at 12?"], | |
| ["URGENT! Your account has been suspended. Verify now to restore access."], | |
| ["Thanks for your help today. I really appreciate it!"], | |
| ["FREE entry in 2 a wkly comp to win FA Cup final tkts 21st May 2005. Text FA to 87121"], | |
| ["I'll call you later tonight after work."], | |
| ["WINNER!! As a valued customer, you have been selected to receive Β£900 prize reward!"], | |
| ["Can you pick up some milk on your way home?"], | |
| ] | |
| # Create Gradio interface | |
| demo = gr.Interface( | |
| fn=classify_message, | |
| inputs=gr.Textbox( | |
| lines=5, | |
| placeholder="Enter SMS message here...", | |
| label="SMS Message" | |
| ), | |
| outputs=gr.Label(num_top_classes=2, label="Classification Results"), | |
| title="π± SMS Spam Detection", | |
| description=""" | |
| This classifier uses a fine-tuned BERT model to detect spam in SMS messages. | |
| **Performance:** 99.16% Accuracy | 97.30% Precision | 96.43% Recall | |
| Simply enter an SMS message below and the model will classify it as either legitimate (HAM) or spam (SPAM). | |
| """, | |
| examples=examples, | |
| theme=gr.themes.Soft(), | |
| article=""" | |
| ### About This Model | |
| This model is trained on the SMS Spam Collection dataset and achieves state-of-the-art performance in spam detection. | |
| **Model:** `niru-nny/SMS_Spam_Detection` | |
| **Base Architecture:** BERT (bert-base-uncased) | |
| **Dataset:** SMS Spam Collection (5,574 messages) | |
| ### Use Cases | |
| - π§ Spam filtering in messaging apps | |
| - π‘οΈ Protection against phishing attempts | |
| - π Content moderation | |
| - π° Fraud detection | |
| ### Tips for Best Results | |
| - The model works best with English text messages | |
| - Keep messages under 128 words for optimal performance | |
| - The model is trained on SMS-style language (abbreviations, slang included) | |
| --- | |
| **License:** MIT | [Model Card](https://huggingface.co/niru-nny/SMS_Spam_Detection) | [GitHub](https://github.com/niru-nny) | |
| """ | |
| ) | |
| if __name__ == "__main__": | |
| demo.launch() | |