RPA BANKをご覧のみなさま、こんにちは!「最近AIが気になって仕方がない」とウズウズしているものの、「ドコにもスキがないピリッとした雰囲気」になかなか一歩を踏み出せないでいる、そんなみなさまに向けたお気楽AI解説連載『さるでき流 AIのはじめかた』、今回で6回目です。

前回ようやく「Watson Assistantの入り口編」が終わりました。実に長ーい「入り口」でしたが、その分シッカリとチェックできましたので、「サービスの概要」や、各画面で登場する「用語の内容」など、チャットボットを作っていくのに必要となる基礎知識はバッチリだと思います。

ワトソン「ではコロボ君、少しだけ復習してみましょうか。スキル(Skills)って何でしたっけ?」
コロボ「チャットボットが行うことができる、会話の技術のことです。ユーザーからの意思(インテント)や具体的な単語(エンティティ)を解釈するための設定を行い、会話の流れ(ダイアログ)を作っていきます。」

ワトソン「おおお、正解です!ビックリするほどちゃんと覚えましたね」
コロボ「はい!ここで不正解だと、今回も用語説明編になりそうな気がしましたので、必死で覚えてきました。さあさあ、実践編に行きましょう!」

もし、画面に出てくる用語でわからないものがあったら、前回までの記事をチェックしてくださいね。それでは、Watson AssistantサービスのManage画面にある『Watson Assistantの起動』ボタンをポチッとどうぞ!はじめてのチャットボット作りのはじまりです。

【スキルの作成】
最初に、Watson Assistantによる「チャットボット作りの手順」をザックリまとめておきます。

STEP1 「Assistant(アシスタント)」の作成
STEP2 「Skills(スキル)」の作成
STEP3 「Intents(インテント)」、「Entities(エンティティ)」の登録
STEP4 「Dialog(ダイアログ)」の組み立て

こんな感じです。大きい枠組み(アシスタント)から作りはじめて、細かい部分(インテント、エンティティ)を設定し、それらを会話の流れ(ダイアログ)に組み込んでいきます。

基本的には上記の流れでチャットボットを作っていくのが正解……なのですが、順々に進めていくとSTEP3の「インテントの設定」あたりで時間がかかってしまって、「楽しい部分がお預け」になりそうですので、今回は一番楽しいSTEP4の『ダイアログの組み立て』を先にやってしまおうと思います。美味しいものは最初に食べよう方式、です。

ではでは、そこまで駆け足で行きますよ。まずは、STEP1の『アシスタントの作成』……なのですが、この部分はダイアログを試すだけであれば必要ありませんので、次回以降に行います。ということで、STEP2の『スキルの作成』です。

サイドバー※のタブから「Skills」の画面を選択して、「Create skill(スキルの作成)」ボタンをクリックします。(※前回から今回の間に、Watson Assistantツールの機能が進化して、「サイドバー型」になりました)

「Create Skill」の画面に切り替わります。枠が2つ並んでいるのですが、今回は左側の「Dialog skill(ダイアログスキル)」を選んで、「Next」ボタンをクリックします。

「Create Dialog Skill」の画面に切り替わります。スキルの「名前」を付けて、言語選択を「Japanese」にしたら、「create dialog skill」ボタンをクリックしましょう。今回は『はじめてのスキル』と名付けてみました。

スキルができました!これで、「インテント」や「ダイアログ」など、詳細設定用の各種画面が使えるようになります。

【ダイアログ画面】
では早速、「Dialog」タブをクリックして、ダイアログ画面を開きましょう。「ようこそ(welcome)」と「その他(anything_else)」のふたつの「枠」が表示されていますね。

この枠は「ノード」と言って、『会話の部品』になるものです。「ノードを沢山並べて、会話の流れ(キャッチボール)を作っていく」というのが、Watson Assistantにおける基本的なチャットボットの作り方になっています。

最初の状態では、「ようこそ」、つまり、『チャットボットが最初に話す内容』を設定するためのノードと、「その他」、つまり、『チャットボットが想定していない質問をされた時に、どう回答するのか』を設定するためのノードが用意されています。会話の必須部品として、あらかじめ用意されている、というわけです。

この状態では、何を質問しても「その他」のノードが反応しますので、「ワンパターンな受け答えしかできない=かなり融通の効かない」チャットボットになっています。試しに会話してみましょう。

画面右上にある、「Try it(試す)」ボタンをポチッとどうぞ。画面の右側から「Try it out(実際に試してみる)」と書かれた黒い画面がニョキッと出てきます。これがWatson Assistantの「テスト画面(機能)」です。

「いらっしゃいませ。ご用件を入力してください。」と表示されていますね。画面下に入力欄がありますので、「こんにちは!」と入力してみます。

「解釈できませんでした。申し訳ありませんが違う表現を試していただけますか。」とのこと。ふむふむ。では、「元気ですか?」に変えてみましょう。

「恐れ入りますが表現を変えていただけますか。解釈できませんでした。」と表示されました。うーむ。会話になりませんね。

……勘の良い方なら既にお気付きかと思いますが、そうなんです。「その他」のノードには、「解釈できない」と答えるよう設定がされているのです。ですので当然、何を聞いても「解釈できない」と返ってくるわけですね。

では、会話のイメージが掴めたところで、各々のノードの中身を覗いてみることにしましょう。最初は「ようこそノード」です。「ようこそ(welcome)」の枠をクリックしてください。

【ようこそノード】
こちらが、ようこそノードの中身です。一番上に、「ようこそ」とノードの「タイトル(名前)」が書いてあります。

順番に見ていきましょう。名前の次は「If assistant recognizes」、つまり「もしチャットボットが、以下の条件を認識したら」という、このノードが選ばれる『条件』が書かれています。

この「条件」には、「インテント」や「エンティティ」が入ります。「特定の『意思』に属する言葉や、意味のある『単語』が入力されたら〜」というのが「条件」になるわけです。

ただ、ちょっとヤヤコシイのですが、ようこそノードに入っている条件は『welcome』、実はこれは「インテント」でも「エンティティ」でもなく、Watson Assistantが『会話を開始するときに使う、専用の条件』です。このノードでしか出てきませんので、「ふーん」くらいで覚えておいてくださいね。

条件の次は「Assistant responds」、つまり「アシスタントは以下のように答える」という、『回答』や『反応』が書かれています。ようこそノードでは、「いらっしゃいませ。ご用件を入力してください。」という「Text(文字列)」を返すよう設定されています。

最後が「Then assistant should」、つまり「回答を返した後は、以下のように反応する(動く)」という、『締め』の処理が設定されています。ようこそノードでは、「Wait for user input」と設定されていますので、回答した後は、「再びユーザーからの入力を待つ」ように反応し(動き)ます。

以上で、「ようこそノード」の設定内容は終了です。すべてのノードが、「条件の認識」「質問への回答」「締めの処理」という機能を持っていて、これらが「ひとつの会話の単位(部品)」になっています。このノードを沢山並べて、会話の流れを作るわけです。

では続けて、「その他ノード」の方も覗いてみましょう。

【その他ノード】
「名前」の欄は同じですね。「その他」と書かれています。

「条件」のところには『anything_else』 と書かれています。これも「welcome」と同様に、『もしすべてのノードの条件に一致しない質問が来た場合は、このノードを選ぶ』という、『専用の条件』になっています。

進んでいくと、「回答」のところが少し違いますね。「Text(文字列)」を返すようになっているのは同じなのですが、回答が「複数行」設定されています。さらに、欄の下に「Response variations are set to sequential(順番に回答する)」という補足が書かれています。

そう言えば……先ほどテスト機能で、「こんにちは!」「元気ですか?」と入力した時に、これらの回答が『順番』に表示されていました。なるほど、あらかじめ回答方法が設定されていた、というわけですね。

回答方法には、「sequential(順番)」以外にも「random(ランダム)」や「multiline(複数行同時)」が選べるようになっています。試しに複数行同時を設定してみると……

2つの回答が一気に表示されました!

「条件」と「回答」、なんとなくわかってきましたね。では、新しいノードをひとつ追加してみましょうか。ノード一覧の上にある、「Add node」ボタンをポチッとどうぞ。

【インテントの登録】
……と、言いたいところなのですが、先に「条件のもと」になる「インテント」(STEP3)を作らないといけません。インテントには様々な機能や設定方法がありますので、詳しくは次回チェックすることにして、今回はひとつだけササッと設定してしまいましょう。

「Intents」のタブを開いて、「Create intent(インテントの作成)」ボタンをクリック。

「Intent name(インテント名)」の入力を求められますので、『あいさつ』と入力します。「Description(補足説明)」は任意入力欄ですので、入力してもしなくても大丈夫です。

「User example(例題)」に『おはよう』と入力したら、「Add example」をクリック。

インテントは、同じ意味を持つ質問をいくつも設定し、ひとつの質問としてまとめる『意思』のことでしたね。ですので、画面には「少なくとも5個くらいは例題を入力してね」と書いているような気がしたりしなかったり……しますが、今回は気にせずダイアログ画面に戻ります。

【ノードの追加】
では、インテントの設定ができましたので、あらためてノードの追加をしてみましょう。「Add node」を押すと、『空っぽのノード』が出てきます。まずは、「名前」の欄に『あいさつ』と入力です。

「条件」には、今作ってきた「あいさつインテント」を設定しましょう。あいさつインテントには「おはよう」という例題が登録されていますので、内容的には、「もしユーザーが『おはよう』と入力してきたら〜」という条件になります。

次に、回答を設定しましょう。回答の種類は「Text(文字列)」のままにしておいて、内容を「おはよう!ボクはコロボです!」と設定してみました。

「締め」処理は、「入力待ち」のままで大丈夫ですので、これで新しいノードの設定は完了です。では早速、テスト機能で「Try it out」!

「ようこそノード」の文字列に続いて、「おはよう」と入力すると……

回答してくれましたー!コロボ君すごーい!

画面をよく見ると、「#あいさつ(あいさつインテント)」の質問を受けたよ、ということを、Watson Assistantが認識しているのが確認できます。

そうそう、ひとつだけ気を付けないといけないことがありまして。ノードは基本的に『上から下に』向かって条件が評価されます。例えば、「あいさつノード」を「その他ノード」の下に設定してしまうと、「その他ノード」が持つ強力な条件によって、「あいさつノード」が無視されてしまいます。

そんなことにならないよう、新しいノードを追加したら、「ようこそノード」と「その他ノード」の間に移動しておきましょう。

【今回のまとめ】
はじめてのチャットボット、ちゃんと動きましたね!

あらかじめ「ようこそ」と「その他」という専用のノードが用意されていて、その間にオリジナルのノードを追加していく。ダイアログ作りのイメージがちょっとだけ掴めたんじゃないかと思います。

まずは「Try it out(テスト機能)」を思いっきり楽しんでいただければOKですので、細かい部分については気にせず、色々と設定してみましょう。この「Try it out」はWatson Assistantに標準で付いている機能ですので、「設定不要」「料金不要」でバンバン使うことができるようになっています。ロボットとの会話を楽しんでくださいね。

コロボ「ちなみにこのノードは、会話の数だけ設定するのですか?」
ワトソン「基本的にはそうなりますよ」
コロボ「では、『おはようノード』『元気ですかノード』『調子はどうノード』、と……」
ワトソン「おっと!コロボ君、ちょっとお待ちください」

ノードの中で「会話に幅を持たせる便利な機能」、それが「インテント」です。今回は「あいさつインテント」の中に「おはよう」という例題しか設定しませんでしたが、この部分を細かく設定していくことで、ノードの作り方もグッと変わってきます。

ではでは、次回はインテントの設定を進めていきましょう。次回もお楽しみに!