Keyurjotaniya007's picture
Upload 2 files
e4ddd05 verified
import streamlit as st
from textblob import TextBlob
def classify_mood(text, pos_thr=0.30, neg_thr=-0.30):
bad_words = ["stupid", "hate", "idiot", "dumb", "kill", "moron", "loser"]
if text is None or text.strip() == "":
return "Empty Text", "Please write something to analyze"
lower_text = text.lower()
for bw in bad_words:
if bw in lower_text:
return "inappropriate", "Inappropriate Words"
blob = TextBlob(text)
polarity = blob.sentiment.polarity
if polarity >= pos_thr:
return "happy", "Happy"
elif polarity <= neg_thr:
return "sad", "Sad"
else:
return "neutral", "Neutral"
st.set_page_config(page_title="Kid-safe Mood Detector", layout="centered")
st.title("Kid-safe Text-Mood Detector")
st.write("Pick sensitivity level --> Type a text --> Press Analyze --> Get Emotion")
preset = st.selectbox("Sensitivity Level:", ("Balanced (±0.30)", "Strict (±0.35)", "Sensitive (±0.25)"), index=0)
if preset == "Strict (±0.35)":
pos_thr = 0.35
neg_thr = -0.35
elif preset == "Sensitive (±0.25)":
pos_thr = 0.25
neg_thr = -0.25
else:
pos_thr = 0.30
neg_thr = -0.30
st.markdown(f"**Current thresholds:** Positive ≥ +{pos_thr:.2f} | Negative ≤ {neg_thr:.2f}")
with st.form("input_form"):
user_text = st.text_input("Write a text:")
analyze = st.form_submit_button("Analyze")
if analyze:
mood, message = classify_mood(user_text, pos_thr, neg_thr)
if mood == "empty":
emoji = "🥱"
elif mood == "inappropriate":
emoji = "⚠️"
elif mood == "happy":
emoji = "😀"
elif mood == "sad":
emoji = "😞"
else:
emoji = "😐"
st.markdown(f"### {emoji} {message}")