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

みなさま、前回の宿題、やってきましたか?(ハテ?宿題とは?という方は、第7回をチェックしてくださいね)

質問「私はコンピューターと話しているの?(#General_Human_or_Bot)」
コロボ「ソウデス。ワタシハコンピューターデス。」
質問「何だか少し話しにくいです(#General_Negative_Feedback)」
コロボ「ソレハマダ慣レテイナイカラダト思イマス。」
質問「じゃあ何か面白い事を言ってください(#General_Jokes)」
コロボ「ヘイマイケル!昔ジェニファーガ『シロ』ッテドッグヲ飼ッテタンダケd」

ワトソン「そのロボット風カタカナ返事が喋りにくい原因ですよ、コロボ君」

複数の質問をまとめた「意思」に対して、「返事」を考えることって、思った以上にムズカシい部分がありますよね。この辺りはある程度「慣れ」が必要ですので、設定を変えつつ何度もチャットボットと会話をしてみてください。少しずつコツを掴んでいきましょう。

では、インテントも増えたことですし、今回は「ダイアログ」について、もう少し詳しく設定を見ていくことにします。いつもどおり、Watson AssistantサービスのManage画面にある『Watson Assistantの起動』ボタンをポチッとどうぞ。チャットボット作り、再開です!

【アシスタントの作成】
ダイアログの設定画面に向かう……その前に。今回は「チャットボット作りの手順」の中でずっと放置していた最初のステップ、『アシスタントの作成』を行います。

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

「アシスタント」は、チャットボットを「外部のWebサイト」や「アプリ」から呼び出す(起動させる)ための『窓口』として使用します。ですので、本来まだ作る必要はないのですが、今回はアシスタントに含まれる「ある機能」を利用したいので、少し早いですが作ってしまいましょう。

では行きますよ。まずはサイドバーメニューの中から「Assistant」を選びます。

「Assistant」画面を開くと、最初から「My first assistant」というアシスタントが設定されています。このアシスタントを使っても良いのですが、せっかくですので新しいアシスタントを作ってみましょう。

画面上部にある、「Create assistant」というボタンをクリックしてください。

「Create Assistant」画面が開きました。「Name(アシスタントの名前)」と「Description(アシスタントの補足)」、そして、「Preview Link」なるチェックボックスがありますね。

今回利用したい機能が、この「Preview Link」です。直訳すると「プレビュー画面を見るためのリンク」、ということになります。

プレビュー画面というのは、ワタシ達がよく使っている「テスト機能」と近いもので、Web上でチャットボットの動きを確認するための画面です。テスト機能と違って、開発者にとって便利な「インテントの反応」などは表示されませんが、その代わり、より「ユーザー目線」で動きを確認することができるようになっています。後ほど試してみましょう。

では、名前と補足を入力して、Preview Linkのチェックボックスを「ON」にしたら、「Create assistant」ボタンをポチッとどうぞ。今回は「コロボ君」というアシスタント名にしてみました。

ふむふむ、何やらボタンが並んでいますよ。矢印も並んでいるので、スゴく急かされている気がしますが、今ここで設定するのは、「Skill」の欄にある「Dialog」の設定ひとつだけです。

「Add dialog Skill」ボタンを押してみましょう。スルスルっと「Add dialog Skill」画面が出てきました。画面の真ん中に、既に設定している「はじめてのスキル」が表示されています。

なるほど、この画面で、「アシスタント」に「スキル(ダイアログスキル)」を登録するわけですね。それでは、「はじめてのスキル」をポチッとな。

「はじめてのスキル」をクリックすると、アシスタント画面に戻りました。「Dialog」の欄に「はじめてのスキル」が無事登録されていますね。

でもこれで、「Dialog」の欄が埋まってしまいました。つまり、スキル(ダイアログスキル)は、アシスタントに対して「ひとつ」しか登録することができないようです。

間違いやすいのですが、「Watson Assistant全体」としては、複数スキル、複数アシスタントの設定が可能です。ただ、会話のシーンごとに沢山のスキルを作って、ひとつのアシスタントにまとめて登録する……ような、複雑な登録は残念ながらできません。シンプルに考えるのが良さそうですね。

【ダイアログの設定】
では、アシスタントの設定ができましたので、毎度お馴染み「はじめてのスキル」のダイアログ画面に移動して、テスト機能を引っ張り出します。

コロボ「いらっしゃいませ。ご用件を入力してください。」

はい。いつものようにコロボ君が「ようこそ」ノードの内容を聞いてきました。

いつも何気なく見ていましたが、この質問に対して、私達ができる回答は、「無数」にあります。この質問は、「なんでもOKです」と、広く(制限なく)聞く形式、すなわち「オープン・クエスチョン(自由に回答できる聞き方)形式」になっているからです。

前回まで見てきたように、チャットボットは「人工無脳」、つまり、設定してある質問に対する回答しかできません。もちろん、優れたAI(人工知能)らしく、インテント機能が質問のブレをある程度カバーしてくれますが、それでも、想定すらしていない質問には、まったく反応できないのです。

つまり、チャットボットをより効果的に機能させるためには、「オープン」ではなく、「クローズド・クエスチョン(二択や三択など、限定した回答しかできない聞き方)形式」でダイアログを組み立てていくのがポイントになります。

ということで、「ようこそ」ノードを少しだけ変更してみましょう。

まずは、「Assistant responds(アシスタントからの回答)」の欄に注目してください。初期状態では、「Text(文字列)」タイプの「いらっしゃいませ。ご用件を入力してください。」という言葉が設定されています。まずはこの部分を、『いらっしゃいませ。以下の中からご用件をお選びください。』に変更します。

次に、「Add response type」のリンクを押して、プルダウンから「Option」を選択します。すると、「Option(選択肢)」タイプの設定欄が追加されます。

設定欄は、「Title(選択肢のタイトル)」「Description(選択肢の備考)」がまず全体の設定項目で、その下にある「LIST LABEL(選択肢の表示名)」「VALUE(選択肢を選んだときに入力される値)」を、必要な選択肢の数分「+」ボタンで追加、設定する、という流れになっています。

では、こんな感じに設定してみましょうか。

Title:本日の用件 Description:用件を選んでください
LIST LABEL① アナタはロボット? VALUE① アナタはロボット?
LIST LABEL② 何ができるか教えて? VALUE② 何ができるか教えて?
LIST LABEL③ 面白いことを言って! VALUE③ 面白いことを言って!

LIST LABELとVALUEが同じ内容になっていますが、今回は選択肢の表示名も、選択肢を選んだときにチャットボットに受け渡す値も同じで大丈夫なので、この設定で問題ありません。

ポチポチと設定をしたら、テスト機能にある「Clear」ボタンを押して、テスト画面を一旦クリア、新しい「ようこそ」ノードを表示してみましょう。

おお!選択肢が出てきましたね。

「アナタはロボット?」の選択肢をクリックすると……。

「#General_Human_or_bot」のインテントが反応しました。これは、「アナタはロボット?」と、手入力した時とまったく同じ動きです。

自由に文字を入力させる形式では、設定外の質問が沢山来てしまう可能性がありますが、こうして事前に選択肢を用意しておけば、想定内の質問に誘導することができます。まさに、クローズド・クエスチョン、というわけですね。

ちなみに、「Add response type」として選択できる回答のタイプには、他にも「Pause」と「Image」があります。

「Image」はそのまま、チャットボットの中で「画像」を表示するために使うタイプです。ただ、設定が少しだけ複雑で、表示する画像は、「ファイルをアップロードして設定する」のではなく、「URLを入力して場所を指定する」必要があります。

こんな感じ。Webサイトを作ったことがある人であれば、この形式には慣れていると思いますが、そうでない人には、ちょっとムズカシイかもしれません。無料のブログサービス等にアップロードした画像のURLでも指定できますので、興味がある方は挑戦してみてくださいね。

「Pause」は少しだけ面白い機能で、「Durations(継続時間)」の設定を行うと、その時間の間ロボットが処理を待ってくれます。

処理的に必要なものではないのですが、ここに「Typing indicator(入力インジケーターを表示するかしないか)」の設定を行って、インジケーターを表示させると、チャットの印象がググッと変わってきます。今回は継続時間を「2000ms(2秒)」、入力インジケーター「ON」で設定してみました。

【Assistantプレビュー】
さてさて!各種設定が終わりましたので、早速いつものように内容を確認する……ところなのですが。実は少し困ったことに、先程の「Pause」については、テスト機能で確認することができません。

画面上、「Pause 2000 ms, typing: true」のように、「ここで2秒間、入力インジケーターが表示されますよ」という文字に置き換わってしまいます。

そこで登場するのが、先程作った「アシスタント」の中にあった、「プレビュー画面」です。こちらであれば、「ユーザー目線」で、入力インジケーターを確認することができます。

では、再度「コロボ君」アシスタント画面に戻って、「Preview Link」のボタンをクリックしましょう。

何やら複雑なURLが表示されていますね。このURLをポチッと。

なんと!チャットボット画面が出てきました。

今回設定した様々な回答のタイプ、「Option(選択肢)」「Image(画像)」、そして、「入力インジケーター」もシッカリ動いていますね。

「…」が表示されることで、ちゃんとロボットが「考えながら会話しているように」感じませんか?コロボ君が、何だか本当にそこにいるみたいです。想像以上に効果的なので、みなさまも是非試してみてくださいね。

【今回のまとめ】
はい!おつかれさまでした。今回は、「アシスタントの作成」「ダイアログの各種設定」「Assistantプレビュー」と、さらに『自然な会話』を作るためのポイントをチェックしました。少しずつですが、徐々に本物のチャットボットのような動きになってきましたね。

実は、ここまでお話しした機能だけでも、ある程度「実用的」に使えるチャットボットを作ることができます。実際に使うとなると、一番大切になるのは、「会話をリードする」ことで、そのために有効なのは、「クローズド・クエスチョン」、つまり、Option(選択肢)タイプの回答を使って、事前に準備したインテントに誘導することなのです。

コロボ「確かに、一般的なチャットボットって、選択肢を選んでいくものがほとんどですよね」
ワトソン「そうなんです。完全に自由な会話を組み立てるのは物凄く大変なので、ある程度は選択肢で会話の幅を絞って、想定の範囲内にボールが飛んでくるようにするのが現実的なキャッチボールの方法なんですね」

コロボ「…」

コロボ「なるほど」
ワトソン「そう!その意味ありげな間も、スムーズな会話には効果的ですよ。」

さてさて、少しずつ「インテント」と「ダイアログ」の仕組みにも慣れてきましたので、次回は、スキルの中のもうひとつの項目、「エンティティ」についてチェックしてみることにしましょう。

インテントと比べて何が違うのか、ダイアログの中でどう使うのか、設定の仕方と使い方のポイントを見ていきますね。ではでは、次回もお楽しみに!