Common cutting-edge interactive services often use a one-size-fits-all model of language complexity to reach a base with varying levels of English proficiency. If we instead allowed chat-based programs to vary their behavior based on the proficiency of the user, it would better adapt to the needs of those most disadvantaged without hindering proficient speakers. This system could also be used in language education to improve with the user over time.

What it does

AdaptChat starts by chatting with the user then determines the 'readability' of the user's input using the Flesch–Kincaid readability test. It then uses responses of different readability levels based on the English proficiency of the user. We used Google Cloud's DialogFlow API for the user interface and input recognition, and used Google Firebase to handle webhook requests by the bot. We used a JavaScript implementation of the Flesch-Kincaid readability test to gather an average complexity score of user input, then developed an algorithm that chooses among possible responses based upon the score.

Challenges we ran into

We had to ensure that we could apply the readability score to any piece of input provided by the user and process enough user data to to provide a meaningful measure. Because readability can vary from sentence to sentence and from measure to measure, we had to give our project leeway in case some implementation wants to use a measurement besides Flesch-Kincaid. We also had to learn from scratch how to use intents and contexts in Google's DialogFlow to properly sequence conversations.

Accomplishments that we're proud of

We are able to have meaningful conversations with our bot that actually vary to accommodate the user depending on how proficient at English the user is.

What we learned

After discovering Google's DialogFlow and putting ourselves through a crash course on managing conversation flow through intents and contexts, we learned how to apply our JavaScript knowledge in designing web service functionality for a Google Cloud project.

What's next for AdaptChat

We would like to train a natural language model, so that we can get more topics to chat about with the bot. We would like to add other readability scores, so that we can get more accurate information about the user in a variety of situations.

Share this project: