派遣で働くエンジニアのスキルアップを応援するサイト

PRODUCED BY RECRUIT

【イベントレポート】チャットボットをつくってみよう!使いやすいAI(人工知能)「Watson Assistant」ハンズオン

この記事では、2019年11月8日に開催したイベント「チャットボットをつくってみよう!使いやすいAI(人工知能)「Watson Assistant」ハンズオン」をレポートします。

前回、大好評に終わった羽山さん、樋口さん、江澤さんの講師3名によるIBM Watsonのイベント。実際に自分で使ってみたいという声を多くいただき、ハンズオン形式による今回のイベントが実現しました。Watsonの機能の1つである「Watson Assistant」を利用し、チャットボットを作成する方法を教えていただきました。

■今回のイベントのポイント
・Watsonでチャットボットを作る前に、Intent・Entity・Dialogの3つの要素について、概念を知っておく
・チャットボットで質問をされたとき、どれだけの言い方があるのかを考え、ボットが柔軟に対応できるように考える
・そのとき、文章のなかにスペースを入れると文脈として認識しないため、できるだけつながった自然な文章を入力するのがコツ

【講師プロフィール】
樋口 文恵さん
SI企業に入社後、8年間をインフラエンジニア、ネットワークエンジニアとして、お客様先でのネットワーク構築、コンサル業務に従事。2017年1月にAI専任のエンジニアになりWatsonに携わる。主担当はWatson AssistantとNatural Language Classifier。リリースをサポートしたチャットボットは50本以上。

【ティーチングアシスタント(TA)】
羽山 祥樹さん
IBM Champion。2016年より IBM Watson に携わる。HCD-Net認定 人間中心設計専門家。使いやすいプロダクトを作る専門家。担当したウェブサイトが、雑誌のユーザビリティランキングで国内トップクラスの評価を受ける。 専門はユーザーエクスペリエンス、情報アーキテクチャ、アクセシビリティ。ライター。IBM Watson。翻訳書に『メンタルモデル──ユーザーへの共感から生まれるUX デザイン戦略』『モバイルフロンティア──よりよいモバイルUXを生み出すためのデザインガイド』(いずれも丸善出版)がある。

江澤 美保さん
株式会社クレスコ AIサービスエバンジェリスト。企業向けWebポータル製品の開発、大規模事務管理の海外移管プロジェクト、企業向け決済サービスのフィールドエンジニア等を経て先端技術(人工知能・コミュニケーションロボット)の法人営業に転向。2015年よりIBM Watsonに携わり、経営層へのWatson導入提案を多く経験。現在は企業のAI導入支援を手掛けるAIコンサルタント・エンジニアとして活動中。2016年3月「第2回 IBM Watson日本語版ハッカソン」にてアイディア賞受賞。2019年IBM Champion。

IBM CloudでWatson Assistantを立ち上げる

普段の生活のなかでチャットボットにお世話になっている方もあまり気づくことはないと思いますが、チャットボットには大きく分けて「一問一答タイプ」と、「要望受付タイプ」の2種類があるそうです。たとえば、LINEで使える有名なボット「元女子高生AIりんな」は「一問一答タイプ」で、ヤマト運輸の再配達依頼は「要望受付タイプ」。そう言われると、確かに種類が違うような気がします。

f:id:itstaffing:20200116135249j:plain
▲今回作成する「一問一答タイプ」のチャットボットのイメージ。Watson Assistantはどちらのタイプも作れるが、一問一答タイプのほうが難易度的に低いそう

Watsonでチャットボットを作る前に、まず、Intent、Entity、Dialogという3つの要素について、概念を知っておく必要があります。

・Intent
文章の意図を理解させるためのものです。たとえば私たちには「Watsonについて教えて」と「Watsonって何?」と「Watsonについて知りたい」が、すべて同じ意味だということがわかりますが、Watsonには分かりません

・Entity
単語や表記のゆれをフォローするものです。たとえば、和食、洋食、中華、フレンチ、イタリアンの単語すべてが、同じ料理ジャンルであるということはWatsonには分かりません

・Dialog
会話の流れを組み立てるものです。どう言われたらどう返すのかというもの。会話の構成を組み立てる要素です

3つの要素を理解したところで、いよいよ実際にWatsonを使ってみます。IBM Cloudにログインして、サービスを作成します。

f:id:itstaffing:20200116135251j:plain
▲IBM Cloudにログインし、[カタログ]をクリックする。読み込みが長いが辛抱して待つ。サービスからWatson Assistantを起動する

次にエリアや料金プランを選択します。

f:id:itstaffing:20200116135255j:plain
▲ライトプランを選んでおけば料金は発生しない。ちなみにサービス名はどのような名前でもいいとのこと

次にSkillを作成します。

f:id:itstaffing:20200116135257j:plain
▲右上のサービスボタンをクリック。次に作成ボタンをクリックしてSkillを作る。ボタンをマウスオーバーすると「Skills」と表示される

f:id:itstaffing:20200116135300j:plain
▲Dialog skillが選ばれていることを確認し、[Next]をクリック。次画面で名前をつけ、言語を選び[Create dialog skill]を選ぶ。名前は日本語でもOK

Intentの作成

ここから先の作業は「センス」が必要になるそうです。今回は、架空のピザ店「Pizza Watson(ピザ・ワトソン)」の注文受け付けシステムを作成していきます。

まずはIntentから作成していきます。

f:id:itstaffing:20200116135303j:plain
▲画面左端のメニューが「Intents」になっていることを確認し、[Create intent]をクリック。次画面でIntent Nameに「ピザの注文」と入力したあと、[Add example]をクリックして、ピザの注文の言い回しを追加していく

「センスが必要になる」のはココ。ピザを注文するのにどれだけの言い方があるのかを考え、ボットが柔軟に対応できるように入力していきます。

また、このとき、スペースを入れると文脈として認識しないので、できるだけつながった自然な文章を入力するのがコツだそうです。なぜなら、Watsonは前後の係り受け、主語・述語を認識しながら学習しているそうで、スペースを入れると、前後関係がわからなくなり、学習効果が薄まるからとのことでした。

f:id:itstaffing:20200116135305j:plain
▲最低でも10種以上のバリエーションを用意するといいそう。同じ文章でも、漢字とひらがなの両方で入力しておくと、対応力が広がる

入力したら、画面上の青い[←]で戻ります。確定しなくても反映されます。他のアプリケーションと勝手が違うので、少し不安になりますが、これでIntentの作成は終了です。

Entityの作成

次にEntityを作成していきます。

f:id:itstaffing:20200116135307j:plain
▲今度は画面左端のメニューが「Entities」になっていることを確認し、[Create entity]をクリック。次画面でEntityの名前を設定し、[Create entity]をクリックしたあと、カプリチョーザに関する情報を追加し[Add value]をクリックする

カタカナ、ひらがな、アルファベットなどはもちろんですが、名前をうろ覚えで「カプリなんとか」と注文する人もいるかもしれません。そうした可能性までも網羅しておくと良いそうです。

Dialogの作成

IntentとEntityは、Dialogを組み立てるための部品です。部品が揃ったところで、それらを機能させるDialogを構築していきます。

f:id:itstaffing:20200116135311j:plain
▲画面左端のメニューが「Dialogs」になっているのを確認し、[Create dialog]をクリックして次画面へ。Dialogの作成では、線でつながった白い四角が表示される。この白い四角をノードと呼び、ノードは上から順に処理されていく

上記画面の「ようこそ」と書かれたノードは自動的に作成されます。これをクリックし、内容を「いらっしゃいませ。Pizza Watsonです!ご用件をどうぞ!」と、それらしい内容に変えてみます。ここの文章は学習に関係ありません。また、入力後は反映ボタンが無く、[×]ボタンで閉じて問題はありません。もちろん変更は反映されています。

では、新しいノードを追加してみましょう。

f:id:itstaffing:20200116135315j:plain
▲[Add node]ボタンをクリックすると、新しいノードが追加され、空のノードの詳細が表示される。ノード名に「ピザの注文対応」と入力し、対応するIntentを選択する

f:id:itstaffing:20200116135317j:plain
▲次に「Assistant responds」の下のプルダウンメニューから「Option」を選び、Titleに「ピザのメニューを選んでください!」と入力して[Add Option]をクリックする

f:id:itstaffing:20200116135319j:plain
▲LIST LABEL と VALUE に「カプリチョーザ」と入力する

ピザの注文以外に「営業時間は何時から何時までですか」など、想定されるいろいろな質問に対応できるようにするとなると、ノードの数も何十個と増えていきます。

Dialog作成中に[Try It]ボタンをクリックすると、ここまでの入力結果を実際に試すことができます。

f:id:itstaffing:20200116135321j:plain
▲Try Itでは[Clear]ボタンを押すと最初からやり直せるため、違う言葉で質問することができる。近い意味の言い回しも入力して、うまく返答できなければEntityなどを増やして鍛えていく

基本的な作成はここまで。

参加者は30名強。IBM Championの肩書を持つお二人のTAが席を回りながら、分からないところ、つまずいたところをフォローしてくださったため、参加者のほとんどが基本機能の実装は完成された様子でした。余った時間は、追加機能の実装に取り組まれていました。

樋口さんは、できればやって欲しい要素も紹介してくださり、各自が「Pizza Watson」から依頼されてチャットボットを作るエンジニアになったつもりで、完成度を高めていきました。

f:id:itstaffing:20200116135325j:plain
▲これらの機能を満たすサンプルも参加者に配られた

最後に、樋口さんが作成した完成度の高いチャットボットのソースデータが配布されました。これは樋口さんがチャットボット作成をはじめた当初に「誰かが、出来上がったお手本をくれないかな」と思ったことがあり、参加者が同じ思いを抱いたときのために用意してくださったとのことでした。

樋口さん提供の完成品では「カプリチョーザって何?」と聞くと、その説明もしてくれるなど、かなり多機能。これをお手本に、Watson Assistantを使いこなせるようになりたいと参加者の皆さんは感じたのではないでしょうか。

株式会社リクルートスタッフィングが運営するITSTAFFINGでは、弊社に派遣登録いただいている皆さまのスキル向上を支援するこのようなイベントを、定期的に開催しています。皆さまのご参加をお待ちしております。