A Chat bot is a computer programme that mimic conversation with people using artificial intelligence.
They can transform the way you interact with the internet from a series of self-initiated tasks to a quasi-conversation.
In devising our initial key requirements to solve the most crucial problems that client currently face, we first research on the benefits of chatbots. We analysed the driving factors for the relevant benefits and used them as a guide for our requirements and use cases.
Chatbots now presents great opportunities for businesses. A chatbot is the medium in which users can access all sorts of services, and is now highly enabled with the development in Artificial Intelligence. Businesses want to focus their resources on targeting users where they are at.
A study by BI Intelligence shows that people are now using messaging apps more than social networks. There are 4 main benefits for NET-A-PORTER:
For our team to have an overview of our project, we delved into the components and technologies required to build a chatbot. This is part of our research before the client meeting. Although some research was not necessarily relevant after our client meeting, the research area for each component was broad and allowed us to fully explore our options. From our research, there are 4 main components of a chatbot: Graphical User Interface (GUI), Deployment Channel, Understanding User Input and Information Analysis and Processing.
After researching on the components of a chatbot, we realised that we needed to abstract away the NLP component of a chatbot. We therefore looked into a few widely used NLP APIs.
The mentioned NLP APIs researched are Api.ai, Wit.ai, Luis.ai and IBM Watson’s AlchemyLanguage, amongst many others. These former 3 APIs are the most popular and widely used NLP APIs and have since been acquired by technology giants - api.ai acquired by Google, Wit.ai acquired by Facebook and Luis.ai acquired by Microsoft.
In our research, we were concerned with a few things such as pricing, effectiveness and sustainability.
Our research found out that the mentioned APIs are either completely free to use, or free to use on a “basic” plan with limitations on features. Therefore we had no issues with pricing.
These APIs are also very similar in effectiveness as all of them offered similar features and support. For example, all of them uses machine learning, integrates with web, mobile, messaging platforms, and supports cross-platform developments using most of the mainstream programming languages.
In terms of sustainability, we had the concern where support for some APIs might cease as chatbots are only recently becoming popular and there are many competing NLP APIs in the market. Our solution for our client must be long-term and losing support for the NLP component will break the product.
Overall, we preferred Api.ai the most as it was already widely used even before the acquisition by Google and the documentation for the library was very extensive and easy to follow.
However, we ended up choosing the AlchemyLanguage as NET-A-PORTER has an enterprise partnership with IBM. Our client confirmed that we are able to have access to the IBM team regarding the use of IBM Watson’s suite of products. Therefore, we value our client’s long-term goals and the additional support from the NET-A-PORTER’s IBM team will be very helpful throughout our development process in term 2.
After our research on NLP APIs, we noticed that some NLP APIs are integrated into what are called bot platforms.
A Bot Platform is a full end to end service for developers to build, deploy and manage chatbots. Examples of popular bot platforms include IBM Watson Conversation, Microsoft Bot, Facebook Bot, PandoraBot, ChatScript, Robot.me, Imperson, Gupshup and Meya.
Our team found that there were many similarities between the main NLP APIs and bot platforms. This is because the main NLP APIs are the backbone of popular bot platforms - Watson Conversation (AlchemyLanguage), Microsoft Bot (Luis.ai), Facebook Bot (Wit.ai). We also considered the separate use of the NLP APIs mentioned, instead of employing the bot platforms. However, we found little reasons to do so as many of the bot platforms not platform-specific and allows deployment to many channels.
We had similar determining factors with Bot Platforms as with NLP APIs, which was long term support and product documentation. The most promising were platforms from IBM and Microsoft (Facebook Bot only allows deployment to its Messenger app). We realised that the distinguishing factor between NLP APIs and Bot Platforms is the provision of a target user base.
In the end, we decided to use IBM Watson Conversation as a platform for our chatbot as our main deployment channels were web and mobile. We did not want to use a bot platform which has a messaging app counterpart, such as Microsoft (Skype). We were concerned that potential strategic decisions might restrict the deployment of chatbots to other channels. Lastly, it was also to align with the AlchemyLanguage NLP API decision as it is built into the Watson Conversation platform.
As we have decided to use IBM Watson’s suite products, it includes services for speech-to-text and text-to-speech. We looked at the benefits of its implementation.
One of our issues with the chatbot was the way the user gives the input of a query and how the chatbot outputs the response. We wanted to find a simple and seamless mode of input and output when users experience the chatbot. With the popularity of Voice Assistants such as Siri, Cortona and Alexa, we naturally thought of speech-to-text for the input and text-to-speech for the output, as compared to the traditional text.
The main advantage is that the user do not have to be physically linked to a computer (web) or be looking down at the phone (mobile). However, while text-to-speech is a nice feature to include, NET-A-PORTER is mostly about its physical products such as dresses and shoes, which require the use of sight to appreciate. Therefore, speech will have a limited functionality on the output of responses, where physically looking at the chatbot response will be more useful as it will include pictures or videos.
We concluded that we will include speech-to-text in the input implementation, as it gives a better user experience to be able to navigate the site and use the chatbot simultaneously. However, this is dependant on the availability of time and our development progress as it does not constitute as part of the minimum viable product.
The methodology in which users interact with the chatbot.
The single command chatbot methodology is a single-way conversation. This means that the chatbot will only produce an output response when a user inputs a query. The output response will serve to answer the user’s input query and is often implemented as a 1-1 query-response format. This approach is common in rule-based chatbots (discussed more in another research section).
The Conversational chatbot methodology is a two-way conversation. The chatbot actively engages the user regardless of whether an input query was initiated. It will analyse previous user inputs and it’s responses within the conversation to provide prompts and follow-ups. For example, if the chatbot provides product recommendations in response to a user query, the chatbot will initiate a follow-up to the conversation if the user did not open and view the product recommended in its response.
While the single command method is easier to implement and gives a higher certainly in the output of the chatbot, our team thought that it will be too rigid and less beneficial. On the other hand, the conversational method will give a more human feel and provide the personalisation aspect, where product recommendations are given without being explicitly requested and follow-up prompts and responses better guide the user towards making an informed purchase.
The methodology in which conversations are structured in a chatbot. There are two types of chatbots, the rules-based chatbot and the more advanced version that uses machine learning.
The rules-based chatbot involves hand-writing rules for the system, where the developer hard-codes the type of queries that might arise through the use of pattern matching. This type of chatbot is very limited in its scope as it can only respond to very specific queries. A programmed response to “Show me a red dress” might not work for “I would like to see a red dress”. Therefore the chatbot is only as smart as it is programmed to be. A popular way to develop such chatbots is to use the Artificial Intelligence Markup Language (AIML).
The machine learning chatbot involves the use of natural processing to classify queries into Intents and Entities. An intent is a purpose or goal expressed in a user input, such as product recommendation or track delivery. An entity is a description that is classified under the intent to provide more information. For example, “dress” and “price” are entities for recommending products and “time” and “location” are entities for tracking delivery. By recognising the intents and entities expressed in a customer’s input, the chatbot can process the information and provide an appropriate response. The machine learning aspect is that the chatbots will learn to recognise and group unfamiliar sentences into intents and entities, given a sufficient set of sample data. This allows the chatbot to be smarter over time and process information that might be structured differently, but mean the same thing.
It is clear that our team decided with the machine learning approach to develop our chatbot. The rules-based approach is simpler to implement and provides a high predictability in responses. However, it requires too much maintenance for an e-commerce company like NET-A-PORTER, where new products and features are regularly added, and is not able to handle the myriads way at which a query can be asked, dampening the user experience. The machine learning approach is much more maintainable through the classification system of intents and entities. We also do not have to worry about the language structure of a user query as the NLP will handle it and instead focus on what types of questions users will ask and what are the keywords to represent the types of questions.
As the chatbot platforms seek to increase popularity amongst developers, it introduced the idea of pre-trained models (similar to libraries in programming languages) to speed up the development process.
There are currently pre-trained models that are supported by individual chatbot platforms that leverage pre-defined knowledge to handle common questions such as weather, calculator and times and dates. These models are encapsulated in its domain and therefore able to be integrated into a larger chatbot structure. Using such models accelerate the development process as we do not have to reinvent the wheel.
A self-trained model involves defining your own intents and entities, having to craft and manage dialogs. This provides a customised conversation experience and is required for unique applications.
For our purposes, our client recommended that we do not include pre-trained models as part of our chatbot as they wanted us to focus on queries that are specific to NET-A-PORTER. A self-trained model is a necessity as there are obviously no open knowledge base that cater to NET-A-PORTER. However, we are keeping our options open as pre-trained models can be easily integrated into our self-train model.