Spaces:
Sleeping
Sleeping
File size: 3,015 Bytes
fd64912 a5fe917 b4bd0de a5fe917 b4bd0de fd64912 b4bd0de b1dc82e b4bd0de b1dc82e b4bd0de b1dc82e b4bd0de fd64912 b4bd0de b1dc82e b4bd0de b1dc82e d7596e9 b4bd0de d7596e9 b4bd0de a5fe917 b4bd0de a5fe917 b4bd0de b1dc82e b4bd0de b1dc82e b4bd0de |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
import streamlit as st
from transformers import pipeline
from gtts import gTTS
from youtubesearchpython import VideosSearch
import os
# Initialize conversational models
empathy_bot = pipeline("text2text-generation", model="mrm8488/t5-base-finetuned-empathy")
general_bot = pipeline("text-generation", model="microsoft/DialoGPT-medium")
sentiment_analysis = pipeline("sentiment-analysis", model="distilbert-base-uncased-finetuned-sst-2-english")
# Set up Streamlit page
st.set_page_config(page_title="Grief and Loss Support Bot", page_icon="πΏ", layout="centered")
st.markdown("""
<style>
.css-1d391kg { background-color: #F3F7F6; }
.css-ffhzg2 { font-size: 1.5em; font-weight: 500; color: #4C6D7D; }
.stTextInput>div>div>input { background-color: #D8E3E2; }
.stButton>button { background-color: #A9D0B6; color: white; border-radius: 5px; }
.stButton>button:hover { background-color: #8FB79A; }
.stTextInput>div>label { color: #4C6D7D; }
</style>
""", unsafe_allow_html=True)
# Title
st.title("Grief and Loss Support Bot πΏ")
st.subheader("Your compassionate companion in tough times π")
# Get user input
user_input = st.text_input("Share what's on your mind...", placeholder="Type here...", max_chars=500)
# Check if user has entered text
if user_input:
# Run sentiment analysis for crisis detection
sentiment = sentiment_analysis(user_input)[0]
# Use empathy model for more specific support if the user is distressed
if sentiment['label'] == 'NEGATIVE' and sentiment['score'] > 0.8:
response = empathy_bot(user_input, max_length=150)[0]['generated_text']
else:
response = general_bot(user_input, max_length=150)[0]['generated_text']
# Display response
st.text_area("Bot's Response:", response, height=150)
# Text-to-speech output
tts = gTTS(response, lang='en')
audio_file = "response.mp3"
tts.save(audio_file)
st.audio(audio_file, format="audio/mp3", use_container_width=True)
# Suggest a productive activity based on detected keywords
if any(keyword in user_input.lower() for keyword in ["lonely", "lost", "sad"]):
st.info("Here's a suggestion to help you cope:")
hobbies = ["journaling", "yoga", "painting"]
activity = st.selectbox("Choose an activity you'd like to try:", hobbies)
# Search YouTube for videos related to the selected activity
videosSearch = VideosSearch(activity, limit=2)
video_links = [result['link'] for result in videosSearch.result()['result']]
for link in video_links:
st.write(link)
# Crisis resources
crisis_keywords = ["help", "suicide", "depressed", "emergency", "hurt", "lost"]
if any(keyword in user_input.lower() for keyword in crisis_keywords):
st.warning("It seems like you might be in distress. Please reach out to a crisis hotline or a trusted individual.")
st.write("[Find emergency resources here](https://www.helpguide.org/find-help.htm)")
|