Congratulations to our intern Arianne Meijer on the publication of her master’s thesis entitled Natural Language Generation (NLG) for Commercial Applications. Arianne designed a deep-learning based generative chatbot and trained it using public data-sets.

A chatbot (otherwise known as a smartbot, chat robot, or bot) is a computer program or artificial intelligence (AI) which can conduct a conversation via text or audio in a similar way to humans. A chatbot can be used in practical ways, for example, within customer service applications to enhance the understanding of customer opinions, or automatically answer Frequently Asked Questions and the advantage is that large databases of data can be analysed quickly. Current types of chatbots analyse data and then search to find a response from a database – either using a set of agreed rules (a rule-based response), such as Cleverbot or by choosing an appropriate response (a retrieval-based response), such as Zo, which is the successor to Microsoft’s controversial Tay Twitter bot. A chatbot that generates free text responses to random questions will be a powerful tool. Is Google Duplex a retrieval-based or generative chatbot? The answer will no doubt become clearer!

But humans use words – Natural Language – often without thinking. We don’t just use phrases from predefined sets of answers, but we are able to construct new sentences all the time, dependent on context. This so-called unstructured data is complicated for computer applications to understand. It’s not just the challenge of analysing which words we use but understanding the human intent behind the question. Advanced (smart) chatbots can analyse both words and intents to turn a question – either spoken or written – into structured data. Using publicly available data, in this case, from Twitter and Yelp, Arianne created a language model to study the possibilities for chatbots to answer questions with a meaningful, relevant and consistent response.

Arianna’s chatbot, which she called Chatty, is distinctive as it was trained to express a view or opinion (known as sentiment) based on the data that was put in. The data input varied from a positive product review left on a retailer’s website through to a negative complaint aimed at a service provider. A positive polarity response to a customer who is pleased with their purchase could be ‘I am pleased that you enjoy x or y’; a negative polarity response to a customer’s complaint about the late running of a train could be; ‘I am sorry to hear this …’; and a neutral polarity response to a customer’s question asking for help with a product could be ‘OK’.

Arianna said, “What is now clear to me when developing a commercial application of a chatbot is that you need to be explicit right from the beginning what you want the chatbot to do, and how it fits into your strategy rather than just hoping you will achieve your aims by creating one”. She continued, “I also learnt through training the model that it’s possible to use feedback to adjust the chatbot’s replies so that it’s more suitable for specific situations or languages – such as adjusting how formal and polite the reply from the chatbot should be, and even to ensure that replies are empathic and nuanced”. Arianna discovered a chatbot is similar to a baby, it takes quite some time to teach it to talk properly!

Are you keen to incorporate sentiment in your own code? Then contact us on We are here to help!

Categories: News