Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| from transformers import DistilBertTokenizer, DistilBertForSequenceClassification, pipeline | |
| import os | |
| # Set page config | |
| st.set_page_config(page_title="Emotion Prediction & Well-being Suggestions", page_icon="๐บ", layout="centered") | |
| # Title and Introduction | |
| st.title("Emotion Prediction & Well-being Suggestions") | |
| st.markdown(""" | |
| This app uses AI to understand your emotions based on your responses. Afterward, you'll receive well-being suggestions to improve your mood, tailored specifically for you and your cultural context in Hawaii. | |
| """) | |
| # Load the emotion classification model and tokenizer | |
| def load_model(): | |
| model_name = "j-hartmann/emotion-english-distilroberta-base" | |
| try: | |
| # Attempt to load the model and tokenizer | |
| tokenizer = DistilBertTokenizer.from_pretrained(model_name) | |
| model = DistilBertForSequenceClassification.from_pretrained(model_name) | |
| emotion_classifier = pipeline("text-classification", model=model, tokenizer=tokenizer) | |
| return emotion_classifier | |
| except Exception as e: | |
| st.error(f"Error loading model: {e}") | |
| return None | |
| emotion_classifier = load_model() | |
| # If the model didn't load, exit the app | |
| if not emotion_classifier: | |
| st.stop() | |
| # Define well-being suggestions based on the emotion | |
| def get_wellbeing_suggestions(emotion): | |
| suggestions = { | |
| "joy": ["Keep enjoying life! Consider a walk on the beach, or some hula dancing to feel the rhythm of the island."], | |
| "anger": ["Practice deep breathing and mindfulness exercises. Perhaps try surfing or a peaceful walk in nature."], | |
| "sadness": ["Try a short meditation session or call a friend to chat. Hawaii offers stunning sunsets perfect for reflection."], | |
| "fear": ["Take a calming breath and practice grounding techniques. Explore Hawaiian mindfulness practices to feel centered."], | |
| "surprise": ["Embrace the feeling and explore new activities like paddleboarding or hiking."], | |
| "disgust": ["Do something relaxing, like yoga or watching the waves crash against the shore."] | |
| } | |
| return suggestions.get(emotion, ["Try some breathing exercises and give yourself time to relax."]) | |
| # Emotional Health Questions | |
| questions = [ | |
| "How would you describe your mood today? (e.g., happy, stressed, calm)", | |
| "Are there any recent events that might be affecting your emotional state?", | |
| "How do you generally cope with stress or emotional challenges?" | |
| ] | |
| responses = [] | |
| for question in questions: | |
| response = st.text_input(question) | |
| responses.append(response) | |
| # Process the responses | |
| if all(responses): | |
| user_input = " ".join(responses) | |
| # Predict emotion based on the input | |
| emotion_results = emotion_classifier(user_input) | |
| emotion = emotion_results[0]['label'] | |
| # Show emotion and well-being suggestions | |
| st.subheader(f"Your Predicted Emotion: {emotion.capitalize()}") | |
| st.write(f"Based on your responses, we suggest the following to improve your well-being:") | |
| wellbeing_suggestions = get_wellbeing_suggestions(emotion.lower()) | |
| for suggestion in wellbeing_suggestions: | |
| st.write(f"- {suggestion}") | |
| st.markdown("---") | |
| st.write("For more well-being tips and resources, explore the following links:") | |
| st.markdown("[Hawaii Mindfulness Practice](https://www.hawaiimindfulness.org)") | |
| st.markdown("[Hula Dance for Well-being](https://hulahealsthesoul.com)") | |
| else: | |
| st.warning("Please answer all the questions to receive emotional health suggestions.") | |
| # Add custom background image | |
| st.markdown(""" | |
| <style> | |
| .stApp { | |
| background-image: url('https://images.unsplash.com/photo-1602231353203-b1e5e2191b68'); | |
| background-size: cover; | |
| } | |
| </style> | |
| """, unsafe_allow_html=True) | |