Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -11,7 +11,6 @@ from nltk.stem.lancaster import LancasterStemmer
|
|
| 11 |
from transformers import AutoTokenizer, AutoModelForSequenceClassification, pipeline
|
| 12 |
import googlemaps
|
| 13 |
import folium
|
| 14 |
-
import pandas as pd
|
| 15 |
import torch
|
| 16 |
|
| 17 |
# Disable GPU usage for TensorFlow
|
|
@@ -32,7 +31,7 @@ with open("data.pickle", "rb") as f:
|
|
| 32 |
words, labels, training, output = pickle.load(f)
|
| 33 |
|
| 34 |
# Build the model structure for Well-Being Chatbot
|
| 35 |
-
net = tflearn.input_data(shape=[None, len(training[0])])
|
| 36 |
net = tflearn.fully_connected(net, 8)
|
| 37 |
net = tflearn.fully_connected(net, 8)
|
| 38 |
net = tflearn.fully_connected(net, len(output[0]), activation="softmax")
|
|
@@ -152,99 +151,45 @@ def generate_suggestions(emotion):
|
|
| 152 |
],
|
| 153 |
'anger': [
|
| 154 |
{"Title": "Emotional Wellness Toolkit π‘", "Subject": "Wellness", "Link": '<a href="https://www.nih.gov/health-information/emotional-wellness-toolkit" target="_blank">Emotional Wellness Toolkit</a>'},
|
| 155 |
-
{"Title": "
|
| 156 |
-
{"Title": "
|
| 157 |
-
{"Title": "
|
| 158 |
],
|
| 159 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 160 |
}
|
| 161 |
-
|
| 162 |
-
return suggestions.get(emotion, [])
|
| 163 |
-
|
| 164 |
-
# Custom CSS for green gradient background and button
|
| 165 |
-
custom_css = """
|
| 166 |
-
/* Gradient Background */
|
| 167 |
-
body {
|
| 168 |
-
background: linear-gradient(135deg, #00b894, #1dd1a1);
|
| 169 |
-
font-family: Arial, sans-serif;
|
| 170 |
-
color: white;
|
| 171 |
-
box-shadow: inset 0 0 50px rgba(0, 0, 0, 0.1), 0 0 30px rgba(0, 0, 0, 0.1);
|
| 172 |
-
}
|
| 173 |
-
|
| 174 |
-
/* Green gradient submit button */
|
| 175 |
-
.gradio-button {
|
| 176 |
-
background: linear-gradient(45deg, #00b894, #1dd1a1);
|
| 177 |
-
border: none;
|
| 178 |
-
color: white;
|
| 179 |
-
font-weight: bold;
|
| 180 |
-
font-size: 16px;
|
| 181 |
-
padding: 10px 20px;
|
| 182 |
-
border-radius: 10px;
|
| 183 |
-
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
|
| 184 |
-
transition: background 0.3s ease, box-shadow 0.3s ease;
|
| 185 |
-
}
|
| 186 |
-
|
| 187 |
-
/* Hover effect for the submit button */
|
| 188 |
-
.gradio-button:hover {
|
| 189 |
-
background: linear-gradient(45deg, #1dd1a1, #00b894);
|
| 190 |
-
box-shadow: 0 6px 10px rgba(0, 0, 0, 0.2);
|
| 191 |
-
}
|
| 192 |
-
|
| 193 |
-
/* Styling for the input box and other components */
|
| 194 |
-
.gradio-input, .gradio-output, .gradio-chatbot {
|
| 195 |
-
background: rgba(255, 255, 255, 0.1);
|
| 196 |
-
border-radius: 8px;
|
| 197 |
-
border: none;
|
| 198 |
-
padding: 10px;
|
| 199 |
-
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
|
| 200 |
-
}
|
| 201 |
-
|
| 202 |
-
.gradio-input:focus {
|
| 203 |
-
outline: none;
|
| 204 |
-
background: rgba(255, 255, 255, 0.2);
|
| 205 |
-
}
|
| 206 |
-
|
| 207 |
-
/* Shadow effect on components */
|
| 208 |
-
.gradio-box {
|
| 209 |
-
box-shadow: 0 4px 10px rgba(0, 0, 0, 0.15);
|
| 210 |
-
}
|
| 211 |
-
"""
|
| 212 |
-
|
| 213 |
-
# Gradio app code (as before)
|
| 214 |
-
def gradio_app(message, location, health_query, history, state):
|
| 215 |
-
# Chatbot interaction
|
| 216 |
-
history, _ = chatbot(message, history)
|
| 217 |
-
|
| 218 |
-
# Sentiment analysis
|
| 219 |
-
sentiment_response = analyze_sentiment(message)
|
| 220 |
-
|
| 221 |
-
# Emotion detection
|
| 222 |
-
emotion_response = detect_emotion(message)
|
| 223 |
|
| 224 |
-
#
|
| 225 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 226 |
|
| 227 |
-
|
| 228 |
-
|
| 229 |
-
|
| 230 |
-
|
| 231 |
-
|
| 232 |
-
|
| 233 |
-
|
| 234 |
-
|
| 235 |
-
# Gradio UI components
|
| 236 |
-
message_input = gr.Textbox(lines=1, label="π¬ Message")
|
| 237 |
-
location_input = gr.Textbox(value="Honolulu, HI", lines=1, label="π Your Location")
|
| 238 |
-
health_query_input = gr.Textbox(value="psychologist", lines=1, label="π©ββοΈ Health Professional Query")
|
| 239 |
-
history_output = gr.Chatbot()
|
| 240 |
-
sentiment_output = gr.Textbox()
|
| 241 |
-
emotion_output = gr.Textbox()
|
| 242 |
-
route_info_output = gr.Textbox()
|
| 243 |
-
map_output = gr.HTML()
|
| 244 |
-
suggestions_output = gr.DataFrame()
|
| 245 |
-
|
| 246 |
-
# Interface with custom CSS
|
| 247 |
-
gr.Interface(fn=gradio_app, inputs=[message_input, location_input, health_query_input, history_output, gr.State()],
|
| 248 |
-
outputs=[history_output, sentiment_output, emotion_output, route_info_output, map_output, suggestions_output],
|
| 249 |
-
live=True,
|
| 250 |
-
css=custom_css).launch()
|
|
|
|
| 11 |
from transformers import AutoTokenizer, AutoModelForSequenceClassification, pipeline
|
| 12 |
import googlemaps
|
| 13 |
import folium
|
|
|
|
| 14 |
import torch
|
| 15 |
|
| 16 |
# Disable GPU usage for TensorFlow
|
|
|
|
| 31 |
words, labels, training, output = pickle.load(f)
|
| 32 |
|
| 33 |
# Build the model structure for Well-Being Chatbot
|
| 34 |
+
net = tflearn.input_data(shape=[None, len(training[0])], dtype=tf.float32) # Fix for dtype
|
| 35 |
net = tflearn.fully_connected(net, 8)
|
| 36 |
net = tflearn.fully_connected(net, 8)
|
| 37 |
net = tflearn.fully_connected(net, len(output[0]), activation="softmax")
|
|
|
|
| 151 |
],
|
| 152 |
'anger': [
|
| 153 |
{"Title": "Emotional Wellness Toolkit π‘", "Subject": "Wellness", "Link": '<a href="https://www.nih.gov/health-information/emotional-wellness-toolkit" target="_blank">Emotional Wellness Toolkit</a>'},
|
| 154 |
+
{"Title": "Managing Anger πΏ", "Subject": "Anger Management", "Link": '<a href="https://www.helpguide.org/mental-health/anger-management.htm" target="_blank">HelpGuide on Anger Management</a>'},
|
| 155 |
+
{"Title": "Relaxation Techniques π", "Subject": "Relaxation", "Link": '<a href="https://www.helpguide.org/mental-health/meditation/mindful-breathing-meditation" target="_blank">Mindful Breathing Meditation</a>'},
|
| 156 |
+
{"Title": "Dealing with Stress π‘", "Subject": "Stress Management", "Link": '<a href="https://www.helpguide.org/mental-health/anxiety/tips-for-dealing-with-anxiety" target="_blank">Tips for Dealing with Anxiety</a>'}
|
| 157 |
],
|
| 158 |
+
'sadness': [
|
| 159 |
+
{"Title": "Overcoming Sadness π", "Subject": "Well-being", "Link": '<a href="https://www.helpguide.org/mental-health/depression.htm" target="_blank">Overcoming Sadness</a>'},
|
| 160 |
+
{"Title": "Self-care Practices πΏ", "Subject": "Self-care", "Link": '<a href="https://www.psychologytoday.com/us/blog/pieces-mind/201908/self-care-for-your-mental-health" target="_blank">Self-Care for Mental Health</a>'},
|
| 161 |
+
{"Title": "Managing Grief π", "Subject": "Grief Management", "Link": '<a href="https://www.helpguide.org/mental-health/grief.htm" target="_blank">HelpGuide on Grief</a>'},
|
| 162 |
+
{"Title": "Mindfulness & Meditation π", "Subject": "Meditation", "Link": '<a href="https://www.meditationandmindfulness.com" target="_blank">Mindfulness & Meditation</a>'}
|
| 163 |
+
],
|
| 164 |
+
'fear': [
|
| 165 |
+
{"Title": "Managing Fear & Anxiety π‘", "Subject": "Mental Health", "Link": '<a href="https://www.psychologytoday.com/us/articles/anxiety" target="_blank">Psychology Today on Anxiety</a>'},
|
| 166 |
+
{"Title": "Building Confidence πͺ", "Subject": "Self-Confidence", "Link": '<a href="https://www.helpguide.org/mental-health/self-confidence.htm" target="_blank">Self-Confidence Guide</a>'},
|
| 167 |
+
{"Title": "Breathing Exercises π§ββοΈ", "Subject": "Breathing", "Link": '<a href="https://www.helpguide.org/mental-health/meditation/mindful-breathing-meditation" target="_blank">Mindful Breathing Meditation</a>'},
|
| 168 |
+
{"Title": "Relaxation Tips πΏ", "Subject": "Relaxation", "Link": '<a href="https://www.helpguide.org/mental-health/stress-relief.htm" target="_blank">Stress Relief Tips</a>'}
|
| 169 |
+
]
|
| 170 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 171 |
|
| 172 |
+
# Return suggestions based on emotion
|
| 173 |
+
return suggestions.get(emotion.lower(), [])
|
| 174 |
+
|
| 175 |
+
# Gradio Interface
|
| 176 |
+
with gr.Blocks() as demo:
|
| 177 |
+
with gr.Row():
|
| 178 |
+
with gr.Column():
|
| 179 |
+
message_input = gr.Textbox(label="Your Message", placeholder="Type a message here...", lines=4)
|
| 180 |
+
location_input = gr.Textbox(label="Your Location", placeholder="Enter your location (e.g., Pune, India)...", lines=2)
|
| 181 |
+
health_query_input = gr.Textbox(label="Health Professional Search", placeholder="Type a health professional type (e.g., therapist, doctor)...", lines=1)
|
| 182 |
+
history_output = gr.Chatbot(label="Chat History").style(height=500)
|
| 183 |
+
sentiment_output = gr.Textbox(label="Sentiment Analysis")
|
| 184 |
+
emotion_output = gr.Textbox(label="Emotion Detection")
|
| 185 |
+
suggestions_output = gr.Dataframe(label="Suggestions", headers=["Title", "Subject", "Link"], interactive=True)
|
| 186 |
+
map_output = gr.HTML(label="Map")
|
| 187 |
+
route_info_output = gr.Textbox(label="Nearby Health Professionals Info")
|
| 188 |
|
| 189 |
+
message_input.submit(chatbot, [message_input, history_output], [history_output, history_output])
|
| 190 |
+
message_input.submit(analyze_sentiment, message_input, sentiment_output)
|
| 191 |
+
message_input.submit(detect_emotion, message_input, emotion_output)
|
| 192 |
+
message_input.submit(generate_suggestions, emotion_output, suggestions_output)
|
| 193 |
+
location_input.submit(get_health_professionals_and_map, [location_input, health_query_input], [route_info_output, map_output])
|
| 194 |
+
|
| 195 |
+
demo.launch()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|