SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

自然言語対話エンジン「Answers Anywhere」で実現する使いやすいUI(AD)

対話しながら検索できるコンシェルジェ風アプリの実装(2)
~ 推論ヒントでユーザーをナビゲート

自然言語対話エンジン「Answers Anywhere」で実現する使いやすいUI 第4回

  • このエントリーをはてなブックマークに追加

3. フォーマッタ

 Answers Anywhereからの出力は標準ではXML形式です。これは出力を返す先が別のプログラムである場合は都合がよいですが、ユーザーインターフェースとしてはHTMLやテキストなどの形式のほうが扱いやすいといえます。フォーマッタはこのような出力形式の変換を行うためのモジュールです。フォーマッタは Interactionエージェント上で動作します。初期状態のエージェント・ネットワークにはフォーマッタは登録されておらず、その場合にはエージェント・ネットワークの出力はXML形式となります。標準のSDKにはHTMLおよびテキスト形式で出力をするフォーマッタが付属しています。これらを Interactionエージェントに登録し変換のルールを設定することで目的の出力が得られます。

 その他の出力形式、たとえばCSVやJSON形式で出力する場合はJava APIによりカスタムフォーマッタを開発することで対応します。

 フォーマッタでは次の2種類の出力が生成されます。その動作の仕組みを図7に示します。

説明テキスト

 サービスプロバイダで実施された処理結果の概要、推論ヒントからのメッセージなどが説明テキストです。Explanation Property Fileに、出力するメッセージの雛形文章およびエージェントが出力したXMLタグと表示文字列の組を定義します。後者は雛形文章に埋め込む文字列として使用されます。

結果一覧

 サービスプロバイダでの検索結果は実行結果としてXML形式でフォーマッタに渡されます。それをリストまたは表形式に整形して出力されるのが結果一覧です。Display Property Fileにより一覧に結果のどの列を表示するのか、またその列名を設定します。

図7 フォーマッタの仕組み
図7 フォーマッタの仕組み

 フォーマッタの設定を行うにはInteractionエージェントをダブルクリックします。[New]を押すと新規のフォーマッタの種別を選択するダイアログが出るのでHTMLフォーマッタ「com.dejima.core.io.HTMLPresentationFormatter」を選択し[Ok]を押します。表4にHTMLフォーマッタの設定値一覧を示します。また図8にフォーマッタの設定手順を示します。

表4 フォーマッタの設定項目
項目名 内容 設定する値
Name フォーマッタの名称 html(デフォルト値)
Explanation Property File 説明テキストの表示内容設定 XMLファイルの編集
Display Property File 結果の表示内容設定 XMLファイルの編集
Add Xml 出力にXMLを付与する false(デフォルト値)
Add Explanation 説明テキストのうち処理結果の概要部分(入力内容、結果一覧件数、検索条件)を表示する true(デフォルト値)
Add Ambiguous Fields Question 意図の確定要求のヒントメッセージと選択肢を表示する true(デフォルト値)
Add Invalid Fields Question 正規表現による値チェックのヒントメッセージを表示する。ヒントの定義にPossible Valuesがあればそれを候補値として表示する true(デフォルト値。このヒントは使用しないため不問)
Add Missing Fields Question 必須値要求のヒントメッセージを出力する。ヒントの定義にPossible Valuesがあればそれを候補値として表示する true(デフォルト値)
Assign Numbers To Ambiguity Choices 意図の確定要求のヒントメッセージと選択肢に番号をつけて表示する true(デフォルト値)
Assign Numbers To Possible Values 正規表現による値チェックおよび必須値要求のヒントの候補値に番号をつけて表示する true(デフォルト値。使用しないため不問)
Add Results 結果一覧を出力する true(デフォルト値)
Add Results Header どのCommandで生成された結果かを表示する true(デフォルト値)
Add Results No Of Records Found 結果の件数を表示する true(デフォルト値)
Add Hints ヒントメッセージを表示する true(デフォルト値)
Display Results In Table trueならば結果一覧をテーブル形式で表示する true(デフォルト値)
図8 フォーマッタの設定
図8 フォーマッタの設定

 Explanation Property FileとDisplay Property FileはどちらもXML形式の設定ファイルです。それぞれの編集画面で[Generate]を押すことでエージェント・ネットワークを基に雛形が自動生成されます(図9)。

図9 Explanation PropertyとDisplay Propertyの設定
図9 Explanation PropertyとDisplay Propertyの設定

 説明テキストの設定であるExplanation Property Fileについては雛形をそのまま使用します。Display Property Fileについては、雛形はエージェント・ネットワークから作成されるため店名を一覧の中に表示するという定義が欠けています。そこでリスト2の太字で示す部分を追加し店名が結果一覧に表示されるようにします。この設定ファイルのDisplayFieldsタグが表示する結果一覧の列を表します。このタグ列それぞれについて定義し、定義順で列が表示されます。

リスト2 Display Property Fileの内容
<DisplayProperties>
  <Object name="レストラン">
    <DisplayFields>
<Path value="レストラン/rname" />
<Displayable value="true" />
<FormField value="false" />
<DisplayName value="店名" />
</DisplayFields>
<DisplayFields> <Path value="レストラン/エリア" /> <Displayable value="true" /> <FormField value="false" /> </DisplayFields> <DisplayFields> <Path value="レストラン/ジャンル" /> <Displayable value="true" /> <FormField value="false" /> </DisplayFields> <DisplayFields> <Path value="レストラン/星" /> <Displayable value="true" /> <FormField value="false" /> </DisplayFields> </Object> </DisplayProperties>

 表5にタグの中の設定内容を示します。Explanation Property FileとDisplay Property Fileのどちらも設定が終了したら[Ok]を押してデフォルトのファイル名で保存をします。

 フォーマッタの設定が終わったら[Ok]を押します。最後にInteractionエージェントの設定画面でも[Ok]を押して変更を反映させます。

表5 DisplayFieldsタグの設定値(値はvalue属性に設定する)
タグ名 内容
Path 結果XMLに含まれる処理結果のどの列を表示させるかの指定。Results/{Object名}/FieldInfoに定義されているPathの名前と一致させる。
Displayable trueにするとこの列を表示する
FormFeild (使用しない)
DisplayName 表示列名の指定。省略した場合はPathの値からObject名を除いた文字列を使用する。

次のページ
4. テスト実行

修正履歴

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
自然言語対話エンジン「Answers Anywhere」で実現する使いやすいUI連載記事一覧

もっと読む

この記事の著者

アイエニウエアソリューションズ株式会社 伊藤 純一(イトウ ジュンイチ)

アイエニウェア・ソリューションズ株式会社 シニアエンジニア。8ビットの時代からコンピュータに触りはじめBASIC、アセンブラ、C言語などを独習。サンマイクロシステムズ入社の年にJavaが発表され、そこでJavaによる金融系、官公庁系のシステム開発を中心に手がける。その後外資系ベンチャーのデジマ・ジャ...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/4823 2010/04/27 15:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング