Even with zero knowledge, we will bring you to the point where you can create Slack Bot and Line Bot using Watson.
[Updated on June 6, 2019] This post was written during the Watson Conversation era, the predecessor of Watson Assistant, and although screen captures are still old, Watson Assitant's basic ideas and operations Does not change, so please read it as the latest environment. </ font>
■ I would like to touch on the following.
** ① Introduction to thinking, account creation ** ← This article ② Design method of dialogue flow using "Hotel reservation" as an example ③ Utilization of context, practical usage of various functions not mentioned in Tutorial ④ How to link with Java logic ⑤ Create a chatbot with Watson + Java + Slack
__ I thought I'd write it all in one go, but it's too long, so I'll separate the articles. __
I've read Watson Assistant (formerly Watson Conversation) articles, read API DOC, and tried samples, but I'm writing for those who don't really understand.
When I first touched it, I didn't really understand it.
Consider a system such as Slack or LINE where Java is the link between the front end and Watson, and Watson is in charge of natural language processing and dialogue.
How to make Slack Bot and Line Bot is described in ↓, so the main part of this article is Watson. -Easy to create LINE BOT with Java Servlet -Easy to make Slack Bot with Java
Watson Assistant (formerly Watson Conversation) is a service that allows you to easily design and realize a dialogue flow with users like a chatbot.
The feature is that it can handle natural language flexibly, but basically it is suitable for those who can ** rule the dialogue ** (this is called ** rule based **).
Let's first consider a dialogue that does not use Watson Assistant (formerly Watson Conversation).
The tool used here is the if statement.
【hotel reservation】 Let's create a scene of ** booking a hotel ** with an if statement.
What happens when the user says ** "I want to reserve a room" ** Is it like the following?
String inputText="I want to reserve a room";
if(inputText.contains("Reservation")){
return "Understood. It's a room reservation!"
}
If the keyword "reservation" was in the text, I guessed the intention that "this person wants to make a reservation".
However, the user may say ** "I want to take a room" **, so I will support that as well.
String inputText="I want to take a room";
if(inputText.contains("Reservation") || inputText.contains("I wanna get")){
return "Understood. It's a room reservation!"
}
But here the user said ** "I want to cancel my room reservation" **. If you keep the above logic, it will be ** reserved **, so I hurriedly did the following.
String inputText="I want to cancel my room reservation";
if((inputText.contains("Reservation") || inputText.contains("I wanna get")) && !inputText.contains("Cancel")){
return "Understood. It's a room reservation!"
}
In this way, the if statement becomes complicated ...
I do not intend to deny this means (if sentence operation) itself, As the text becomes more complex and more numerous, it turns out to be not easy.
Depending on the person, a little care may be taken to analyze the morpheme and decompose the part of speech. You can do a hook-up analysis, but in any case, it's very good.
Next, let's see how Watson Assistant (formerly Watson Conversation) can make this easy.
Even in Watson Assistant (formerly Watson Conversation), the part that ** guesses the intention from the text ** is Same as the program above.
However, it is not necessary for the developer to create and judge the logic of ** whether or not "reservation" is included in a part of the sentence ** like the above if statement.
All you have to do is enumerate the sentences that the user is likely to say and let Watson remember (learn) them as shown below.
** "I want to reserve a room" ** ** "I want to get a room" **
Then, when you receive the sentences listed above, tell them to classify them as ** "vacancy reservation" **, and Watson will ** learn ** them. ** Intention ** is called ** Intent ** in Watson.
After learning, Watson will determine ** "vacancy reservation" ** even if a ** similar ** sentence arrives. (Probability is expressed by a numerical score.)
Sentences such as ** "I want to make a reservation" ** or ** "Can I get a room?" ** will be properly interpreted as ** Vacancy reservation **.
Now, the process of determining the intention from this ** sentence ** is Since sentences entered with a certain intention are ** classified ** into a certain category This is called ** intention classification **.
This ** intention classification ** is sometimes referred to as ** intent understanding **, but unlike humans ** machines (Watson) cannot understand the meaning and intent of sentences like humans ** Therefore, the name ** classification ** is more appropriate.
This ** ability to classify natural sentences ** is one of the core technologies of Watson Assistant (formerly Watson Conversation). (Watson's internal processing is presumed to be doing ** word2vec **-like things and utilizing various knowledge)
This technology can also be used alone, and a service called Natural Language Classifier (NLC) is available. I will.
Natural Language Classifier (NLC) translates into ** natural language classifier **, which is a correct name without exaggeration.
Now consider the response.
What is a response?
Continuing with the example of a hotel,
** User "I would like to reserve a room" ** ** Counter "When are you sure?" **
This ** "When are you sure?" ** becomes the ** response **.
When you receive a sentence classified as ** Vacancy reservation **, the response is how to return it. The designer of the dialogue flow decides how to return it.
This ** response ** itself does not have Watson's unique intellectual processing, It means that the response text (other than the text can be output) is returned according to the rules decided by the dialogue flow designer.
As shown in the figure below To summarize step 1 and step 2, ・ Classify input sentences into ** intention ** ・ ** Response ** to ** intention ** according to the set rules It will be.
The basic idea is to make a set of step 1 intention classification and step 2 response and connect multiple responses to form a dialogue.
Create an account now and use Watson Assistant (formerly Watson Conversation).
--Access Bluemix Create a Bluemix account by accessing the following to use Watson Assistant (formerly Watson Conversation) https://console.ng.bluemix.net/
--Follow the screen and enter the required information
--For the first time, you can use a free trial.
--Tap the menu at the top left of the screen after creating an account
-Select ** Service **
-Select ** Watson **
-Select ** Create Watson Service **
-Select ** Conversation **
--Scroll down the screen
--Make sure ** Free ** is selected in your pricing plan and select ** Create ** This will create the Watson Assistant (formerly Watson Conversation) service.
For free plans
--1,000 API queries per month --Up to 3 workspaces --Up to 25 intents --Shared public cloud
However, this is sufficient for a simple dialogue flow.
By the way, Watson itself runs on WDC (Watson Developer Cloud), not on Bluemix.
-** Service Credentials ** Select tab
--Check ** username, password ** in the box below. These will be needed later when calling Watson's API from Java etc. (Can be checked at any time)
――Let's create a workspace right away.
Select the ** Manage ** tab and select ** Launch tool ** to open the workspace screen
-Select ** Create ** to create a new workspace.
Roughly speaking, a workspace can be thought of as a dialogue flow.
By the way, with the free plan, you can create up to 3 workspaces per service. Create a workspace for hotel reservations
――By now, you are ready to start interactive design.
The continuation is here. ** Let's go with Watson Assistant (formerly Watson Conversation) ② Make a hotel reservation chatbot **