3. Division of work
As of now, we are still in project scoping stage, so the main work is to do research, learn and documentation(e.g. meeting minutes). Everyone of us is dedicated in researching and learning new stuff, and Wu Lingyun and I are in charge of taking meeting minutes. Amish is now the point of contact between us and the industry side. When we start software development, Qiao Rui and Sidney will be in charge of NLP module implementation, Amish and Archit will work on backend, while Wu Lingyun and I will work on frontend design and the overall project management.
Possible Difficulties
1. Inconvenience for face-to-face meeting
The team of contact from Tata Communications is based in India, even though they said they would try to come to Singapore for a monthly meeting, it's not convenient to have a face-to-face meeting with them.
2. Insufficient training data available
The training data for chatbot we can get from the company is limited and insufficient. As mentioned in the first meeting, the company side said the data they could provide still remained unknown.
3. Poor background in cloud services and NLP-related project
As some of us know little about cloud services or chatbot development (especially me), it will take a longer time for them to get familiar with the topics and lay the ground works for this project.
Individual Work
1. Research of related topics
In the last two weeks, I researched on the topics related to our project, such as virtual machines, cloud computing services and several types of system architecture, especially the service model of Infrastructure as a System (IaaS). I studied how a cloud operating system worked and the services it provided: nova(compute), cinder(storage) and neutron(networking) services, through the example of OpenStack. Moreover, to make myself familiar with API formats, I looked at OpenStack API documentation for reference. Last but not least, I also looked at OpenStack's AdiuvoBot, and it gave me a starting point of what a cloud-based chatbot is like.
After the research, I gained a better understanding of cloud services as a business, the problem we are trying to resolve, the objective of this project, what resources and tools are recommended, and the challenges we may encounter later. Firstly, the project aims to improve the efficiency of application management for both TCL and its clients, by automating some simple commands, which can be realised through a NLP-based chat bot. However, putting aside the core functions of this chat bot, the chat bot design is nontrivial. How to design a bot that aligns with best practices and capitalises on lessons learned from existing chat bots? How to make sure clients will prefer this new alternative of addressing their needs compared to those traditional approaches, such as apps, phone calls, or websites? In other words, we need to work on user experience design as much as the functional design. Secondly, although it is not required to include speech recognition in this chat bot, I think that including this function may improve user experience for clients in some scenarios(just like Siri). Speaking of the resources and tools, there are several choices of open source NLP libraries and different development frameworks. However, the best NLP library I think is Stanford's Core NLP Suite. First of all, it is an integrated toolkit with a broad range of grammatical analysis tools, including tokenisation (splitting of text into words), part of speech tagging, grammar parsing (identifying things like noun and verb phrases), named entity recognition, and more. Secondly, it is a fast, robust annotator for arbitrary texts, and the fact of being widely used makes debugging easier if we got into trouble. Besides, it is regularly updated and has almost the highest quality text analytics. As for App frameworks, we agreed on using React Native. It is like react, but using native components instead of using web components as building blocks. The reasons to choose React Native are as follows.
1) The apps developed in this framework can be used both on iOS and Android.
2) It is one of the most popular Javascript frameworks, and Javascript is relatively easier for beginners to pick up(Wu Lingyun and me).
3) although native apps deliver better user experience, the development is usually inefficient and less productive. However, React Native brings the speed and agility of web app development to the hybrid space—with native results.
Even though we have reached agreement on the tools to use so far, the final decisions are still subject to change.