Dialogflow で社内の検索問題を解決
Google Cloud Japan Team
※この投稿は米国時間 2022 年 11 月 22 日に、Google Cloud blog に投稿されたものの抄訳です。
会話型ソリューションで検索の問題を解決して的確な情報を得ましょう。
社員は、生産性を上げるために必要な情報を探すのに苦労することがよくあります。イントラネット上の膨大なページを精読したり、メールを選り分けたりと、必要なリソースを苦労して探すのに毎日数え切れないほどの時間を浪費しています。このような場合に、Google Cloud の Contact Center AI(CCAI)に含まれる Dialogflow ES が役立ちます。
Google の社内でも同じようなことはよく見られました。当社のイントラネット検索チームは 2 年前に、Dialogflow ES が社員からのクエリに対して他の方法よりも的確な回答を示せることに気づきました。それを利用することで、職場での質問に対する回答を探すことは一種の会話であり、会話型 AI 技術は検索機能を強化するものとして当然の帰結であると認識しました。さらに、Dialogflow ES には運用に最小限の開発しか必要ないという長所もありました。
大規模な支援を受ける
17 万 4,000 人に及ぶ Google 社員に IT サポートを提供している Techstop チームの調査によると、Google 社員の大多数は、可能な場合にはセルフサービス リソースでの問題解決を好むことがわかっています。こうしたセルフサービスのユーザーは、その 4 分の 3 が社内検索ポータルで検索を開始しています。
このことを知った Google の社内検索チームは、Google 検索に表示される情報カードに視覚的に似た方法でクイック アンサーを提供するにはどうすればいいか、ブレインストーミングしました。チームは「インテント」と呼ばれる Dialogflow API のコア機能を使用して、これらのカードをウェブ検索フレーズに結び付けるフレームワークを開発しました。このインテントは「Android デバイスのセットアップ」などのトレーニング フレーズを使用して一般的な検索を取り込みます。chatbot を起動する代わりに、インテントは関連するコンテンツを含むカードを呼び出します。一部にはミニアプリも含まれており、個々の社員向けに取得されてカスタマイズされた情報を提供します。
Dialogflow ES は完全な文法を構築する必要がないため、時間を大幅に節約できます。質問の答え方がわかれば回答できます。操作する側は、どうすればコンピュータから答えを引き出せるのか、あれこれ試行する必要がありません。
この Dialogflow ガイドでは、Dialogflow がインテントを理解できるように、いくつかのトレーニング フレーズを追加する方法を示しています。
Google の社内検索プラットフォームでは、フォアグラウンドのスマート コンテンツをガジェットと呼んでいます。それぞれが次の 3 つのいずれかを行います。
情報コールアウトを定義(通常はタイムリーな変更、アラート、または更新を詳細情報へのリンクとともに説明するメッセージで、たとえば「Covid-19 の状況は急速に変化するため、オフィス勤務の再開に関する最新情報は <こちら> をご覧ください」など)。
「注目の回答」またはフォローアップの質問と回答のセットを上位表示(例: セキュリティ キーの設定方法)。
複雑なワークフローを簡素化して、シンプルなタスクを実行する、完全にインタラクティブな回答やツールを提示(例: 休暇の予約方法)。
適切な問題に対処するための構造化された優先順位付け
問題を解決するときには、時間を賢く使うことが大切です。Techstop チームは、ガジェットのアイデアを大量に集めましたが、そのすべてに取り組むためのリソースは持っていませんでした。特に、一部のガジェットのアイデアは他のアイデアよりも実装がはるかに簡単であったためです。Techstop のエンジニアは Google の社内検索エンジンから、Google 社員が特に頻繁に調査していた問題を知ることができ、そこからいくつかのアイデアが生まれました。その他のアイデアは IT サポートデータから得られました。データには Google 社員が特に頻繁に直面している問題と、Techstop が各タイプの問題に費やす時間に関する豊富な情報が含まれていました。
たとえば、チームはヘルプデスクのチケットデータから、多くの Google 社員がセキュリティ キー(Universal 2nd Factor(U2F)認証に使用するハードウェア)に関して支援を必要としていることを把握しました。また、多くの社員が、さまざまなノートパソコン、デスクトップ、およびその他の利用可能なハードウェアについて Techstop に質問していることもわかっていました。
しかし、時間を有効に使うため、チームは単純に最大の問題に最初に取り組むということはしませんでした。代わりに、「ICE」手法による優先順位付けを行いました。これは、予想される作業を影響力(Impact)、確信度(Confidence)、容易性(Ease)で評価する方法です。高い影響力が期待されるガジェットは、多くのリアルタイム サポートのやり取りを回避し、社員が大きな問題を迅速に解決するのに役立つものです。高い確信度とは、ガジェットを機能させるために効果的なコンテンツを作成し、適切な Dialogflow トレーニング フレーズを識別できると十分に確信できることです。高い容易性とは、ガジェットの実装がそれほど難しくなく、時間もかからないことです。これらの 3 つの項目をそれぞれ 1~10 の単純なスケールで示し、その 3 つの値の平均値を算出して全体のスコアとします。
Techstop チームは、新しいアイデアが出てくるたびに ICE 手法を使用してきましたが、それはさまざまな考慮事項のバランスを取り、最も有望な候補をランク付けするのに役立っています。当然のことながら、チームがリリースした初期のガジェットは影響力が高く、開発にそれほど時間はかからないものでした。
Dialogflow でインテントを導き出す
Dialogflow ES では、ユーザーの検索目的を簡単に識別できます。「経費報告書の提出」などと名前を付けて、そのインテントに関連するトレーニング フレーズを用意するだけです。最適な結果を得るには、15 個程度かそれ以上のトレーニング フレーズを用意することをおすすめします。Google 社内の場合は、最初は 3~10 個のクエリで十分でした。たとえば「在宅勤務の経費」、「ホームオフィスの経費」、「ホームオフィス用品」などです。Dialogflow コンソールでは、組み込みシミュレータを使用して、何がマッチするかをテストできます。
これにより、いくつかの独自のユースケースで機能するかどうかを、素早くテストして調べることができます。
役立つ結果を生成するための次のステップは、インテントから表示したいスマート コンテンツ(ガジェット)へのマップを作成することです。その方法は、使用している言語やフレームワークによって異なりますが、一般的には Dialogflow からの文字列名と、出したい回答を関連付けるデータ構造となります。
そして、システムへのすべてのクエリに対して検索結果をリクエストしながら、同時に Dialogflow にインテント マッチングをリクエストできます(このクイックスタート ガイドで Dialogflow ES の使用を開始できます)。Dialogflow がマッチするインテントを返した場合は、対応するスマート コンテンツをマップで検索し、ユーザーに表示します。これは、追加の HTML スニペットをレンダリングするといった単純な場合もあれば、JavaScript ベースの対話型ツールをトリガーするといった複雑な場合もあります。
このシステムを使用すれば、インテントのアクションまたは名前に基づいて、適切なユーザーに適切な結果を表示することができます。すべてのインテントには一意の名前と対応するアクションがあり、アクションは任意の数のインテントに関連付けることができます。そのため必要であれば、複数のインテントを、1 つのガジェットや 1 つの HTML など、1 つのアクションにマッピングすることができます。また、インテントにパラメータをバインディングできるようにすることで、たとえば「<<空港名>> へのフライト」のような場合に、より的確な結果を得られるようになります。
それでは、結果をさらに有用でユーザーに合ったものにしたい場合はどうすればいいでしょうか。
仕様を微調整する
Dialogflow ES では、インテント マッチングのしきい値を設定画面で調整できます。その信頼値がしきい値を下回っている場合、デフォルトのマッチが返されます。検索コンテキストにデフォルトのインテントが表示されたら、それ以上何もする必要はありません。
過剰なマッチング(Dialogflow は主に会話型エージェントとして設計されており、ユーザーに伝える事柄を見つけようとしています)を防ぐために、デフォルトのインテントに多くの一般的な用語を入れると役立つことがわかりました。たとえば、「ノートパソコンのリターン」というインテントがあった場合、「リターン」、「投資のリターン」、「インターンのリターン」、「c++ の return 文」などがデフォルトにあると、「リターン」のような一般的な用語での過剰なインデックス処理を回避できることがあります。
これが必要となるのは、他の種類の「リターン」についての情報を探すために検索インターフェースが使用される可能性が高い場合のみです。これは前もって計画する必要はなく、フィードバックとテストによって徐々に調整できます。
デバッグをサポートし、インテントの更新を容易にするために、Google はニアミスを監視し、トリガーしきい値付近のマッチングを定期的に見直しています。この作業を迅速化し、デバッグを支援する 1 つの方法は、Dialogflow のインテント マッチングのしきい値を緩和することです。
たとえば、信頼度を 0.85 ではなく、0.6 に設定します。ただし、ユーザーになんらかの結果を表示するのは、インテント マッチングがあり、かつ信頼度が実際のしきい値である 0.85 を超えている場合のみです(Dialogflow は応答で信頼度を報告するため、これはコードを 1 行追加するだけで可能です)。このようにして結果を検査し、余分なものが追加で表示されなかったケース、Dialogflow が最も近いマッチングと判断したもの(ある場合)、それがどの程度近かったかを確認できます。これは、トレーニング フレーズを調整する方法のガイドとして使用できます。
フィードバック ループを閉じる
Dialogflow ベースのシステムによってプロモートされたスマート コンテンツを評価するには、検索で生成された最適な結果と比較した成功率(またはインタラクション率)を確認します。クリック数に基づいて関連性の評価を行い、関連性のある回答をより多く提供できているか評価します。
オーガニック検索結果よりも体系的に適切な結果を出している(インタラクション率が高い)場合、このコンテンツをページの最上部に表示する効果は明らかです。さらに、本来ならこれらのリクエストに対応する必要があったはずのサポート チームからのレポートを見て、たとえば在宅勤務の経費に関して提出されるチケットの数が減ったことなどから、スタッフによるサポート対応の必要性が軽減されていることを確認できます。
これでフィードバック ループは閉じました。
プロセスの最初のステップは、サポート コストが高い問題を特定することです。そして、ユーザーが自力で問題を解決できる分野を見つけます。最後に、検索の精度、サポートの負担、ユーザー満足度の改善を測定します。
定期的にコンテンツを見直す
その後は、検索結果の上位に押し上げているスマート コンテンツを数か月ごとに見直すプロセスを定めるのもよいことです。ポリシーが変更されたり、新たな状況に基づいて結果の更新が必要になったりする可能性があります。また、コンテンツの成功率が低下していないか、スタッフによるサポートの負担が増えていないかなども確認できます。この 2 点はいずれもコンテンツを見直す必要があるシグナルとなります。別の有効なツールとして、検索者がスマート コンテンツを正しくない、またはクエリに一致しないものとして明示的にフラグを立て、見直しをトリガーするためのフィードバック メカニズムを備えることもできます。
実際に始めてみましょう
これをすぐに取り入れるにはどうすればいいでしょうか。
比較的短時間で、数個のインテントで Dialogflow の運用を開始し、ウェブ インターフェースを使用してマッチングをテストすることが可能です。
Google の Cloud API を使用すると、アプリケーションは Dialogflow と通信し、その出力を組み込むことができます。各検索はチャットのインタラクションと考え、徐々に新しい回答と新しいインテントを追加し続けてください。また、一般的なクエリをテスト エージェントに渡すための「差分ツール」をビルドすると、新しいバージョンをデプロイするときにどこで回答が変更されたかを追跡するのに役立つこともわかっています。
Dialogflow の新しいエディションである Dialogflow CX には、さらに向上した会話型エージェントを作成し、より複雑なユースケースを処理するための高度な機能があります。そのビジュアル フロービルダーにより、会話の作成と可視化、脱線の処理が容易になります。また、複数のチャネルや言語にわたってエージェントを簡単にテストおよびデプロイできます。インタラクティブなチャットや音声のエクスペリエンスを構築したい場合は、Dialogflow CX を検討してください。
こうしたツールを初めてご利用の場合は、Dialogflow ES のクイックスタートを活用して、独自の仮想エージェントをビルドしてみましょう。より多くの問題をより早く解決できるようになります。Google 社内でこのような問題がどのように解決されているかについてさらに知るには、当社のコーポレート エンジニアの投稿をご覧ください。
- コーポレート オペレーション エンジニア Ed Holden