5 Simple Ways To Optimize Your Chatbot (HowTo)
If you have ever messed around more with chatbot services like api.ai or recast.ai, and got beyond the "order a pizza" example, you might be wondering: Why does my chatbot start messing up when I train it more?
We all know the scenario, starting with a simple bot, and adding the small-talk intent to it that all of them provide out of the box. Things are looking great so far!
Adding more intents and features to our bot is working out too, and we are soon dreaming of building a general solution to all of our customer service related problems.
What's more, many companies are sprouting up targetting businessnes big and small, promising them solutions for customer service, employee onboarding, and other tasks that sitll require some human finesse.
Sadly, things are not that simple...
Dimensionality Reduction As A Crutch
You see, the way most of these chatbot services have implemented the technology is not at all in line with the latest advances in the technology of bleeding edge chatbot technologies.
While many of them would love to make use of character based recurrent neural networks, local attention mechanisms, and generative methods, stability of this technology is just not quite there yet.
So, we are left with the solution provided to us: Take the high dimensional space of characters in sentences, and convert it to a low dimensional space, like part of speech tags.
Meanwhile you can use pattern matching on the type of tags, frequency of tags, and order of tags to do relatively advanced pattern matching, and get pretty good results, as long as there are not too many patterns flying around in the model.
How Can We Overcome The Limitations, Right Now?
Nevertheless, we have all invested our future endeavors into the upcoming A.I. boom, and we want to be part of it right now, deploying our chatbots and getting in while the getting is good. No Problem!
Let's look at 5 simple steps we can take to make better, and more complex chatbots, right now.
1. Chatbots As A Microservice
No doubt about it, microservices almost always solve more problems than they create in maintenance overhead.
Instead of trying to make one big chatbot that tries to deal with all of the topics that you are trying to cover, make a separate chatbot for each and every topic.
How these topics break down will depend on the type of company context you are deploying in, and is not something we can pin down in a generic way.
My main mantra is this: In your "community" of chatbots, build many bots with tiny scopes, but huge expertise, and make them work together in a symbiotic way.
One way to direct the many many tiny expert bots is to have one or more stages of what I call "director" bots, which have the simple task to examine the user's needs and direct the input to the right expert.
2. A Human Back-End
To make a point, everytime somebody shows me their brand new chatbot, the first thing I will say to it is: "How much wood would a woodchuck chuck if a wood chuck could chuck wood?"
I am not trying to be nasty when I do this, but I want people to udnerstand that there is a fundemental flaw in almost any chatbot, which is its so-called "fallback" state.
In my experience they all do a variation on the "could you please rephrase that..." spiel whenever they do not have an answer they are confident enough about to use as a response.
Simply stated, this is a real frustration of people trying to interact with the chatbots that are being made today.
On the other hand, what if we were do away with the fallback state altogether and instead use it to hand over the question to an actual human being. In this scenario someone could actually transparently take over from the chatbot, once it fails to answer a question, and these human answer can then be used to feed back into the bot's training program to make it perform better over time.
This type of system would make it so much easier to run a successful bot, especially in the beginning stages, where you are still trying to figure out the behaviors of your user base.
It all basically comes down to being realistic about what this technology in its current state can and can not do, which is something a lot of people could use some extra explanation on. There are just a few too many companies jumping onto the A.I. bandwagon with massively overestimated ideas about what is possible at the moment.
3. Personality Goes A Long Way
The main thing to remember while developing your bot is that you are trying to make it interface with human beings, and thus it needs to have a personality that is likeable, and makes people actually want to chat to it.
Don't be afraid to incorporate humor, compliments, and general charismatic traits into its programming. I think a lot of bots could really benefit from something as simple, yet quite obvious, as this.
If you are not entirely sure how to go about this, there are many books, videos, and tutorials out there that can teach the fundamentals of charisma, and there would be no harm in actually brushing up on some of the large scale research that has been done in this field.
Just make sure you keep on the logical side of this area of interest, because sometimes people in this sector do tend to get a little bit too, ehm, over-analytical...
4. Make Like Thomas And Train!
Keep looking into the training section of the service you are using for your chatbot, or in the rare case you are using your own technology use whatever method you use, and train train train!
It would be an impossible task to try and cover each case of a user interacting with your bot, before even deploying it to the public, and after over 19 years of experience in the online technology sector I can tell you one hard fact: Users never use the way you want them to use.
By that I mean, remember that old saying "bull in a china shop"? That's how the majority of users conduct themselves while interfacing with technology, which is proven in the mere existence of user experience experts.
This is by no means the fault of the user, or even the fault of the designer of the technology, it is just because there are no real world "generic" solutions to be found when it comes to a group as large and diverse as the world's population.
So again, keep analysing the incoming data to your chatbot, keep making corrections, and re-train as much as you possibly can. After all, the chatbot in a way represents you as a company, and as the people who run it.
5. Collect Data
The time is coming where chatbots will make huge advances, and you need to be ready to migrate with the times. Collect data, build the training sets of the future.
You can not stay reliant on the chatbot services you are using right now, because while their initial offerings may be low-cost or even free of charge, there is a steep curve upwards in price once you need to support some real traffic coming to your bot.
This particular niche in machine learning is about to move, pivot, and explode in a major way, and you need to remain as flexible as you can, using everything you have learned along your journey to improve and roll with the wave. You do not want to be too tightly coupled to a service that will eventually charge you as much or more for a general (non tailored) solution, as you could spend hiring your own machine learning experts to create you the fitted technology your company deserves!
So Get To It!
There you have it, 5 really simple ways you can improve your chatbots today, wether you are about to create one from scratch, or want to update an existing bot.
Nothing should hold you back in creating the next best chatbot out there on the internet, and providing a valuable service to your users. After all, if the hype is to be believed, chatbots are the new apps!
I hope you enjoyed this article, and it brought you some valuable information.