技術ブログ
技術ブログ
2018年08月09日
このエントリーをはてなブックマークに追加

Watson Assistantことはじめ

はじめに

皆さんこんにちは、日商エレクトロニクスの北川です。

突然ですが、
問い合わせ対応をやっていると、できれば24時間365日いつでも対応したい、
でも中々そんなリソースは割けない・・・と悩まれることも多いと思います。

そんなときに不眠不休で対応できるのがチャットボットですね。
お客様が疑問を感じたときにすぐに回答が返ってきたら、お客様の満足度はうなぎのぼりです。

今回はWatsonを使ってそんなチャットボットの雛形を作ってみたいと思います。

 

Watsonを使うために

Watsonを使うためにはIBMのクラウドである「IBM Cloud」に登録する必要があります。
まだ登録されてない方は登録してください。
本記事では登録が完了していることを前提に進めていきます。

Watson Assistantを作成

IBM Cloudにログインすると画像の画面が出て来ます。
今回はチャットボットを作るので、赤枠部分をクリックしましょう。

 

サービス名などを入力して作成をクリックします。

 

作成が完了したら、ツールを起動しましょう!

 

Workspacesタブを選択してからcreateをクリック

 

ワークスペース名を決めてCreateをクリック

 

Watsonの会話フローを作成

これでWatsonの準備が完了しました。
ここからはIntent/Entity/Dialogの設定をしていきます。

Intentsの追加

Intentはユーザが入力したテキストに含まれる「意図」を設定します。
Watsonは入力テキストを分類機で分類し、入力されたテキストの意図を理解します。
下の例みたいな感じです。作ってみたら分かりますのでさっそく作ってみましょう!

ユーザ「おはよう」
Watson(ユーザから挨拶されたな)
Watson「はい!おはようございます!お元気ですか?」

 

Add intentをクリック

 

今回は例と同様に挨拶の意図を設定していきます。

 

Add user examplesに挨拶っぽいもの入力して
Add exampleをクリックして追加していきます
まずは4つ設定してみました。
設定が終わったら ← をクリック

 

挨拶の登録が確認できたら、Watsonが意図を認識してくれるかテストしてみましょう!
右上のTry itをクリック

 

Try it outは所謂デバッグ画面です。
ここで挨拶を入力してみましょう。
挨拶か挨拶ではないかを分類していることがわかると思います。

 

では「おはラッキー」も挨拶として認識させてみましょう

 

設定したらWatsonのトレーニングが始まります。
完了したらもう一度おはラッキーを入力してみましょう

 

おはラッキーも挨拶に認識されるようになりましたね。

 

Entitysの追加

Entityはユーザが入力したテキストから抽出した「目的」を設定します。
下の例みたいな感じです。作ってみたら分かりますのでさっそく作ってみましょう!

Watson「元気ですか?」
ユーザ「はい!」
Watson(yseってことだな)
Watson「お元気で良かったです!」

 

EntitysタブからAdd entityをクリック

 

今回は「yes」と「no」を設定していきましょう。
作り方はintentとだいたい同じです。

 

 

 

Dialogの追加

Dialogはユーザの発言に対応する対話の流れを制御するロジックの組み合わせを設定します。
下の例みたいな感じです。作ってみたら分かりますのでさっそく作ってみましょう!

ユーザ「おはよう」
Watson(ユーザから挨拶されたな)
Watson「はい!おはようございます!お元気ですか?」
ユーザ「はい」
Watson{元気か聞いた後にyesが返ってきたな)
Watson「良かったです!」

 

DialogタブからCreateをクリック

 

デフォルトでフローが作られていますので、追加していきましょう。
Add nodeをクリック

 

先程作成した挨拶を登録します。
if bot recognizesに#を入力するとIntentsの選択肢が出るのでそこから挨拶を選択

 

挨拶されたときの返答を設定します。

挨拶が追加されたらXをクリックして閉じましょう

 

Dialogに挨拶が追加されたら、挨拶を選択してAdd child nodeをクリックします。

 

 

yesとnoを設定しましょう

 

 

 

これで設定できました!
ではtry itを押してテストをしてみましょう!

 

はい!
これで挨拶をしたらラーメンが好きかを聞いて返事をしてくれるチャットボットができました!

ここまでを基礎に拡張することで、簡単なチャットボットができます!

 

ちょびっと応用編

では会話に応用力を持たせてみましょう!
下のパターン1と2の両方に対応できることを目指します。

パターン1
ユーザ「おはよう」
Watson「おはようございます!なにか知りたいことはありますか?」
ユーザ「天気が知りたい」
Watson「どこの天気が知りたいですか?」
ユーザ「東京の天気」
Watson「東京の天気は晴れです!」

パターン2
ユーザ「おはよう」
Watson「おはようございます!なにか知りたいことはありますか?」
ユーザ「東京の天気が知りたい」
Watson「東京の天気は晴れです!」

 

まずはIntentに天気を追加します。

 

次にEntityにlocationを追加します

 

そしてDialogを下のように構成します。

 

それぞれの中身は以下のようになっています。

・天気
And finally: Skip user input の設定によって
天気が聞かれていたらユーザのレスポンスを待たずにchildren nodeに移動します

 

・場所
locationが含まれていたら天気を返します。
今回は特に天気を調べたりはせずに決め打ちで返しています。

 

・場所情報なし
locationが含まれていなければ場所を聞きます。

 

・知ってる場所

And finally: Jump to の設定によって
locationに登録されていれば場所nodeにジャンプします

 

・知らない場所
locationに登録されていなければ、
わからない旨を伝えます。

 

応用編動かしてみた

 

はい!目的通りの回答をしてくれました!
ただし登録されていないlocationが含まれていると2重で質問をしてしまいます。
ここはどうにかしたいですね。。。。

 

 

とりあえずはこれで完成です!

 

まとめ

自分でコード書いて意図解釈などを実装しようとすると、非常に面倒ですが、
Watsonを使うことによって、簡単な問答をすぐに作ることができました!
ここからどんな感じに学習させていくかなどはまだまだ勉強していかないとわかりませんが、
実際に触ってみて、いろいろなことに使えそうだと感じました!

Watsonの記事はシリーズ化していきたいと思いますので宜しくお願い致します!

 

次回予告

今回できなかった「WatsonとSlackの連携」または
「Watsonと(天気などの)APIの連携」を記事として書く予定です。

 

※2018/10/01 追記

Watson AssistantとSlack連携 を公開しました。

このエントリーをはてなブックマークに追加

この記事を書いた人

KitagawaYusuke

PROプランのすべての機能を
30日間無料でお試し

新規無料登録いただくとPROプランのすべての機能を
30日間無料でお試しいただけます。
クレジットカードなど決済情報の登録は不要です。

各プランの詳細はこちらからご確認ください。