Xorva Chatbot

Xorva is the name of a chatbot that I developed for my Bachelor's dissertation. It is written in Python and uses a storage technology to persist state between user sessions. The idea behind this chatbot is to build on the work of Joseph Weizenbaum, who challenged the Turing test in the 1960s by producing a computer program which could chat convincingly in a highly restricted role: that of a Rogerian psychotherapist. This "chatterbot" was called Eliza . The challenge was to add long-term memory about earlier conversations that can be referred to in the current conversation. For example, the user might mention that she has a brother, Andy, who is married and has a daughter called Sally. In a later conversation, she might say that Sally has had the flu. The long-term memory mechanism will allow the chatbot to respond convincingly; for example, by asking "did Andy have to take any time off work to look after her?".

The long-term memory is achieved by using Natural Language Processing (NLP) to analyse the input from the user and extract from that important context, such as the names of people. It then incorporates the work of another chatbot, Alice , to provide a more detailed response using the Artificial Intelligence Markup Language: AIML. If context cannot be inferred from user input, Xorva will default to the Rogerian psychotherapy method and respond as one would in an appointment with a client.

The main problem with this chatbot, which I didn't understand at the start, is one of scope. The English language is simply too large, and has too many topics, for one project to cover in a semester. Due to this, the memory responses are limited to the topic of family. Furthermore, there are many ways to convey the same information using different sentence structures, and so many of those sentences are dependant on the location that the user grew up, and as such, the pattern matching may be present for the information the user submits, but unable to handle their personal speech patterns.

This application is hosted on GCP using Cloud App Engine, with full continuous integration pipeline supported by Source Repositories, a cloudbuild.yaml configuration file, and a Cloud Build trigger. It is backed by a NoSQL database hosted on Cloud Firestore. Please note that it may take a moment for the container to start.

Please enter your User ID if you have one, otherwise enter your name.