“We need more therapists; specifically therapists who have experiences with marginalization.” -- The Silhouette, McMaster’s student paper recently published an article that addressed the problem of therapists lacking common ground with their patients.
Culturally sensitive therapy emphasizes the understanding of a patient’s background (i.e. childhood and life experiences, identification, religion, and ethnicity). Having such an understanding may result in a more nuanced and impressionable rapport between the therapist and patient. Conversely, shortfalls in understanding the patient’s cultural background can lead to misinterpretation of their symptoms. In the diverse community of North America, it is important for patients to find therapists who have an appreciation for their background.
What it does
The app surveys the patient’s demographic information, life experiences, cultural background and preferred counselling style in order to generate recommended therapists. The therapist can similarly match with patients. The app extracts the semantic representation of the survey responses by transforming it into higher-dimensional numerical vectors via machine learning. It then compares the cosine distances against similar representations within a registry of therapists and patients. As a result, the similarity between the diverse narratives can be optimized. The app then recommends a list of potential therapists based on shared experiences.
FindYourTherapist harnesses state-of-the-art natural language processing to produce a context-aware analysis of the patient’s narrative. The app seeks similarities between patients and therapists on the style of speech, expression of opinions and lived experiences in order to produce an optimal match with regards to cultural sensitivity.
How we built it
The front end of the software is built with HTML, CSS, and JS. The questionnaire is designed to intake both demographic data (such as age, gender, ethnicity & religion) and narrative data (regarding upbringing and life experience). For the demographic data, the patient can assign each category with a ‘weight factor’ to indicate how important that aspect is for them. The text data from the entire survey is then sent to the back-end API.
The back-end software is built with Python. It uses ELMo, which is a deep bidirectional neural network involving long short term memory cells, to transform each response field into a 128-dimensional vector. This value is multiplied with the corresponding weight factor to emphasize or understate its significance. The norm of this vector is characteristic to the meaning and form of the sentence. An additional norm is generated for each of the entries in the registry. These are then pairwise joined and their cosine distance is taken. Finally, the app computes the sum of all numerical values from all bodies of text within one survey. A minimal sum represents an optimal match.
Challenges we ran into
The biggest challenge we ran into as a team was the problem/need definition. Our original plan was to build a device to monitor patients’ respiratory sounds in order to predict respiratory illnesses including pneumonia and asthma. However, after consulting with mentors, our idea proved to be inapplicable in real life. At that point, the hackathon was half-way through, and we had to start from scratch. We returned to the drawing board and spent a large portion of our time brainstorming and coming up with possible ideas. It was a long and tiring process generating and then scrapping potential ideas. After many hours and multiple back-and-forth discussions, we finally came to a satisfactory answer and began to develop our website.
Configuring the workspace and installing compatible dependencies on various Google Compute Engine images required much tinkering before TensorFlow was made compatible with TensorHub. Debian 10 was the only image that worked. Configuring and waiting for DNS configurations to update on Namecheap was necessary in order to point them to the static site hosted on Google Cloud Storage. Optimizing the time complexity of data cleaning and structuring within the back-end Python code was essential to reduce API response times.
Accomplishments that we're proud of
We are proud of being able to create a complete prototype before the end of the hackathon. Considering that we changed our idea midway through the event and had two novices in our group with little experience in coding, it was to everyone's surprise that we managed to accomplish it in the end. We were put under pressure, but it pushed us to exceed our expectations.
What we learned
Throughout the development process, there is a lot that we learned as a team. First of all, we learned that researching the applicability of our idea is a difficult but essential step to take before the actual hacking. Idea generation can be hard, but only when you have a good starting point, will you be able to move forward in development. We should also be open-minded and accepting all possibilities at the brainstorming stage, as a tunnel visual/expectation of the techniques we want to use in the hackathon adds unnecessary constraints to our design. We learned that once the right direction is established, perseverance and hard work will eventually pay off.
What's next for FindYourTherapist
In the future, with sufficient data, the app will be able to develop a collection of anonymized case profiles to be shared with registered therapists. As therapists reflect on their experiences with different patients, they can deposit their experiences on our database. The profile of prospective patients can then be cross-referenced with historical profiles. As a result, the therapist will be prepared and cognisant of cultural sensitivity before first contact to provide a more welcoming and positive patient experience.