Recently, you have been to a website and came across the “Chatbot”, so you know very well what it is. They have been taking the Internet by storm and the sales and marketing department can’t stop talking about them and even can’t get enough of them too.
A Chatbot is a text and voice-based interface that runs on Machine Learning technologies and allows the end-user to interact with it in order to get information. ‘Chatbot’ is short for ‘Chat Robot’, which is essentially the task that it performs. The current technology is evolved enough to allow for highly engaging conversational experiences as they can simulate human conversation and dialogue.
In today’s global economy, it’s important to support a global customer base. By engaging your customers in their native language, you can boost your conversions and brand loyalty. In fact, 84% of international consumers say they’re more likely to buy from a website with product information in their own language. More importantly, multilingual chatbots can also help users feel right at home and improve customer experience.
Though various solutions like Wit.ai, Dialogflow, Amazon Lex, etc. are available in the industry to design our own conversational AI tools but we choose Rasa over others as it is an open-source tool with great community support that allows us to train our own custom language model. Other platforms like Dialogflow or Amazon Lex support only a specific set of 10 to 20 languages which doesn’t include various Indic languages like Telugu, Gujarati, Bengali, etc.
On the other hand, Rasa is language agnostic and allows us to use any language of our choice. One of the cons of Rasa is that it requires more time, effort and computation resources to build and train complex models, as compared to its counterparts like Dialogflow and Amazon Lex. The open-source and community version of Rasa X are free whereas other platforms like Dialogflow and Amazon Lex cost around $0.002 per request.
Rasa doesn’t provide any out-of-the-box solutions or SDKs for different integrations like Slack integration, Facebook Messenger Integration. But the Rasa community has a whole lot of tutorials and blogs that made this possible. Now the official Rasa documentation provides great tutorials on how to integrate Rasa with Slack, Facebook Messenger, Twilio, Telegram, etc. The documentation also provides pointers on how to build custom connectors for our Chatbot. Trust me, if you want to contribute to the Rasa community you can help them by building custom SDKs for Android, Swift, etc.
For using Rasa we require a training file that contains training examples for various intents and entities. Intents help us extract the intention of the user and entities help us extract important data from the input statement. Rasa uses various different NLU pipelines for training the NLP models. The Developer needs to choose a decent pipeline according to his training examples and use cases. Rasa supports Spacy backend pipeline, Tensorflow embedding pipeline, pretrained vectors pipeline and various other pipelines that the developer can use. Next, we require to provide Rasa with data to control the flow of chat, this is done through the stories file. The domain file helps us define the variables, intents, entities that our Chatbot interacts with.
All the training data can be provided in markdown format or in JSON format. We also require an actions.py file where we can add the logic part of the bot like API calling, computational decision making, Database interactions, etc. Now when the user inputs a message the message is passed through our training models and then Rasa core handles the message as defined in the training data. If required the intent and entity are passed to the actions.py file for logical processing, which then helps Rasa core to generate a suitable response for the user.
Rasa doesn’t support version control out of the box nor does it provide a UI for development purposes like its counterparts Dialogflow or Wit.ai. However, it provides more flexibility and one can always develop his/her own version control or UI as per the needs.