Skip to content

Instantly share code, notes, and snippets.

@tmikeschu
Last active October 19, 2018 18:41
Show Gist options
  • Save tmikeschu/0b96024ae29ab6e6922a5574d56b3214 to your computer and use it in GitHub Desktop.
Save tmikeschu/0b96024ae29ab6e6922a5574d56b3214 to your computer and use it in GitHub Desktop.

Clinc Platform Intro Video

Components of a Conversation

Conversations. You have them every day. Whether written or verbal, the process is similar.

We say something to someone else, they interpret what we we mean, they respond accordingly, we interpret their response, respond to it, and so on.

(Animation:

Person 1 "Hello"

Person 2 "Hey! How's it going"

Person 1 "Good, can I borrow 5 bucks?"

Person 2 "Sure!")

A conversation is a loop. Emit. Process. Emit. Process.

While the process of talking to someone back and forth seems pretty automatic, the mechanics of a flowing conversation have discrete components with different responsibilities.

By identifying those components, Clinc enables remarkable conversational experiences between people and artificial intelligence.

Don't worry about writing any machine learning algorithms yourself. You just need to reflect on how good conversations actually work and train your AI with the data it needs to become a great conversation partner.

Utterances

In the Clinc Platform, we call "the things people say" utterances. An utterance is typically one or two sentences. Responses to utterances are also utterances.

(Animation: show speech bubbles and label them as utterances)

Classes

When someone emits an utterance, the receiver first determines what the intent of that utterance is.

(Animation:

Person 1: "Hello"

Person 2: (thought bubble) ...)

In the Clinc Platform, an utterance is classified based on its structure, so we call that intended meaning a class. By identifying the class of an utterance, we'd say the conversation state has changed to that class. For example, identifying an utterance as a greeting would mean we are in a greeting state in the conversation.

(Animation:

Person 2: (thought bubble) ...greeting!)

When the receiver of an utterance determines its meaning, they choose an appropriate response.

(Animation:

Person 2: greeting -> "Hey! How's it going?")

SVPs

Sometimes an utterance has extra information in it that influences our response.

Take the utterance: "Hello! How are your parents?"

Not only is it a greeting, it is a question. Key data in an utterance can be identified by asking: what words words would result in a different response if they were changed?

In this case, changing "parents" to "planets" would surely elicit a different response from someone. When we have key parts of an utterance that influence its meaning, we call it a slot-value pairing, or SVP.

The slot is the category the value represents. In the "How are your parents?" example, the slot would be labeled something like subject and the value would be parents.

If we parse the intended meaning and slot value pairs of "How are your parents?", we get something like:

|How are your parents                        |?
|--------------------------------------------|
|intent: inquire about condition of something|
|--------------------------------------------|

How are your |parents      |?
             |_______      |
             |slot: subject|
             |-------      |

A couple questions for you.

What would you say if someone asked you "How are your?"?

Probably "My what?", right? Thats because you sensed that the utterance "How are your?" was incomplete, requiring a certain slot to be fulfilled. In the Clinc Platform, slot-value pairings can be required or optional.

(Animation:

show utterances with highlighted slots, show required and optional)

Slot Mapping

How come if someone said "How are your folks?", you would give a similar response as the one you would for "parents"? You just know that "folks" is a reasonable alias for parents, right? In the Clinc Platform, we accomplish this using slot mappings.

(Animation:

show stylized secondary cluster and destination value)

Transitions

Given that someone has asked you how your parents are and you've answered:

How come if someone asked "How about your dogs?", you would know that they still meant "How are your dogs?"?

What about if they said, "can we call them?"? How do you know that "them" means your parents?

When people converse, we are able to maintain the context of the conversation and transition to different "states" of conversation. In transitioning from "How are your parents?" to "How about your dogs?", we maintain the context of inquiring about the condition of someone.

In transitioning from "How are your parents?" to "Can we call them?", we maintain the context of the subject, allowing us to know that "them" is "parents".

In the Clinc Platform, you get to build fluid conversations by creating transitions between conversation states, included transitions back to the same state.

(Animation:

show thought bubbles between two people as a conversation transitions state)

Building a Conversational Entity

AI Version

A person, relative to the idea of a conversation, is just an entity capable of conversation. In the Clinc Platform, another entity capable of conversation is an AI version. You can build many versions on the platform: one for production, one for testing new features, etc.

(Animation:

show two people, then replace person with clinc logo)

Competencies

Remember that you haven't always known what to do when someone says "Hello" to you. You had to learn that "Hello" is a common thing for people to say, and that saying "Hello" back is a common response that gets you less weird looks than saying "Bananas".

Without your knowing it, the people around you trained you to be good at recognizing and responding to utterances that fall under the "greeting" category. They helped you become competent at greeting interactions.

In the Clinc Platform, the ability for a version to interact in a certain context (such as greetings) is called a competency. Where it took you years as a child interacting with others to build conversational competencies, we train the AI using collected utterances in a matter of minutes.

So to redefine a conversation using Clinc terminology, we can say that a conversation consists of two entities competent at creating and interpreting utterances.

(Animation:

show clinc logo and slowly add competency names floating around the logo)

Informational and Confirmational Competencies

Some conversations result in observable changes in the world, and others do not.

Informational

Imagine you asked someone if they like burritos. Aside from them answering your question, no real action is required for the conversation to be successful. Regardless of how they respond, there are no observable changes in the world. They probably just say yes or no.

It would be silly for them to say "You're asking me if I like burritos, right?" Or for them to go and get a burrito to prove it. In the Clinc Platform, informational competencies are competencies that facilitate the retrieval of...you guessed it: information. There is typically no observable action or side effect involved.

(Animation:

show nothing happening outside the conversation for informational)

Confirmational

Asking someone to get you a burrito, however, requires action. Someone has to physically make a burrito. Money has to be exchanged. Eventually it ends up in your hands. You said something that resulted in an observable change. Before you didn't have a burrito, and after you said something you did.

Because there are real-world consequences for these types of requests, it makes sense to make sure you really want to do what you're saying. We would want to confirm your intent. In the Clinc Platform, the AI handles these types of interactions with confirmational competencies. In these competencies, slot values are repeated back to the user, who is then asked to confirm the accuracy of the data or correct it.

(Animation:

show people acting in the outside world for confirmational)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment