For my final project, I want to expand upon the chatbot I created for the midterm. If you recall, the bot I introduced during the midterm was programmed to simulate a patient with speech impediment; this time however, I want to create a model that allows for the chatbot to talk naturally. To take this a step further, I will create two chatbots with differing speech styles, and have them converse with each other. In essence, my final project will be a conversation between two basic AI’s that have been trained on different data sets.
Inspiration
As I have mentioned in previous posts, AI language processing is quite fascinating to me, and I really enjoy interacting with chatbots or watching chatbots interact with each other. I think the uncertainty of what the chatbot will produce is what draws me in the most, because although generative language programs are made to simulate human speech as accurately as possible, the models will often deviate from ‘normal’ human conversation conventions because language is such a complex concept for machines to learn.
Here is a video that really inspired me to go down this chatbot conversation path:
I thought that this interaction between the two bots was absolutely fascinating and entertaining to watch. In a way, their conversation reminds me of how toddlers talk with each other, with some existential questions thrown in for good measure. This is what I hope to achieve with my project.
Idea
To put this into simple terms, my final project idea is to create and train two chatbots with differing ‘personalities’ or speech styles, and have them converse with each other. Right now, I aim to have them interact in a purely text-based interface, but I may incorporate sound into this (depends on time and resources).
Tools
I will be incorporating RASA NLU and RASA Core into my project to aid in natural language processing and grammar/syntax usage. Of course, I will need to delve deeper into RASA, but from my current understanding, it is a powerful, open source tool for structuring speech in machine learning. Both RASA NLU and Core are frameworks that can be used to create bots such as those in online customer service positions, where the user inputs a simple question or request, and the bot attempts to satisfy the customer’s needs. The most important thing about RASA for me however, is that the framework will allow me to imbue the chatbot with natural, fluid speech patterns similar to a human. This is a tremendous step up from my midterm project, because fixing grammar/syntax was one of the large hurdles I had to overcome.
Dataset
My choice of datasets is probably the most important aspect of my project (besides the structure of the model), because this is what will give my bots a ‘personality’. I plan on training each bot with one long novel that will be transferred into a word list, and eventually a dictionary that will act as the chatbot’s vocabulary pool. Each bot will be trained on a different novel, so that the end result will be that they will have contrasting speech styles. I have already picked out the novels (although this is also subject to change).
Bot 1 Dataset:
I really liked how my midterm chatbot turned out (trained on War and Peace); I found that it possessed a very old-fashioned, refined style of talking, which I want for my final as well. This is because the novel itself contains rather ‘outdated’ language due to the setting and time of publication.
Bot 2 Dataset:
I think that this will be especially interesting, because American Psycho is written in a first-person perspective of a psychopath. In a sense, I will be making Bot 1 into a more ‘posh’ or refined speaker, while Bot 2 will hopefully possess some qualities akin to that of a psycho killer. I feel it would be quite interesting to see these two personalities interact with each other.
Goal
The ultimate goal for this project to have a working, comprehensible conversation between the two chatbots. Currently, I foresee this happening within terminal, but if everything goes according to plan, I also hope to add a few more extra tweaks, such as a refined interface or different language options.