1. はじめに
「Answers Anywhere」は、自然言語で入力されたユーザーの指示から意図を汲み取り、対話をしながら機器操作やデータ検索するシステムを構築するためのミドルウェアです。前回はAnswers Anywhereを使い、日本語の自然言語による質問でレストランを探すことができるアプリケーションを開発しました。今回はAnswers Anywhereの特徴のひとつである推論ヒント機能によりユーザーのナビゲートを加えて、より使いやすいアプリケーションに改良したいと思います。
2. 推論ヒント
前回はユーザーの命令を解釈して結果を返すエージェント・ネットワークを構築したわけですが、ただ「命令をどうぞ」とだけいわれても、初めて使う人は何をしたらよいか迷ってしまいます。そこでユーザーに「このシステムではどのようなことができるのか?」「何を入力したらいいのか?」という情報を提示することでユーザーをナビゲートすることを考えます。
このような情報提示はAnswers Anywhereの推論ヒント機能を使うことで実現できます。前記事の「エージェント・ネットワークの仕組み」でも解説しましたが、推論ヒントはエージェント・ネットワークでユーザー入力が解析され文脈追跡した後、処理を実行する直前に実施されます。推論ヒントの種類には以下の2種類があります。
必須値のチェックによるヒント
必須の値であるが未入力であるもの、入力された値が既定外のもの、入力が足りないため複数の意味に解釈され特定できないものに対し、ガイダンスを出力するヒントです。このヒントは表1に示す3つの種別に分けられます。
種別 | 概要 | 定義方法 |
必須値要求(Missing Field Hint) | Fieldの値が入力されていない場合には、サービスプロバイダによる処理実行を実施せずダイアログメッセージを出力。 | Fieldごとの条件をサービスプロバイダに定義 |
正規表現による値チェック(Invalid Field Hint) | Fieldの値が指定されたパターンに一致しない場合には、サービスプロバイダによる処理実行を実施せずダイアログメッセージを出力 | Fieldごとの条件をサービスプロバイダに定義 |
意図の確定要求(Ambiguity Hint) | 入力が複数の意味として解釈される場合に意味の候補を提示。ユーザーは次の入力で候補を選ぶことで情報の絞込みを行う(図1) | 出力するかどうかをActuationエージェントに設定 |
関連性の高い操作ヒント
今回の入力内容に関連性の高い次の操作を提示するヒントです。エージェント・ネットワークではエージェント同士のつながりが処理単位の関連性を示しています。この関係を利用して今の入力に関連が高い操作を推論するのがこのヒントです。動作としては、クレームしたエージェントにつながっている未クレームのエージェントをヒントとして提示します。このヒントは表2に示す3つの種別に分けられます。
種別 | 概要 | 定義方法 |
初期操作(Command)の提示(General Hint) | システムの利用可能なコマンド一覧を提示する。初期状態(入力 "restart" により文脈が初期化)で認識できない語が入力されたときに動作する(図2) | 出力するかどうかをActuationエージェントに設定 |
操作対象(Object/Field)の提示(Applicable Object/Relevant Field Hint) | Commandが入力された場合、そのCommandで使用可能なObjectを提示する。またはObjectが指定されたされた場合は使用可能なFieldを提示する(図3) | 出力するかどうかをActuationエージェントに設定 |
関連性の高い別操作の提示(Relevant Command Hint) | 今の入力に関連の高い別の操作候補を提示。Objectが2つ以上Commandの下にありそれらの間がRelationという関係でつながれている場合に出力される(図4) | 出力するかどうかをActuationエージェントに設定 |
レストラン検索アプリケーションに必須値要求のヒントと関連性の高い操作提示のヒントを実装してみましょう。前回連載でのアプリケーションを拡張した仕様をリスト1に示します。
リスト1 検索アプリケーション仕様(拡張版)
- 文章で検索条件を入力し、データベースのRestaurantテーブルからレストランのデータを検索する(※Restaurantテーブル仕様は前回記事参照)
- 検索条件はエリア名、ジャンル名、評価を検索条件とする
- 【追加】検索条件は、順不同または一括での指定、置き換えができることとする場所(エリア)の指定は必須とする。レストランの検索時に場所が指定されていない場合は要求する旨のメッセージを表示する。
- 【追加】操作支援のため操作に応じて次に利用できる機能を提示する