India is a country where mental issues aren't considered a taboo, but people knowing that you have a mental issue is one. To tackle this, our team has created SIKE! Bot, a self help bot which helps you find symptoms for various types of mental issues on your own, without the use of complex and uncomfortable questions but rather general conversations which you have with it.
📝 What it does
SIKE! Bot uses Blender from Facebook to converse with the user, making it feel very fluid and natural. It then analyzes the normal converations and after a certain amount of texts, the chat is fed into our model which gives its analysis on what kind of mental issue does the user show the most symptoms of.
💻 How we built it
SIKE! Bot is divided into three main components:
1. The Frontend - It is built using Flutter to keep it cross-platform friendly.
2. The Server - It is using the Blender model from Facebook for the ChatBot. It is running multithreadedly with Flask as the backend.
3. The Model - It is built using handmade Transformers using Keras. It is trained on thousands of Reddit posts to make the conversations more varied and natural.
🛠 Challenges we ran into
Integrating blender into our application was difficult as it required a lot of RAM in each spawn. It also requires GPU to fully compute at real-time speed, which is costly. Also since its an interactive model, we had to keep it busy somehow, which we did with a clever approach. Another problem was finding a good dataset for training our model for classifying using day-to-day conversations. As there were none, we built one ourselves by scraping thousands of Reddit posts, which we will make available online for easier access by others.
⛳ Accomplishments that we're proud of
We were able to build a pretty sophisticated Bot which works as we had intended, using normal conversations to find deep underlying issues which might be symptoms for a mental issue. It feels very natural to talk and the UI makes it very friendly to approach as well. Even with hardware limitations it runs almost real-time. So, our target for this application, that is people with social-phobia can use this app easily to find out if they are suffering from any kind-of issue.
📍 What we learned
We learnt a lot of new things in this project. The NLP model built on transformers was a first for us, as well as using Blender bot and integrating it into our server was a new and learning experience. Flutter was also a new thing for the frontend team, but they made something pretty cool. Also while making the dataset, we got to learn a lot about the various kinds of mental issues and symptoms exhibited.
🔎 What's next for SIKE! Bot
We plan to add a voice feature where you can converse with SIKE! Bot using voice recordings. This will give an extra parameter of voice emotion which will have a considerable amount of weightage. Also we plan to add a video streaming pipeline, where the users will be directed to an expert on the diagnosed mental issue who they can interact with.
☁️ Best Use of Google Cloud
Google's Cloud Products have been extensively used in the project. We started with Google Cloud Run, but were facing performance limitations due to lack of GPU support within the credit limit (Compute Engine).
We then switched to running the backend on Google Colaboratory and hosting with Flask-ngrok.
We are also using Google's Cloud Translate API to remove the language barrier faced by many people when it comes to seeking help.
Best Domain Name from Domain.com -
Best Domain Name from GoDaddy Registry -
📜 Judging Criteria
Originality - There is no well known solution with implementation attempting to diagnose this prominent problem in society. We have built a very unique approach for diagnosing mental health issues that is very easy to use and subtly tries to evaluate the state of the user’s mind, rather than intimidating the user with direct questions.
Adherence to Theme - This product completely adheres to the theme of the hack that is attempting to create solutions for mental health issues. We tried to identify and bypass the cultural blocks, language barriers and taboos that might prevent a person from seeking aid.
Completion - Yes, it most definitely works! We have a working front and back end which runs on Google Colab and generates a chat interface which is very simple to use.
Learning - This project was a huge learning experience for all members in the team! For the front-end team, it was their first time working with Flutter and none of us had prior knowledge of it. The back-end and ML team learnt about Facebook’s ParlAI for natural conversation dialogue models.
Design - The simplicity of the interface makes the app seem non-intimidating and the simple conversational style of the bot makes having a natural conversation much more intuitive. It can also hold up a contextual conversation without seeming vague or bot-like. Our avatar was chosen carefully so as to be very friendly and motivates anyone to open up without any prejudice.
Technology - In our project, we have used quite complex and modern technologies like TensorFlow, ParlAI, Flask and Flutter. It took us quite a few hours to get familiar with some of these and implementing them had a learning curve as well. In the end, seeing a working demonstration of our project made us go “wow”!