Bitext Blog

How to solve coordination issue in chatbots

During the previous weeks, we have been talking a lot about different issues the users face while interacting with a chatbot.

As companies, we should do our best to enhance the user experience, and the truth is that UX gets diminished if bots –designed to facilitate the conversation between companies and users– constantly misunderstand clients' requests. After expanding on negation handling and double-intent issue, today it's time to know more about coordination and how to solve it.

We use coordination even without realizing, just think about when you order food for you and your family at home. The usual situation would be that the one ordering won't order just a single thing. A typical order will be: "I want a Roquefort hamburger and a Caesar salad".

Have you tried to introduce one of these types of orders in any chatbot? Most of them won't understand it. While for a human there won't be any problem distinguishing two different orders and processing them correctly, for a bot to work, probably you will have to split the order in two.

The goal of coordination is to use coordinating conjunctions, conjunctive adverbs, or punctuation symbols to combine short independent clauses into a single sentence. The coordination is a frequent feature of NLP, however, it is extremely difficult to parse.

The problem in most cases is related to limitations on syntatic analysis tools. It is difficult to describe the coordination of non-grammatical constituents or “non-constituents” of a sentence using the same formal syntatic tool as is used to structure simple units or “constituents”.

Let's take the following example which contains a coordination in it: "I want a Hawaiian pizza, and my wife will have a Margherita."

If we use one of the major bot development platforms –that is supposed to perform well– this is what we obtain:

Analysis: {"action":"complex.order","parameters":{"topping":["my wife"],"topping1":[],"type":["hawaiian"]},"resolvedQuery":"I want a Hawaiian pizza, and my wife will have a Margherita"}.

After analyzing it, it is clear that even if the bot understands the type of pizza the user is asking for, clearly, it doesn't get that there is a second type. And in no case would "my wife" be a topping!

An important linguistic aspect of coordination that is not considered by any major development platform, is that it implies the balance of elements that have equal semantic value in the sentence.

Using the previous example, "Hawaiian" and "Margherita" will be the same type of semantic class or category: "food" or "pizza" if we want to be more concrete.

Summing up, if we use this semantic aspect of language and add it to the syntactic analysis, it’s possible to properly interpret the relations between non-constituent elements and constituent ones. Following this approach, we will have better analysis and extract the useful information for our topic. Solving at the same time the coordination issue in an easy way.

If you want to try this approach with more examples or with your own data try our own chatbot!