ヒト化するチャットBotの作り方とは? 自然な会話でやり取り可能な栄養士・トレーナーのサービスをデモで体感【デブサミ2018】
【16-C-2】【全員参加型】Botで専属トレーナー・栄養士を雇う世界が来ています。先進の擬人化技術を今日、体験しよう。
チャットBotをヒト化させるポイントとは
最後に、今回のチャットBotの内部的な構造が紹介された。ちなみに、デモンストレーションでは、LINEとGoogle Homeを使っていたが、それぞれ別のチャットBotを作っているわけではなく、どちらにも対応できるシングルインスタンスでまかなっているのだという。そのアーキテクチャーの全体像を表したのが下図だ。
ユーザーが接するインターフェイスは3つあるが、実際にデータベースとアクセスしているのはWebだけだ。LINEとスマートスピーカーはBotの同じインスタンスにつながっていて、それがすべてのリクエストを処理してレスポンスを返している。とはいえ、当然ながらLINEとスマートスピーカーはメーカーが異なるため、APIの仕様やレスポンスの仕様も異なる。通常は別々のコードを書く必要があるのだが、今回はBotの本体を作るため「bot-express」(Node.jsのフレームワーク)で抽象化を実現している。そのため、中嶋氏がLINEのフォーマットで書いただけで、自動的にGoogle Homeでも動くようになっているのだ。
そしてBotで重要な自然言語解析については、Googleの「Dialogflow」と「Natural Language」が用途によって使い分けられている。食品データベースは「日本食品標準成分表」と「EDAMAN」をハイブリッドで使用することで、精度を上げているという。また、先述した通り顧客情報はすべてSalesforce上に入っている。
上図がBotの内部構造だ。Botで重要なNLU(Natural Language Understanding)を効果的に使えるようにしていることと、Skillという単位でモジュール化することで開発者が集中して作業できるようになっているのが特徴だという。
Skillの中身を見てみよう。Skillは大きく分けるとパラメーターとアクションに分かれている。Skillを完遂するのに必要なパラメーターは、「message_to_confirm」「parser」「reaction」の3つ。「message_to_confirm」はパラメーターが不足しているときに、どんなメッセージで確認するかを指定し、「parser」でバラエティ豊かなユーザーの答えの中にエンティティが含まれるのかどうかを突き止める。それによって「reaction」で反応を設定していく。
「『parser』と『reaction』をいかに作り込んでいくかによって、弾力性のある作りになっていきます。ユーザーが脱線するのを、どうカバーするかがSkill開発の難しいところだと思います」
チャットBotを作る上で「ひとつだけ注意すべきことがある」と中嶋氏は強調した。それは「Webが得意なところをBotでやらない」ということだ。よくありがちなのが何かを検索するBotである。検索はWebの得意エリアなので、「Botでやっても劣化版ができるだけ」と指摘。「Webではなく電話やヒトの方が得意なことをBotに置き換えるというのが正しいユースケースなのではないか」と説いた。
今回紹介された開発フレームワークやBotのサンプルコードはGitHubに上げられている。
サンプルコード
最後に中嶋氏は「自分でもBotを作ってみたい方は、私たちの勉強会にお越しください。Slackのワークスペースの中でもコミュニケーションしているので、こちらにもご参加いただければ」と語り、講演を締めくくった。
お問い合わせ
LINE株式会社
この記事は参考になりましたか?
既に会員の方はを行ってください。
- この記事の著者
-
CodeZine編集部(コードジンヘンシュウブ)
CodeZineは、株式会社翔泳社が運営する開発者のための情報メディアです。日々の開発に取り組むエンジニアやテクノロジーを学びたい方に向けて、プログラミングやAI活用、開発ツール、エンジニアの学びとキャリアに関する記事をお届けしています。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社
この記事は参考になりましたか?
この記事をシェア
