DSTA Internship Experience

...

I had the opportunity to intern in DSTA for my year 3 semester 2 as part of my Advanced Technology Attachment Programme where I worked under the Enterprise IT Programme Centre, under a project called Digital Apps. I worked to create a virtual assistant/chatbot prototype as a module for one of their apps. The app was a employee app so the virtual assistant sought to aid the employee in navigating the app and fulfilling repetitive tasks to improve workplace productivity. Before developing the prototype, I joined user meetings and I researched on various Machine Learning models and chatbot development tools.

Prototype 1 was a bespoke chatbot created by training various Machine Learning models using Keras, tensorflow to be able to do intent classification and sentiment analysis. Named entity recognition was also done using simpler methods like Regex and a rules-based intent classification was added to speed up the response process. Then, I used a pre-trained model called DialoGPT by Microsoft which was trained using the Huggingface Transformer model which provided a way to give responses to Smalltalk. I built the protoype using Flask and also included an Admin Console so that as user inputs were stored in the database (MongoDB), unanswered or wrongly responded inputs could be tagged by admins to re-train the models to improve response accuracy in the future.

For protoype 2, I explored other cloud offerings to build the chatbot. I used Google Dialogflow and Amazon Lex to create simple chatbots to understand their advantages and disadvantages. I then decided to use the Amazon Lex service to build the prototype since the company mainly worked with AWS. Using AWS SAM framework, boto3 library, I managed to build the chatbot and deploy it on AWS Lambda as a REST API. The Smalltalk module was also deployed on DigitalOcean's Ubuntu Docker Droplet after the Smalltalk module was dockerized as images. Lastly, another REST API was built using Flask for the various actions to store and retrieve data from a database to mock the actual database for resource booking. These all act as microservices that are independent in their tech stack and can be maintained by different teams but be used by a single chatbot service.

Through this experience, I managed to learn more about Machine Learning and chatbot development. Since most parts of the tasks were new and unfamiliar to me, I had to do a lot of reading, researching and watching tutorials online to understand the pros and cons of various ML models, what would work for this project which lacked actual user input data and how to strcuture a bespoke chatbot built from scratch. I also took the opportunity to learn more about devOps tools like Docker and deployment methods through AWS, DigitalOcean which I believe would be beneficial for me as I move on to larger projects in the future.