チャットボットの作り方:5つのポイント [後編]

Source

開発ツール、会話型UI、質問タイプの認識方法などについては[前編]をチェックしておきたい。


3b. 会話からより効率的に情報を取得する

一般的なフォームなどを使えば、データを入力してもらう際の精度を高めることは簡単にできる。このメールアドレスは正しいのか? このユーザー名は正しいのか? この電話番号は正しいのか? 入力されるデータを、処理に移る前にあらかじめ制限し、絞り込んでおくのは簡単だ。

一方、会話型UIでは状況はもう少し複雑になる。ユーザーは好きなことを何でも自由に話せてしまう。それにより、質問や回答を上手く返す仕組みを作るには「スマートなデザイン」にしなければならない。

ヒント:オープンクエスチョンを投げかけるのは避けよう。ユーザーが最終的に混乱する結果となることが多い。その代わり、期待する答えをある程度示す質問を返すようにしよう。以下に例を挙げる。

ご覧になりたいケーススタディはどれでしょうか? お選びいただけるアプリは、旅行、ソーシャルメディア、デザイン、家計簿のいずれかとなっています。

返せる情報はテキストだけとは限らない。botを組み込むプラットフォームによっては、異なる形式のフォーマットをサポートしている。例えばFacebookメッセンジャーの場合、いくつかのアイテムを横スクロールさせる様な形でリスト表示できる。

ユーザーからのコマンドを確認することも忘れてはならない。復唱して内容がすべて正しいことを確認し、それから次の質問に移る。

かしこまりました。旅行アプリですね。予算はどのくらいをご希望ですか?

一方、何か問題がある場合は、どこがまずいのかをユーザーに伝える。入力されたデータが無効の場合は、どのような答えを想定していたかを再度説明する。理想を言えば、ユーザーの答えをbotが理解できない状態なのか、あるいは答えは問題なく理解できるが、受け入れることができないのかを区別して伝えるようにしたい。

ユーザーはあなたのアプリに「話しかけている」ことに注意しよう。ユーザーは「木曜」とか「木曜日」「明日」「13日」などと言うが、それらは全て同じ事柄を指している。それらを確認するために、ユーザーに問い直してもいいし、より高度なメッセージのやり取りを考えてみてもいい。

また、入力されたデータをシステムとして利用する前には、Normalizerというライブラリを実行するとデータの精度を上げることができる。Normalizerは、英語について英国式やカナダ式の表記を米国式へ変換、よく使われる略語の説明の付加、4000件以上の誤記の訂正などを実行してくれるライブラリだ。

重要な情報を入力してもらう際にも注意が必要だ。処理を進めるための必須情報が足りていない時など、その情報をユーザーから追加取得するようなメッセージを用意しておく必要がある。標準的なGUIであれば、モーダルウィンドウなどをポップアップ表示することで、今入力すべき情報を正しく伝え、またそれ以外の操作をできないよう制限することができる。例えば「入力したメールアドレスは正しいことを確認しましたか?」というメッセージに加え「はい」「いいえ」ボタンが付いたウィンドウを表示するなどだ。

ただし会話のデザインでは、この問題に対してGUIの場合とは少し異なる方法で対処する必要がある。上記のような確認メッセージを何度も繰り返すと、ユーザーはbotとの対話を煩わしいと感じてしまう恐れがある。従ってユーザーに対しては必要なアクションを正確に示し、その操作がなぜそんなに重要なのかを確実に説明するべきだ。そのためには、同じ情報を取得したい場合でも、会話用スニペットを複数種類準備して、チャットボットが同じ発話を何度も繰り返さないようにしよう。

情報をあまりに取得しようとし過ぎても問題だ。処理を進めるにはその特定の情報がどうしても必要なのかどうか、十分に検討した方がいい。また、これまでのユーザーからの入力情報によって推測できる場合があったり、今立て続けに聞かずとも、後のステップで問い直してもいいはずだ。

選択肢をボタンで回答できるタイプのチャットアイテムを利用するのも手だ。これを導入すると、ユーザー入力の全体的な質は向上する。ただし、ユーザーのエンゲージメント係数が多少下がる場合がある。従ってこの方法は、処理を進めるのに必要な情報を確実に受信したい場合に限定して利用することが最も望ましい。
AI研究の進歩に伴って、botに学習させることのハードルがどんどん下がっていくかもしれない。データベースに蓄積された過去の会話を基に、botが特定の反応を示したり、ユーザーの回答に込められた真の意図を推察することが実現する可能性はある。しかし現在使われているチャットボットの大半は、洗練された反応をユーザーに返せるほど、高度なAIの知能が搭載されているわけではない。従ってUXの改善は、デザイナー自身で取り組むしかないだろう。

4. 細かなコピーにも気を配る

チャットボットを開発する際、デザイナーは、コピーライターと同じような考え方をする必要がある。コンテンツや会話自体が、プロダクトのスタイルを決定するからだ。一般的には、明るい口調でユーザーに応対する方が良い評価を受けるが、その他で特に注意すべき点を以下に挙げる。

  • ユーザーフローは、自分が相手と実際に話す場合と同じように設定すること。
  • 複雑な文法や難しい単語を使って、物知りぶった話し方をする必要はない。会話はシンプルで簡潔に。
  • 性別が限定される代名詞を使用しないこと(日本語ではケースは少ないが、看護婦、スキュワーデスなど)。会話の相手の性別は事前に特定できないからだ。
  • よく使う返答については、少しずつ違う表現を複数種類用意して、より人間らしい会話にすること。
  • ユーザーが途方に暮れた場合のヘルプメッセージと提案を用意すること。
  • サポートしていないトピックについては、botが無能だとユーザーに感じさせないよう、返答の表現を工夫すること。

5. botの機能を少しずつ知ってもらう

標準的なGUIであれば、利用できる機能が画面上に表示されていたりする。ユーザーは、アイコン上にマウスを置いたり、ボタンをクリックしたり、メニューにアクセスしたりすることで、それぞれのアプリの機能を把握することができる。

これに対し、チャットボットと対話する場合、ユーザーは何もない空間で独り言を話すような物だ。だから、ステップを1つ進めるたびにヒントを出して、ユーザーが新しい機能に少しずつ慣れるように誘導する必要がある。

まず、ユーザーから最初のコマンド(指示)メッセージを受信したら、次に何が起こるのか、botはどんな動作をして、指示された内容完了させるのかを説明しよう。そして、次に考えられるステップの説明をしたり、よくある質問やユーザーマニュアルへのリンクを提示してもいい。

最初からフル機能では対応をしない。新しい機能のロックを解除するのは、最初の対話がうまくいってからにする。ある程度ユーザーとbotの対話が成功したら「練習モード」は終了させて、新しい機能を勧めてみたり、より高度なヒントを提供し始めればいい。そうした機能やヒントは、ユーザーの履歴と、あらかじめ入力したデータに基づいて設定しておこう。


Taco Bellのチャットボットの事例。botが注文内容を確認し、「追加の注文は大丈夫?」「お会計の場合は”チェックアウト”と言ってね」と言ってきている。加えてTipsとしてキャンセルする場合と細かくカスタマイズする場合の方法(喋り方)を提示している

ユーザーに対して、新しいことを試してみるように働きかけよう。例えば以下のように、botの優秀な機能を積極的に提案するのも悪くない。

こんにちは、パーティを開催する日が近づいてきましたね。大きいサイズのピザを5枚頼んでおくこともできますが、どうしますか?

先述のTaco Bellのチャットボットでは、会話のノリの良さをアピールポイントにしている。Taco BellはWit.aiを採用し、botにさまざまなシナリオを学習させた。だから同社のbotはジョークを飛ばすこともできる。このプラットフォームの自然言語処理テクノロジーは、今やFacebookのAIアシスタント「M」にも採用されているほどのレベルで、多様な注文の仕方に対応できる。例えば「ブリトーをいただけますか」「ブリトー1個」のどちらにも対応できる。さらには「今酔っぱらってるんだけど」といきなり言い出す客にも明るく応対ができる。その際「かしこまりました。ではお客様のご注文にお水も追加しておきますね。」と言い添えることも忘れない。加えて、ユーザーが「チーズ抜きで。」と1行だけコメントを入力しても、botはその情報が、直前に注文されたブリトーに関するものだと認識する。

ただし、チャットボットから会話を開始するパターンでは注意が必要だ。botがちゃんとユーザーに有意義な提案ができているか確かめておきたい。さもなければたちの悪いスパム業者だと思われてしまうだろう。

チャットボットと音声認識

音声認識アシスタントは、SiriやGoogle Nowの例でも分かるように、ちょっとしたブームになりつつある。しかし、この種のbotの開発には、人材面でも物理面でも莫大な資源が必要なことは明白だ。音声認識テクノロジーの支えとなっている、最も強力なニューラルネットワークですら、現時点ではトレーニングが困難だ。現状のよくある課題は、Andrew Gibianskyが指摘している通り、入力における小さなエラーであれば簡単に排除できるが、大規模で反復する様なエラーでは、増殖し、ますます規模が拡大してしまうことだ。

例えば「Apple」という単語を「Eupple」のように発音するユーザーがいたとすると、学習の結果その発音で認識する可能性がある。一方で同音異義語も音声認識の世界では大きな課題の1つだ。「flower」(花)と「flour」(小麦粉)の発音は全く同じだし、正しい文脈をマシンに理解させるのは難しい。

従って、シンプルなチャットボットを構築するのが目的であれば、音声認識の機能を実装するのは、アーキテクチャや高度な機械学習テクノロジに対して多額の投資をする覚悟がない限り、現時点では最善の策とは言えないかもしれない。

さいごに

チャットボットは、よりパーソナライズされた顧客体験を実現できる素晴らしいツールだが、会話のデザインには今なお一定の制限がある。Mariya Yaoが指摘するように、会話はUXの質を押し上げる場合もあるし逆に劣化させる場合もある。

業務用のチャットボットの構築を計画するのなら、まずその目的と、チャットボットがユーザーにどれだけの価値を提供できるのかを明確に定義しておきたい。最初から高度な機能の実装はせずに、天気予報の配信や企業の事業内容の紹介など、まずは1つの分野だけを学習させると、とても素晴らしいものを作ることができる。これこそまさに、「April」の開発を通して、我々がユーザーのフィードバックから学んだ重要な教訓だ。


開発ツール、会話型UI、質問タイプの認識方法などについては[前編]をチェックしておきたい。