Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -169,6 +169,43 @@ def get_wellness_professionals(location):
|
|
| 169 |
# Fallback to scraping if API is not available or fails
|
| 170 |
return scrape_wellness_professionals(query, location)
|
| 171 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 172 |
# Gradio interface setup for user interaction
|
| 173 |
def user_interface(message, location, history):
|
| 174 |
history, history = chat(message, history)
|
|
@@ -179,14 +216,15 @@ def user_interface(message, location, history):
|
|
| 179 |
sentiment = ["Negative", "Neutral", "Positive"][torch.argmax(outputs.logits, dim=1).item()]
|
| 180 |
|
| 181 |
# Emotion detection
|
| 182 |
-
|
| 183 |
-
emotion_result = pipe(message)
|
| 184 |
-
emotion = emotion_result[0]['label']
|
| 185 |
|
| 186 |
# Get wellness professionals
|
| 187 |
wellness_data = get_wellness_professionals(location)
|
| 188 |
|
| 189 |
-
|
|
|
|
|
|
|
|
|
|
| 190 |
|
| 191 |
# Gradio chatbot interface
|
| 192 |
chatbot = gr.Chatbot(label="Mental Health Chatbot")
|
|
@@ -196,7 +234,7 @@ location_input = gr.Textbox(label="Enter your location (latitude,longitude)", pl
|
|
| 196 |
demo = gr.Interface(
|
| 197 |
user_interface,
|
| 198 |
[gr.Textbox(label="Message"), location_input, "state"],
|
| 199 |
-
[chatbot, "state", "text", "text", "json"],
|
| 200 |
allow_flagging="never",
|
| 201 |
title="Mental Health & Well-being Assistant"
|
| 202 |
)
|
|
|
|
| 169 |
# Fallback to scraping if API is not available or fails
|
| 170 |
return scrape_wellness_professionals(query, location)
|
| 171 |
|
| 172 |
+
# Emotion detection function with suggestions
|
| 173 |
+
def detect_emotion(user_input):
|
| 174 |
+
pipe = pipeline("text-classification", model=model_emotion, tokenizer=tokenizer_emotion)
|
| 175 |
+
result = pipe(user_input)
|
| 176 |
+
emotion = result[0]['label']
|
| 177 |
+
|
| 178 |
+
# Provide suggestions based on the detected emotion
|
| 179 |
+
if emotion == 'joy':
|
| 180 |
+
return ("You're feeling happy! Keep up the great mood!",
|
| 181 |
+
[("Relaxation Techniques", "https://www.helpguide.org/mental-health/meditation/mindful-breathing-meditation"),
|
| 182 |
+
("Dealing with Stress", "https://www.helpguide.org/mental-health/anxiety/tips-for-dealing-with-anxiety"),
|
| 183 |
+
("Emotional Wellness Toolkit", "https://www.nih.gov/health-information/emotional-wellness-toolkit")],
|
| 184 |
+
"Watch on YouTube: https://youtu.be/m1vaUGtyo-A")
|
| 185 |
+
elif emotion == 'anger':
|
| 186 |
+
return ("You're feeling angry. It's okay to feel this way. Let's try to calm down.",
|
| 187 |
+
[("Emotional Wellness Toolkit", "https://www.nih.gov/health-information/emotional-wellness-toolkit"),
|
| 188 |
+
("Stress Management Tips", "https://www.health.harvard.edu/health-a-to-z"),
|
| 189 |
+
("Dealing with Anger", "https://www.helpguide.org/mental-health/anxiety/tips-for-dealing-with-anxiety")],
|
| 190 |
+
"Watch on YouTube: https://youtu.be/MIc299Flibs")
|
| 191 |
+
elif emotion == 'fear':
|
| 192 |
+
return ("You're feeling fearful. Take a moment to breathe and relax.",
|
| 193 |
+
[("Mindfulness Practices", "https://www.helpguide.org/mental-health/meditation/mindful-breathing-meditation"),
|
| 194 |
+
("Coping with Anxiety", "https://www.helpguide.org/mental-health/anxiety/tips-for-dealing-with-anxiety"),
|
| 195 |
+
("Emotional Wellness Toolkit", "https://www.nih.gov/health-information/emotional-wellness-toolkit")],
|
| 196 |
+
"Watch on YouTube: https://youtu.be/yGKKz185M5o")
|
| 197 |
+
elif emotion == 'sadness':
|
| 198 |
+
return ("You're feeling sad. It's okay to take a break.",
|
| 199 |
+
[("Emotional Wellness Toolkit", "https://www.nih.gov/health-information/emotional-wellness-toolkit"),
|
| 200 |
+
("Dealing with Anxiety", "https://www.helpguide.org/mental-health/anxiety/tips-for-dealing-with-anxiety")],
|
| 201 |
+
"Watch on YouTube: https://youtu.be/-e-4Kx5px_I")
|
| 202 |
+
elif emotion == 'surprise':
|
| 203 |
+
return ("You're feeling surprised. It's okay to feel neutral!",
|
| 204 |
+
[("Managing Stress", "https://www.health.harvard.edu/health-a-to-z"),
|
| 205 |
+
("Coping Strategies", "https://www.helpguide.org/mental-health/anxiety/tips-for-dealing-with-anxiety")],
|
| 206 |
+
"Watch on YouTube: https://youtu.be/m1vaUGtyo-A")
|
| 207 |
+
return ("Could not detect emotion.", [], "")
|
| 208 |
+
|
| 209 |
# Gradio interface setup for user interaction
|
| 210 |
def user_interface(message, location, history):
|
| 211 |
history, history = chat(message, history)
|
|
|
|
| 216 |
sentiment = ["Negative", "Neutral", "Positive"][torch.argmax(outputs.logits, dim=1).item()]
|
| 217 |
|
| 218 |
# Emotion detection
|
| 219 |
+
emotion_msg, resources, video_link = detect_emotion(message)
|
|
|
|
|
|
|
| 220 |
|
| 221 |
# Get wellness professionals
|
| 222 |
wellness_data = get_wellness_professionals(location)
|
| 223 |
|
| 224 |
+
# Display wellness professionals in a table format
|
| 225 |
+
wellness_df = pd.DataFrame(wellness_data, columns=["Name", "Address", "Latitude", "Longitude"])
|
| 226 |
+
|
| 227 |
+
return history, history, sentiment, emotion_msg, resources, video_link, wellness_df.to_html(escape=False)
|
| 228 |
|
| 229 |
# Gradio chatbot interface
|
| 230 |
chatbot = gr.Chatbot(label="Mental Health Chatbot")
|
|
|
|
| 234 |
demo = gr.Interface(
|
| 235 |
user_interface,
|
| 236 |
[gr.Textbox(label="Message"), location_input, "state"],
|
| 237 |
+
[chatbot, "state", "text", "text", "json", "text", "html"],
|
| 238 |
allow_flagging="never",
|
| 239 |
title="Mental Health & Well-being Assistant"
|
| 240 |
)
|