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

前回はリソースとして、「Watson Assistantサービス」を作成しましたね。「Manage(管理)」画面に並ぶ謎めいた暗号の数々、行く手を遮る「サービス資格情報」や「プラン」の画面。……と、ムズカシそうな部分はとりあえず「見なかったこと」にして、今回は一番楽しそうな「Watson Assistantの起動」ボタンから、チャットボット作成画面に進んでいきます。

コロボ「ボクが言うのもアレなのですが、『ロボットと会話をする』ということがどういうことなのか、イマイチよくわからないんですよね」
ワトソン「前回お話ししたように、チャットボットは『ユーザーからの質問に対して、より相応しい回答を探して返す』という仕組みで動いていますので、『会話』というより、『一問一答の繰り返し』というのが、イメージ的には近いのかもしれません」

コロボ「では、『チャットボットを作る』というのは、『質問と回答を作る』ということになるのですか?」
ワトソン「今回はスルドイですね、コロボ君。チャットボットの基本は正にそういうことになります」

それでは、どのようにして「質問」を作り、どのようにして「回答」を作るのか。そのあたりのことを意識しながら、『Watson Assistantツール』を見ていくことにしましょう。Watson AssistantサービスのManage画面にある『Watson Assistantの起動』ボタンをポチッとどうぞ!

【Watson Assistantツール】
Watson Assistantツールには、大きく分けて2つの画面(タブ)が用意されています。ひとつは『Assistants』画面、もうひとつは『Skills』画面です。

こちらが「Assistants」の画面。

こちらが「Skills」の画面。

さらに、Skillsの画面で「Create Skill(スキルの作成)」を行うと、『Intents』『Entities』『Dialog』など、様々な詳細画面(タブ)が作られます。

こちらが「Intents」の画面。

ワトソン「……おや?どうしましたコロボ君。少々涙目のようですが」
コロボ「……ごめんなざい。知らない単語の嵐で既に迷子でず」

ワトソン「おっと、そうですね。確かに、『聞き慣れない言葉』や『見慣れない画面』が沢山出てきていますので、最初は不安になると思います。全部英語ですし。まずは、各単語の意味(=各画面の役割)をひとつずつ確認していくことにしましょうか」

【Assistantsの役割】

An assistant helps your customers complete tasks and get information faster. It may clarify requests, search for answers from a knowledge base, and can also direct your customer to a human if needed.
(アシスタントは、あなたの顧客がタスクを完了し、情報を迅速に取得することをサポートしてくれます。また、アシスタントは、顧客からの要求を明確にし、知識ベースから回答を検索し、必要に応じて顧客をサポートスタッフ(人間)につなぐこともできます。)

最初に出てくる画面、それが「Assistants(アシスタント)」画面です。アシスタントというのは、このサービスの名前にもなっている「Watson Assistant(チャットボット)」自体のことを指しています。

例えば、「コロボ君」「ワトソンさん」という2人のチャットボットを作ろうとすると、Assistants画面には2つのアシスタントが並びます。(無料のライトアカウントでも、アシスタントは複数作成することが可能です)

アシスタント毎に「Assistant ID」という識別キーが割り振られていますので、IBM Cloudの外側から「コロボ君」「ワトソンさん」を呼び出したい時には、Assistant IDを使って各々を指定します。

アシスタント画面自体には設定項目がほとんど無いのですが、以降に出てくる「スキル」「ダイアログ」「インテント」等の要素は、すべてアシスタント以下に設定しますので、『管理用(まとめ用)の設定枠』と覚えておけばバッチリです。

【Skillsの役割】

Skills contain the training to respond to your customer queries. Add skills to your assistant and then deploy to your channels.
(スキルには、顧客からの問い合わせに対応するためのスキル設定機能(トレーニング機能)が含まれています。あなたが設定したスキルをアシスタントに追加し、チャネルに展開します。)

次に「Skills(スキル)」画面です。「アシスタント(チャットボット)のスキル(技術)」と日本語っぽく表現すると、よりピンときやすいと思います。コロボ君がどんな会話ができるのか、その中身を組み立てる(トレーニングする)のがこのスキル画面です。

アシスタントとスキルは、「ひとつのアシスタントに対して、ひとつのスキル(Dialog Skill)を割り当てる」という関係になっています。

もし、「AI紹介スキル」と「RPA紹介スキル」を作ったとしても、コロボ君(アシスタント)はその両方を同時に持つことはできませんので、「RPA紹介コロボ君」としてアシスタントの方を専用化するか、「最新IT技術紹介スキル」としてスキルの方を統合するか、何らかの工夫が必要になります。まずは、「ひとつのアシスタント」と「ひとつのスキル」を作るところからはじめましょう。

スキルを作成すると、スキルの詳細設定画面が出てきます。この中には「Intents」「Entities」「Dialog」「Option」「Analytics」「Versions」「Content Catalog」と、実に様々な画面が含まれているのです……が、一気に見ると目が回りますので、今回はその中でも、スキル作成時に特に重要になる「Intents」「Entities」「Dialog」の3つをお話しします。

【Dialogの役割】

A dialog is where you develop branching interaction flows for conversations between your customers and your assistant.
(ダイアログは、顧客とアシスタント間の会話のための組み合わせ(分岐相互作用フロー)を開発する場所です。)

タブの順番が前後しますが、先に「Dialog(ダイアログ)」画面から見て行きましょう。ダイアログは「対話」という意味ですね。ここがチャットボットの中心となる部分です。

ダイアログ画面では、文字通り「対話(会話の流れ)」を、「質問」と「回答」の組み合わせで作っていきます。

質問:あなたは誰ですか?
回答:ワタシはコロボです。

こんな感じ。ユーザーからの質問に対して、適切な回答を設定することで、会話の流れを組み立てていきます。

コロボ「……待ってください。でもそれだと、ちょっとの会話だけでも質問と回答の数がドエライことになってしまいませんか?」
ワトソン「良いところに気付きましたね、コロボ君」

単純に質問と回答を設定するだけでは、ほんの少し表現が違う(例えば、「あなたは誰ですか?」と質問されるところを、「あなたは何者ですか?」と質問される)だけでも、正しく回答することができません。結局、山のような質問と回答の組み合わせを設定しないとダメ、という困ったことになってしまいます。

コロボ「うーん。困りましたね」
ワトソン「そうでしょう?それではイマイチでしょう?」

そんなことにならないよう、Watson Assistantでは、ある程度「幅」を持った『類推』をすることで、言葉のブレに関係なく適切な回答ができるような機能が用意されています。それが、単純な一問一答(人工無脳)の上を行く、『AI(人工知能)』の機能なのです。

コロボ「おお。心なしかワトソンさんがイキイキしてきましたよ!」
ワトソン「ふっふっふ、今こそ先週の汚名を返上する時です!」

その鍵を握るのが、「Intents」と「Entities」の2つの画面です。

【Intentsの役割】

An intent is a collection of user statements that have the same meaning. By creating intents, you train your assistant to understand the variety of ways users express a goal.
(インテントとは、顧客の会話の中で同じ意味を持つ会話のコレクションです。インテントを作成することにより、あなたのアシスタントをトレーニングすることが可能となり、顧客との会話理解の精度向上を実現します。)

まずは「Intents(インテント)」画面です。インテント、つまり、日本語で「意思」という意味の言葉が付けられたこの画面は、「質問」と「回答」のうち、「質問」を設定する画面になっています。

ただ、一般的な質問設定画面と違い、質問を「ひとつだけ」設定するのではなく、『同じ意味を持つ質問をいくつも』設定するのです。

「あなたは誰ですか?」「あなたはロボットですか?」「コンピューターですか?」「AIですか?」「人ですか?」などなど、同じ意味と思える質問を、ひとつの「インテント(意思)」としてまとめます。質問の中に「言葉のブレ」があっても、その『意思』を正しく把握しよう、というわけです。

Watson Assistantのダイアログでは、直接質問と回答を設定するのではなく、インテントに対する回答を設定する、という手順で会話の流れを組み立てていきます。

『こんな感じ(インテントに含まれる)の質問が来たら、こう答える』

ユーザーから質問が入ると、Watson Assistantは設定されたインテント達を眺めてユーザーの意思を類推し、「この人は〇〇インテントの質問をしています」という判定をしてくれます。もし判定に困るような質問が飛んで来たら、ワタシ達がインテント(意思)を拡張してあげることで、コロボ君をより賢くできるわけですね。

【Entitiesの役割】

Entities are like nouns or keywords. By building out your business terms in entities your assistant can provide targeted responses to queries.
(エンティティは名詞やキーワードの集合体です。例えば、エンティティ内でビジネス用語を作成することによって、あなたのアシスタントは顧客からの問合わせに対して応答を絞り込み、対応することが可能となります。)

最後は「Entities(エンティティ)」画面です。エンティティ、というと、日本語では「実体」という意味の言葉になります。

インテントが意思(同じ意味の質問の塊)だとすると、エンティティはもう少し具体的に『名前や数字などの単語を認識する』ために使います。

例えば、「あなたは誰ですか?」よりも、もう少し回答の候補が多い「明日の天気は何ですか?」という質問にチャットボットが答えようとした場合、「札幌」の天気なのか、「那覇」の天気なのか、回答を絞り込むために「場所」の情報が必要になります。

「明日の『札幌』の天気は何ですか?」「明日の『那覇』の天気は何ですか?」という、絞り込みのための単語(キーワード)を、『場所エンティティ』として設定しておくことで、チャットボットは「北海道の人向けの」「沖縄の人向けの」回答を返すことができるようになります。

『この単語(エンティティに含まれる)の質問が来たら、こう答える』

ユーザーから質問が入ると、Watson Assistantは設定されたエンティティ達を眺めて単語をチェックし、「ユーザーは〇〇エンティティに含まれる△△という単語を書いています」という判定をしてくれます。

インテントとエンティティは、「それぞれ絶対に決まった用途で使わないとダメ」というわけではなく、「同じような使い方もできるものの、より得意な使い方がある」という形で提供されていますので、インテントだけ、もしくはエンティティだけでも、ある程度のダイアログを組み立てることが(一応)可能になっています。慣れるまでは「違い」がわかりにくいですので、順番に確認していきましましょう。

【今回のまとめ】

はい、今回のお話はここまでです!

「えー!実際に設定したかったー!」という声が飛んできそうな場所での中断になってしまいますが、まずは「言葉の意味(画面の役割)を押さえる」ところまでお話ししました。

いきなり設定をはじめてしまうと、「インテント」と「ダイアログの一部」以外は本当に迷子になりがちなんです、この仕組み。ワタシも最初の頃は「コレってドコで設定するんだっけ?」と思うことが多々ありましたので……。

でも、ここまで押さえてしまえばもう大丈夫です!次回からはバンバン設定を進めていくことができます。事前学習はココまでですよ。

ワトソン「……おや?コロボ君、どうしました?その疑いの眼差しは」
コロボ「いえ、世間では『二度あることは三度ある』と言いまして」

わかりました。では次回こそは、実際にインテントを設定した上で、簡単なダイアログを組み立ててみることにしましょう。Watson Assistantツールには「Try it out(テスト機能)」が付いていますので、最後は本物のチャットボットを動かすこともできますよ。楽しみにしていてくださいね!

それでは、次回もお楽しみに!