There are many ways to improve communication between Robo-Advisor and its customers. One effective method in terms of efficiency, effectiveness and results would be to use chatbots. Several reasons include the following:
- Customers Prefer Texting to long phone calls
- It's fast
- It's available 24 hours
This application has been designed with Python, JavaScript, HTML/CSS, Deep Learning model - BERT and Flask. The idea was to build a chatbot for my Robo-Advisor, so that I can easily integrate it into the web application later. This chatbot receives texts from users and returns intelligent answers based on the trained model.
As for the modeling, I used the BERT (Bidirectional Encoder Representations from Transformers) model. BERT applies bidirectional training of Transformer, an attention mechanism that learns contextual relations between words (or sub-words) in a text. Its goal is to generate a language model, so only the encoder mechanism is necessary here. The model achieved State-of-the-Art result for this chatbot, and I did the model evaluation by using Negative log-likelihood which had minimal averages:
Dataset can be found in json and excel files, which have been created for this problem. Future improvement include to replace them with any relevant API service.
I used AWS ECR to create a docker image and push my code into it. ECR is a fully managed container registry offering high-performance hosting. I also used AWS ECS that is a fully managed container orchestration service to deploy, manage, and scale my containerized application. This allowed me to deploy my application to AWS Elastic Compute Cloud (EC2). The site can be accessed by this link. The screenshot from the deployed app:
- Clone this repo
- Download my trained model and put it in a new "models" folder within the repo directory
- make install
- python application.py