Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -5,161 +5,98 @@ from transformers import pipeline
|
|
5 |
# Emotion classifier (use a pre-trained model from Hugging Face)
|
6 |
emotion_analyzer = pipeline("text-classification", model="distilbert-base-uncased")
|
7 |
|
8 |
-
#
|
9 |
questions = [
|
10 |
-
"How are you feeling
|
11 |
-
"What
|
12 |
-
"
|
13 |
-
"What’s
|
14 |
-
"
|
15 |
-
"Have you spent quality time with someone recently?",
|
16 |
-
"What was your most challenging moment today?",
|
17 |
-
"How would you describe your mood right now?",
|
18 |
-
"Are you excited about any upcoming events?",
|
19 |
-
"Do you feel calm or restless at the moment?",
|
20 |
-
"What is currently taking up most of your mental space?",
|
21 |
-
"How do you feel about your current workload?",
|
22 |
-
"Have you smiled or laughed today? If yes, why?",
|
23 |
-
"Do you feel supported by others around you?",
|
24 |
-
"Are there any worries that keep recurring for you?",
|
25 |
-
"What’s the best thing that happened to you recently?",
|
26 |
-
"Do you feel emotionally drained or refreshed?",
|
27 |
-
"What thoughts are you waking up with lately?",
|
28 |
-
"Do you feel connected with nature or your surroundings?",
|
29 |
-
"Have you had a chance to relax today?",
|
30 |
-
"What’s your level of excitement about your current projects?",
|
31 |
-
"Do you feel appreciated by people around you?",
|
32 |
-
"What’s the last memory that made you feel deeply at peace?",
|
33 |
-
"Are there any emotions you’re struggling to understand?",
|
34 |
-
"What is something that makes you proud about yourself?",
|
35 |
-
"Do you feel overwhelmed by responsibilities today?",
|
36 |
-
"What’s one thing you wish you could change right now?",
|
37 |
-
"Are you spending time on activities that energize you?",
|
38 |
-
"Do you feel hopeful about your personal goals?",
|
39 |
-
"What’s something that inspires you daily?",
|
40 |
]
|
41 |
|
42 |
-
# Expanded
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
43 |
suggestion_database = {
|
44 |
-
"NEGATIVE": {
|
45 |
-
"suggestions": [
|
46 |
-
"Try a guided meditation", "Take a walk in nature", "Connect with a trusted friend",
|
47 |
-
"Write down your feelings in a journal", "Do some light yoga", "Listen to soothing music",
|
48 |
-
"Practice deep breathing exercises", "Declutter a small space", "Watch an uplifting movie",
|
49 |
-
"Try a creative activity like drawing or writing"
|
50 |
-
],
|
51 |
-
"articles": [
|
52 |
-
{"title": "Overcoming Sadness", "url": "https://example.com/sadness1"},
|
53 |
-
{"title": "Understanding Depression", "url": "https://example.com/sadness2"},
|
54 |
-
{"title": "Ways to Break Negative Thinking", "url": "https://example.com/negativity"},
|
55 |
-
],
|
56 |
-
"videos": [
|
57 |
-
{"title": "Mindfulness for Sadness", "url": "https://www.youtube.com/watch?v=sadnessvideo1"},
|
58 |
-
{"title": "Coping with Grief", "url": "https://www.youtube.com/watch?v=sadnessvideo2"},
|
59 |
-
{"title": "Stress Relief Techniques", "url": "https://www.youtube.com/watch?v=stressrelief"},
|
60 |
-
],
|
61 |
-
},
|
62 |
"POSITIVE": {
|
63 |
-
"suggestions": [
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
],
|
69 |
-
"articles": [
|
70 |
-
|
71 |
-
{"title": "Maintaining Positive Emotions", "url": "https://example.com/joy2"},
|
72 |
-
{"title": "Creating a Happiness Routine", "url": "https://example.com/happiness"},
|
73 |
-
],
|
74 |
-
"videos": [
|
75 |
-
{"title": "Boosting Your Happiness", "url": "https://www.youtube.com/watch?v=joyvideo1"},
|
76 |
-
{"title": "Practicing Gratitude", "url": "https://www.youtube.com/watch?v=joyvideo2"},
|
77 |
-
{"title": "Inspiring Talks on Positivity", "url": "https://www.youtube.com/watch?v=positivitytalk"},
|
78 |
-
],
|
79 |
},
|
80 |
"NEUTRAL": {
|
81 |
-
"suggestions": [
|
82 |
-
|
83 |
-
|
84 |
-
"Disconnect from screens for a while", "Spend time in nature", "Organize your workspace",
|
85 |
-
"Plan your week to reduce uncertainty"
|
86 |
-
],
|
87 |
-
"articles": [
|
88 |
-
{"title": "Importance of Self-Care", "url": "https://example.com/selfcare1"},
|
89 |
-
{"title": "Stress Management Techniques", "url": "https://example.com/stress1"},
|
90 |
-
{"title": "Finding Balance in Daily Life", "url": "https://example.com/balance"},
|
91 |
-
],
|
92 |
-
"videos": [
|
93 |
-
{"title": "Relaxation Techniques", "url": "https://www.youtube.com/watch?v=relaxvideo1"},
|
94 |
-
{"title": "Mindfulness Exercises", "url": "https://www.youtube.com/watch?v=mindfulnessvideo1"},
|
95 |
-
{"title": "Creating a Peaceful Routine", "url": "https://www.youtube.com/watch?v=peacefulroutine"},
|
96 |
-
],
|
97 |
},
|
98 |
}
|
99 |
|
100 |
-
# Function to
|
101 |
-
def
|
102 |
-
|
103 |
-
|
|
|
|
|
|
|
|
|
104 |
|
105 |
-
# Function to suggest activities based on the
|
106 |
-
def suggest_activity(
|
107 |
-
|
108 |
-
|
109 |
-
return
|
110 |
-
"suggestions": suggestions,
|
111 |
-
"articles": articles,
|
112 |
-
"videos": videos,
|
113 |
-
}
|
114 |
|
115 |
# Streamlit app
|
116 |
def main():
|
117 |
-
st.title("
|
118 |
-
|
119 |
-
# Step 1: Randomly pick 20 questions from the database
|
120 |
-
selected_questions = random.sample(questions, 20)
|
121 |
|
122 |
-
# Step
|
123 |
-
|
124 |
-
|
125 |
-
for i, question in enumerate(
|
126 |
response = st.text_input(f"{i}. {question}")
|
127 |
if response:
|
128 |
-
|
129 |
|
130 |
-
# Step
|
131 |
-
if len(
|
132 |
-
|
133 |
-
analysis_result = emotion_analyzer(text_to_analyze)
|
134 |
-
emotion = analysis_result[0]['label'] # Get the emotion from the analysis result
|
135 |
|
136 |
-
#
|
137 |
-
|
138 |
-
|
139 |
-
elif emotion == "LABEL_1":
|
140 |
-
emotion = "POSITIVE"
|
141 |
-
else:
|
142 |
-
emotion = "NEUTRAL"
|
143 |
|
144 |
-
|
|
|
|
|
145 |
|
146 |
-
# Step
|
147 |
-
resources = suggest_activity(
|
148 |
|
149 |
# Display suggestions, articles, and videos
|
150 |
st.write("Suggestions:")
|
151 |
-
for suggestion in resources
|
152 |
st.write(f"- {suggestion}")
|
153 |
|
154 |
st.write("Articles:")
|
155 |
-
for article in resources
|
156 |
st.write(f"- [{article['title']}]({article['url']})")
|
157 |
|
158 |
st.write("Videos:")
|
159 |
-
for video in resources
|
160 |
st.write(f"- [{video['title']}]({video['url']})")
|
161 |
else:
|
162 |
-
st.write("Please answer all
|
163 |
|
164 |
if __name__ == "__main__":
|
165 |
main()
|
|
|
5 |
# Emotion classifier (use a pre-trained model from Hugging Face)
|
6 |
emotion_analyzer = pipeline("text-classification", model="distilbert-base-uncased")
|
7 |
|
8 |
+
# Question Database
|
9 |
questions = [
|
10 |
+
"How are you feeling right now?",
|
11 |
+
"What’s something that’s been on your mind lately?",
|
12 |
+
"Do you feel energized or tired at this moment?",
|
13 |
+
"What’s the most significant event in your day so far?",
|
14 |
+
"If you had to describe your mood in one word, what would it be?",
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
15 |
]
|
16 |
|
17 |
+
# Expanded Mood States
|
18 |
+
moods = [
|
19 |
+
"Happy", "Excited", "Relaxed", "Grateful", "Calm",
|
20 |
+
"Dull", "Neutral", "Tired", "Bored", "Lonely",
|
21 |
+
"Angry", "Frustrated", "Anxious", "Stressed", "Overwhelmed",
|
22 |
+
"Hopeful", "Confused", "Motivated", "Curious", "Peaceful"
|
23 |
+
]
|
24 |
+
|
25 |
+
# Suggestion Database
|
26 |
suggestion_database = {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
27 |
"POSITIVE": {
|
28 |
+
"suggestions": ["Celebrate your success!", "Share your happiness with someone.", "Reflect on what makes you feel this way."],
|
29 |
+
"articles": [{"title": "Staying Positive", "url": "https://example.com/positivity"}],
|
30 |
+
"videos": [{"title": "Boosting Happiness", "url": "https://www.youtube.com/watch?v=happinessboost"}],
|
31 |
+
},
|
32 |
+
"NEGATIVE": {
|
33 |
+
"suggestions": ["Take a break to relax.", "Talk to someone you trust.", "Try mindfulness exercises."],
|
34 |
+
"articles": [{"title": "Managing Stress", "url": "https://example.com/stressmanagement"}],
|
35 |
+
"videos": [{"title": "Dealing with Stress", "url": "https://www.youtube.com/watch?v=stressrelief"}],
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
36 |
},
|
37 |
"NEUTRAL": {
|
38 |
+
"suggestions": ["Take a short walk.", "Plan your next task mindfully.", "Enjoy a calming activity like reading."],
|
39 |
+
"articles": [{"title": "Finding Balance", "url": "https://example.com/balance"}],
|
40 |
+
"videos": [{"title": "Relaxation Techniques", "url": "https://www.youtube.com/watch?v=relaxvideo"}],
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
41 |
},
|
42 |
}
|
43 |
|
44 |
+
# Function to map moods to emotion categories
|
45 |
+
def map_mood_to_category(mood):
|
46 |
+
if mood in ["Happy", "Excited", "Relaxed", "Grateful", "Calm", "Hopeful", "Motivated", "Curious", "Peaceful"]:
|
47 |
+
return "POSITIVE"
|
48 |
+
elif mood in ["Dull", "Neutral", "Tired", "Bored", "Lonely"]:
|
49 |
+
return "NEUTRAL"
|
50 |
+
else: # Negative emotions
|
51 |
+
return "NEGATIVE"
|
52 |
|
53 |
+
# Function to suggest activities based on the mood
|
54 |
+
def suggest_activity(mood):
|
55 |
+
category = map_mood_to_category(mood)
|
56 |
+
resources = suggestion_database.get(category, {})
|
57 |
+
return resources
|
|
|
|
|
|
|
|
|
58 |
|
59 |
# Streamlit app
|
60 |
def main():
|
61 |
+
st.title("Mood Analysis and Suggestions")
|
|
|
|
|
|
|
62 |
|
63 |
+
# Step 1: Display the questions
|
64 |
+
st.write("Answer the following 5 questions to help us understand your mood:")
|
65 |
+
responses = []
|
66 |
+
for i, question in enumerate(questions, start=1):
|
67 |
response = st.text_input(f"{i}. {question}")
|
68 |
if response:
|
69 |
+
responses.append(response)
|
70 |
|
71 |
+
# Step 2: Analyze responses if all questions are answered
|
72 |
+
if len(responses) == len(questions):
|
73 |
+
combined_text = " ".join(responses)
|
|
|
|
|
74 |
|
75 |
+
# Analyze responses to determine mood
|
76 |
+
analysis_result = emotion_analyzer(combined_text)
|
77 |
+
detected_emotion = analysis_result[0]['label']
|
|
|
|
|
|
|
|
|
78 |
|
79 |
+
# Map detected emotion to a mood state
|
80 |
+
detected_mood = random.choice(moods) # Mock mapping for demonstration
|
81 |
+
st.write(f"Detected Mood: {detected_mood}")
|
82 |
|
83 |
+
# Step 3: Fetch suggestions based on mood
|
84 |
+
resources = suggest_activity(detected_mood)
|
85 |
|
86 |
# Display suggestions, articles, and videos
|
87 |
st.write("Suggestions:")
|
88 |
+
for suggestion in resources.get("suggestions", []):
|
89 |
st.write(f"- {suggestion}")
|
90 |
|
91 |
st.write("Articles:")
|
92 |
+
for article in resources.get("articles", []):
|
93 |
st.write(f"- [{article['title']}]({article['url']})")
|
94 |
|
95 |
st.write("Videos:")
|
96 |
+
for video in resources.get("videos", []):
|
97 |
st.write(f"- [{video['title']}]({video['url']})")
|
98 |
else:
|
99 |
+
st.write("Please answer all questions to receive suggestions.")
|
100 |
|
101 |
if __name__ == "__main__":
|
102 |
main()
|