Spaces:
Running
Running
File size: 2,120 Bytes
f9903ea c70917b f9903ea c70917b f9903ea c70917b f9903ea c70917b f9903ea |
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 43 44 |
import streamlit as st
from transformers import pipeline
def main():
# Load the models
spam_pipeline = pipeline("text-classification", model="cybersectony/phishing-email-detection-distilbert_v2.4.1")
sentiment_pipeline = pipeline("text-classification", model="ISOM5240GP4/email_sentiment")
# Title and description
st.title("Email Analysis Tool")
st.write("Enter an email body below to check if it's spam and analyze its sentiment.")
# Text area for email input
email_body = st.text_area("Email Body", height=200)
# Button to trigger analysis
if st.button("Analyze Email"):
if email_body:
# Step 1: Check if the email is spam
spam_result = spam_pipeline(email_body)
spam_label = spam_result[0]["label"]
spam_confidence = spam_result[0]["score"]
# If it's spam, display result and stop
if spam_label == "POSITIVE": # Assuming "POSITIVE" means spam/phishing (check model docs)
st.write(f"This is a spam email (Confidence: {spam_confidence:.2f}). No follow-up needed.")
else:
# Step 2: If not spam, analyze sentiment
sentiment_result = sentiment_pipeline(email_body)
sentiment_label = sentiment_result[0]["label"]
sentiment_confidence = sentiment_result[0]["score"]
if sentiment_label == "POSITIVE":
st.write(f"This email is not spam (Confidence: {spam_confidence:.2f}).")
st.write(f"Sentiment: Positive (Confidence: {sentiment_confidence:.2f}). No follow-up needed.")
else: # Assuming "NEGATIVE" for negative sentiment
st.write(f"This email is not spam (Confidence: {spam_confidence:.2f}).")
st.write(f"Sentiment: Negative (Confidence: {sentiment_confidence:.2f}).")
st.write("**This email needs follow-up as it is not spam and has negative sentiment.**")
else:
st.write("Please enter an email body to analyze.")
if __name__ == "__main__":
main() |